ch 2 process
Download
Report
Transcript ch 2 process
บทที่ 2
การจัดการ Process
1
การจัดการโปรเซส Process Management
• โปรเซส หมายถึง โปรแกรมทีก่ าลังเอ็กซิควิ ต์อยู่
• ในขณะทีโ่ ปรเซสกาลังเอ็กซิควิ ต์อยูน่ นั ้ จะมีการใช้ทรัพยากร
(Resource) ของระบบ เช่น CPU, หน่วยความจา, ไฟล์, อุปกรณ์
อินพุต/เอาต์พตุ
• ในระบบ Multiprogramming อาจประกอบด้วยโปรเซสมากมาย
• OS จึงมีหน้าทีใ่ นการจัดการโปรเซสในระบบทัง้ หมด ไม่ว่าจะ
เป็ นการสร้าง ลบ การจัดเวลา การจัดจังหวะและการ
ติดต่อสือ่ สารภายในโปรเซส
2
องค์ประกอบของโปรเซส
• โปรเซสทีส่ มบูรณ์มอี งค์ประกอบดังนี้
1. ชื่อและหมายเลขโปรเซส (Process ID)
• เป็ นหมายเลขประจาโปรเซสเพื่อกาหนดลาดับการเอ็กซีคิ ้วต์
2. โค้ดโปรแกรม (Program code) เป็ นโค้ดคาสังที
่ เ่ ป็ นภาษาเครื่องที่
สามารถเอ็กซิควิ ต์ได้ทนั ที
3. ข้อมูล (Data) เป็ นข้อมูลของโปรเซสหนึ่ง หรืออาจใช้รว่ มกับโปรเซส
อื่น ๆ ก็ได้
4. บล็อกควบคุมโปรเซส (Process Control Block : PCB)
• เป็ นเนื ้อที่ของหน่วยความจาที่ระบบปฏิบตั ิการกาหนดไว้ เพื่อเก็บข้ อมูที่
สาคัญของโปรเซสไว้
3
องค์ประกอบของโปรเซส
– บล็อกควบคุมโปรเซส (Process Control Block : PCB) OS จะ
กาหนดเนื้อทีบ่ างส่วนในหน่วยความจาเพือ่ ทาเป็ น PCB
พอยเตอร์
สถานะโปรเซส
หมายเลขโปรเซส
รีจสิ เตอร์
ข้อมูลการจัดเวลา ข้อมูลหน่วยความจา
ข้อมูลแอ็กเคาต์ ข้อมูลสถานะ I/O
:
4
(Process Control Block : PCB)
4.1 พอยเตอร์ (Pointer) สาหรับชี ้ตาแหน่งของ
โปรเซสที่อยูใ่ นหน่วยความจา และตาแหน่งของ
ทรัพยากรที่โปรเซสครอบครองอยู่
4.2 สถานะของโปรเซส(Process Status)
แสดงสถานะของโปรเซสที่เป็ นอยูใ่ นปั จจุบนั
5
(Process Control Block : PCB)
4.3 หมายเลขโปรเซส(Process ID) เป็ น
หมายเลขประจาตัวของโปรเซส
4.4 ตัวนับจานวน(Program
Counter) เป็ นตัวนับที่แสดงที่อยู่ของคาสัง่
ต่อไปที่จะถูกประมวลผล
6
(Process Control Block : PCB)
o4.5 รี จส
ิ เตอร์ (Register) ทาหน้ าที่เก็บข้ อมูล
สถานะระบบเมื่อมีอินเทอร์ รัพเกิดขึ ้นเพื่อทาให้ โปรแกรม
สามารถทางานต่อไปได้ เมื่อกลับมาทางานอีกครัง้
รี จิสเตอร์ จะมีคา่ และประเภทที่เปลี่ยนแปลงได้ ขึ ้นอยูก่ บั
สถาปั ตยกรรมของคอมพิวเตอร์ ประเภทของรี จิสเตอร์ คือ
Accumulator, Index, Stack Pointer
และรี จิสเตอร์ ทวั่ ไป
7
(Process Control Block : PCB)
o4.6 ข้ อมูลการจัดการเวลาซีพย
ี ู(CPU
Scheduling Information) เป็ นข้ อมูล
ที่ประกอบด้ วยลาดับความสาคัญของโปรเซสที่ถกู
กาหนดโดยระบบปฏิบตั ิการเมื่อโปรเซสถูกสร้ างขึ ้นมา
สามารถเปลี่ยนค่าไปได้ ซึง่ โปรเซสใดที่มีความสาคัญ
มากระบบปฏิบตั ิการจะให้ สทิ ธิมากกว่าโปรเซสอื่น เช่น
ให้ เวลาซีพียนู านกว่า เป็ นต้ น
8
(Process Control Block : PCB)
o4.7 ข้ อมูลการจัดการหน่ วยความจา
(Memory Management
Information) เป็ นข้ อมูลเกี่ยวกับ
หน่วยความจาที่ระบบปฏิบตั ิการกาหนดไว้ เช่น
ขนาดหน่วยความจา, ค่าของรี จิสเตอร์ , Page
table และ Segment table เป็ นต้ น
9
(Process Control Block : PCB)
4.8 ข้ อมูลแอ็กเคาต์ (Account
Information) เป็ นข้ อมูลที่อาจประกอบด้ วย
จานวน CPU, เวลาที่กาหนด, หมายเลขแอ็กเคาต์,
หมายเลขโปรเซส และอื่นๆ
4.9 ข้ อมูลสถานะอินพุต/เอาต์ พุต(I/O Status
Information) เป็ นข้ อมูลแสดงรายการของ
อุปกรณ์อินพุต/เอาต์พตุ ที่โปรเซสนี ้ใช้ เป็ นต้ น
10
องค์ประกอบของโปรเซส (ต่ อ)
• โปรเซสทีส่ มบูรณ์มอี งค์ประกอบดังนี้
5. PSW (Program Status Word) เป็ นตัวควบคุมลาดับการ
เอ็กซิควิ ต์คาสังของโปรเซส
่
และเก็บข้อมูลเกีย่ วกับสถานะของ
โปรเซส ทีอ่ ยูข่ องคาสังที
่ จ่ ะเอ็กซิควิ ต์ต่อไป
6.คุณสมบัติของโปรเซส
• ลำดับควำมสำคัญของโปรเซส (Priority)
• อานาจหน้าทีข่ องโปรเซส (Authority)
• คุณสมบัตอิ ่นื ๆ
11
คุณสมบัตขิ องโปรเซส
ลำดับควำมสำคัญของโปรเซส (Priority) โดยเมื่อ
โปรเซสถูกสร้ างขึ ้นมา ลาดับความสาคัญของโปรเซสจะถูก
กาหนดโดยระบบปฏิบตั ิทนั ที สามารถเปลี่ยนค่าไปได้ ซึ่ง
โปรเซสใดที่มีความสาคัญมากระบบปฏิบตั ิการจะให้ สิทธิ
มากกว่าโปรเซสอื่น
่ องโปรเซส (Authority) เป็ นการบอก
อำนำจหน้ ำทีข
อานาจหน้ าที่ของโปรเซสนันว่
้ าสามารถทาอะไรได้ บ้าง ใช้
อุปกรณ์อะไรได้ บ้าง เป็ นต้ น
คุณสมบัตอ
ิ ่นื ที่ระบบปฏิบตั ิการกาหนดให้ มี
12
สถานะของโปรเซส
• ในขณะทีเ่ อ็กซิควิ ต์โปรเซสอยูน่ นั ้ โปรเซสจะมีการ
เปลีย่ นแปลงสถานะอยูต่ ลอดเวลาสามารถแบ่งสถานะดังนี้
– สถานะเริ่มต้น (New) เป็ นสถานะทีเ่ ริม่ ต้นสร้างโปรเซส
– สถานะพร้อม (Ready) เป็ นสถำนะที่พร้อมจะครอบครองซีพียู
แต่ยงั ไม่มีกำรรัน
– สถานะรัน (Running) เป็ นสถำนะที่โปรเซสเข้ำครอบครอง
ซีพียแู ละมีกำรเอ็กซิ คิวต์คำสัง่ ในโปรแกรมของโปรเซส
13
สถานะของโปรเซส
• สถานะรอ (Wait) เป็ นสถำนะที่โปรเซสกำลังรอเหตุกำรณ์
บำงอย่ำง เช่น กำรรอสัญญำณ กำรจัดกำรอินพุต/เอำต์พตุ ดีไวซ์
• สถานะบล็อก (Block) เป็ นสถำนะที่โปรเซสต้องกำรใช้อุปกรณ์
อินพุต/เอำต์พตุ หรื อเกิดอินเทอร์รัพต์ระหว่ำงที่รันโปรเซส ซึ่ง
จะต้องรอให้มีกำรจัดกำรอุปกรณ์อินพุต/เอำต์พตุ หรื อจัดกำรอิน
เทอร์รัพต์ให้เรี ยบร้อยก่อนจะกลับไปสถำนะรันได้ต่อไป
• สถานะสิ้นสุด (Terminate) เป็ นสถำนะที่หยุดนิ่งอันเกิดจำก
โปรเซสถูกเอ็กซิ คิวต์หมดทุกคำสัง่ ในโปรแกรมแล้ว
14
สถานะของโปรเซส
เริม่ ต้น
new
ยอมรับให้ทางาน
บล็อก
Block
อินเทอร์รพั ต์
สิน้ สุด
Terminate
ทางานเสร็จสิน้ แล้ว
รัน
พร้อม
Running
Ready
Scheduler dispatch
รออินพุต/เอาต์พุต
อินพุต/เอาท์พุต
หรืออีเวนต์
รอ
หรืออีเวนต์เสร็จแล้ว
Wait
15
ขัน้ ตอนการเปลี่ยนสถานะของโปรเซส
• เมือ่ ผูใ้ ช้ตอ้ งการส่งงานให้เครือ่ งคอมพิวเตอร์ทางาน OS จะเป็ นผูท้ ร่ี บั ทราบ
ความต้องการนี้ และจะเตรียมสร้างโปรเซสให้กบั งานใหม่ทถ่ี ูกส่งเข้ามา
• OS จะต้องพิจารณาว่าเนื้อทีห่ น่วยความจาหลักของระบบมีเพียงพอหรือไม่
– ถ้ำเพียงพอก็จะทำกำรสร้ำงโปรเซสใหม่โดยเก็บไว้ในหน่วยควำมจำหลัก
– ถ้ำไม่เพียงพอก็จะต้องรอจนกว่ำจะมีโปรเซสอื่นจบลงและมีเนื้อที่ในหน่วยควำมจำ
เหลือมำกพอ
• เมื่อโปรเซสถูกสร้ำงขึ้นมำใหม่จะอยูใ่ นสถำนะพร้อมก่อน ยังไม่สำมำรถเข้ำ
ไปใช้งำน CPU ได้
16
ขัน้ ตอนการเปลี่ยนสถานะของโปรเซส
• สาเหตุทโ่ี ปรเซสไม่สามารถเข้าใช้งาน CPU ได้ทนั ที
– เนื่องจากระบบคอมพิวเตอร์ในปจั จุบนั เป็ นระบบทีม่ ผี ใู้ ช้หลายคนในเวลา
เดียวกัน
– ทาให้มโี ปรเซสมากมายเกิดขึน้ ซึง่ โปรเซสเหล่านี้ตอ้ งการใช้ CPU ทัง้ สิน้
– ต้องมีการจัดคิวและแจ้งสถานะพร้อมให้กบั โปรเซสไว้ก่อน
– เมือ่ โปรเซสทีใ่ ช้งาน CPU ทางานเสร็จสิน้ หรือถูกยกเลิก ทาให้ CPU จะว่าง
โปรเซสต่อไปทีอ่ ยูใ่ นคิวก็จะเลื่อนเข้าไปใช้ CPU (เปลีย่ นสถานะจากพร้อมเป็ น
สถานะรัน)
– เหตุการณ์ทงั ้ หมดผูท้ ท่ี าหน้าทีค่ วบคุมการทางานคือ OS
17
ขัน้ ตอนการเปลี่ยนสถานะของโปรเซส
เริม่ ต้น
สิน้ สุด
พร้อม
รัน
18
ขัน้ ตอนการเปลี่ยนสถานะของโปรเซส
• กรณีทโ่ี ปรเซสใดใช้เวลารันเป็ นเวลานานก็จะครอบครองซีพยี ูเป็ น
เวลานาน
• ทาให้โปรเซสอื่น ๆ เสียเวลาในการรอนานเกินไป
• เพือ่ แก้ปญั หานี้ OS จะกาหนดเวลาในการอยูใ่ นสถานะการรันของ
ทุกโปรเซสไว้ เรียกว่า “เวลาควันตัม (Quantum time)”
• ถ้าโปรเซสใดใช้เวลาครอบครอง CPU เกินกว่าเวลาควันตัม
ระบบปฏิบตั กิ ารจะย้ายโปรเซสนัน้ ไปต่อคิวใหม่และเปลีย่ นเป็ น
สถานะพร้อม และนาโปรเซสทีอ่ ยูใ่ นคิวต่อไปมารัน
19
ขัน้ ตอนการเปลี่ยนสถานะของโปรเซส
• ภายในระยะเวลาควันตัม ถ้าโปรเซสจบลง โปรเซสก็จะออกจาก
ระบบ ทรัพยากรต่าง ๆ ทีโ่ ปรเซสครอบครองก็จะถูกส่งคืนให้กบั
ระบบ
เริม่ ต้น
สิน้ สุด
เกินเวลาควอนตัม
พร้อม
รัน
20
ขัน้ ตอนการเปลี่ยนสถานะของโปรเซส
• กรณีทโ่ี ปรเซสกาลังอยูใ่ นสถานะรัน มีความต้องการใช้อุปกรณ์
อินพุต/เอาท์พตุ หรืออาจจะเกิดอินเทอร์รพั ต์ (Interrupt) ขึน้
• OS ก็จะย้ายโปรเซสจากสถานะรันไปอยูใ่ นสถานะบล็อก และดึง
โปรเซสทีอ่ ยูใ่ นคิวต่อไปมารัน
บล็อก
เริม่ ต้น
พร้อม
สิน้ สุด
รัน
21
ขัน้ ตอนการเปลี่ยนสถานะของโปรเซส
• กรณีทร่ี ะบบมีงานมากเกินไป OS ไม่สามารถตอบสนองการทางาน
ของโปรเซสทัง้ หมดได้
• OS จะนาเอาโปรเซสบางโปรเซสไปเก็บไว้ในสถานะรอชัวคราวก่
่
อน
รอจนจานวนโปรเซสในระบบลดลงมาอยูใ่ นระดับปกติ จึงค่อยย้าย
โปรเซสเหล่านัน้ กลับมาทางาน
พร้อม
รัน
บล็อก
รอ
22
ลาดับชัน้ ของโปรเซส (Process Hierarchy)
• เมือ่ ผูใ้ ช้สง่ งานให้กบั ระบบรัน OS จะทาการสร้างโปรเซสสาหรับ
งานนัน้ ขึน้ มา
• การทางานของ OS ก็ถอื ว่าเป็ นงานของระบบดังนัน้ จะมีการสร้าง
โปรเซสขึน้ เหมือนกัน
• นอกจากนัน้ โปรเซสทีถ่ ูกสร้างขึน้ ก็สามารถสร้างโปรเซสย่อยได้
• โปรเซสทีใ่ ห้กาเนิด เราเรียกว่าโปรเซสแม่ (parent process)
• โปรเซสย่อยทีเ่ กิดขึน้ เราเรียกว่าโปรเซสลูก (child process)
23
ลาดับชัน้ ของโปรเซส (Process Hierarchy)
• โดยทัวไป
่ เมือ่ โปรเซสแม่จบลง โปรเซสต่าง ๆ ทีอ่ ยูภ่ ายใต้ตวั มันก็จะจบลง
ตามไปด้วย
• แต่ OS บางตัวยอมให้โปรเซสแม่จบลง โดยทีโ่ ปรเซสลูกไม่ตอ้ งจบลงตามไป
ด้วย ในกรณีน้ีโปรเซสลูกก็จะไม่มโี ปรเซสแม่
A
B
E
C
D
F
G
H
24
ลาดับชัน้ ของโปรเซส (Process Hierarchy)
• จากตัวอย่างในรูป โปรเซส A จะมีโปรเซสลูก 3 โปรเซสคือ B,C และ
D
• ถึงแม้วา่ โปรเซส A เป็ นโปรเซสแม่ของโปรเซส B,C และ D แต่
โปรเซส A ไม่ได้เป็ นผูท้ ส่ี ร้างโปรเซส B,C และ D
• ผูท้ ส่ี ร้างโปรเซสทัง้ หมดได้แก่ OS ซึง่ OS จะมีโปรเซสหนึ่งทาหน้าที่
สร้างและยุตโิ ปรเซส คือ “ตัวจัดคิวระยะยาว”
• คาถาม
– โปรเซส F,G,H นัน้ ถูกสร้างโดยโปรเซส D ใช่หรือไม่
– ใครเป็ นผูท้ ส่ี ร้างโปรเซส A
25
โปรเซสสื่อประสาน (Cooperating Processes)
• โปรเซสทีเ่ อ็กซิควิ ต์ในระบบนัน้ มี 2 แบบ
– โปรเซสที่เป็ นอิสระ ( Independent Processes) หมายถึงโปรเซสทีไ่ ม่ม ี
ผลกระทบหรือไม่ได้รบั ผลกระทบจากโปรเซสอื่น
– โปรเซสสือ่ ประสาน (Cooperating Processes) หมายถึงโปรเซสทีม่ ี
ผลกระทบหรือได้รบั ผลกระทบจากโปรเซสอื่น
• เหตุผลที่ทำให้เกิดกำรประสำนงำนระหว่ำงโปรเซส
– ต้องกำรใช้ขอ้ มูลร่ วมกัน
– ต้องกำรเพิม่ ควำมเร็ วในกำรคำนวณ
26
การติดต่อระหว่างโปรเซส (Interprocess communication)
ส่งข้อมูล
โปรเซส
A รับข้อมูล
รับข้อมูล
หน่วย
ความจาร่วม
โปรเซส
ส่งข้อมูล
B
• เมือ่ โปรเซส A ต้องการติดต่อกับโปรเซส B
– โปรเซส A และ B จะต้องจองเนื้อทีใ่ นหน่วยความจาในส่วนทีว่ า่ งเอาไว้
– ทัง้ 2 โปรเซสต้องรูว้ า่ หน่วยความจาร่วมนี้อยูท่ ใ่ี ด
– เมือ่ โปรเซส A ส่งข้อมูลให้โปรเซส B ข้อมูลจะถูกส่งไปไว้ในหน่วยความจา
ร่วม
27
การติดต่อระหว่างโปรเซส (Interprocess communication)
• เมือ่ โปรเซสต้องการใช้ขอ้ มูลของโปรเซสอื่น โปรเซสทีถ่ กู ร้อง
ขอจะส่งข้อมูลไปให้ การทีโ่ ปรเซสต่าง ๆ มีการติดต่อกัน
เช่นนี้ เราเรียกว่า การติดต่อระหว่างโปรเซส
• โดยทัวไปการติ
่
ดต่อระหว่างโปรเซสนัน้ จะใช้วธิ กี ารคือ การ
ใช้หน่ วยความจาร่วม (Shared memory)
• กลไกการรับส่งข้อมูลผ่านทางหน่วยความจาร่วมนี้ OS จะไม่
ช่วยจัดการให้โปรเซสทีต่ อ้ งการติดต่อกันจะต้องจัดการเอา
เอง
28
การติดต่อระหว่างโปรเซส (Interprocess communication)
• เมือ่ โปรเซส A ต้องการติดต่อกับโปรเซส B
– โปรเซส B จะตรวจสอบได้เองว่าโปรเซส A นาข้อมูลไปวางไว้แล้ว
หรือยัง
– ถ้าโปรเซส A ยังไม่สง่ ข้อมูลมา โปรเซส B ก็จะยังไม่ดงึ เอาข้อมูลมา
ใช้
– นอกจากนัน้ โปรเซส B ยังต้องสามารถตรวจสอบได้วา่ ข้อมูลทีอ่ ยูใ่ น
หน่วยความจาร่วมนัน้ เป็ นข้อมูลเก่าทีเ่ คยนามาใช้แล้วหรือยัง
– สาหรับโปรเซส A ถ้าจะส่งข้อมูลชุดใหม่ให้ โปรเซส A จะต้อง
ตรวจสอบก่อนว่าข้อมูลชุดเดิมทีอ่ ยูใ่ นหน่วยความจาร่วมนัน้ ถูก
นาไปใช้หรือยัง ถ้าถูกนาไปใช้แล้วก็จะนาข้อมูลชุดใหม่ทบั ลงไป
29
การติดต่อระหว่างโปรเซส (Interprocess communication)
• นอกจากการใช้หน่วยความจาร่วมแล้วยังมีวธิ อี ่นื ทีม่ คี วามสะดวก
มากกว่าและเป็ นมาตรฐาน คือการใช้พอร์ท (Port)
• พอร์ท คือพืน้ ทีใ่ นหน่วยความจาส่วนหนึ่งที่ OS จัดไว้เพือ่ ให้โปรเซส
ต่าง ๆ ใช้รว่ มกันได้
• โดย OS จะทาหน้าทีเ่ ป็ นผูใ้ ห้จงั หวะในการรับส่งข้อมูลให้กบั แต่ละ
โปรเซส เช่น
– ถ้ำโปรเซส A ต้องการใช้ขอ้ มูลจากโปรเซส B OS จะเป็ นผูค้ น้ หาข้อมูล B จาก
พอร์ท ถ้าพบก็จะให้โปรเซส A รับข้อมูลไป แต่ถา้ ไม่พบก็จะให้โปรเซสนัน้
หยุดรอจนกว่าจะมีขอ้ มูลถูกส่งมาไว้ทพ่ี อร์ท
30
โครงสร้างของพอร์ท
• พอร์ทในปจั จุบนั มี 3 แบบ
– พอร์ ทแบบคิว โครงสร้ำงของพอร์ทแบบนี้ขอ้ มูลชุดใดที่ถูกส่ งเข้ำพอร์ทก่อน
จะถูกดึงออกไปก่อน ข้อมูลชุดใดที่ถูกส่ งเข้ำพอร์ททีหลังจะถูกดึงออกไปที
หลัง
ข้อมูลออกจากพอร์ท
ส่งข้อมูลเข้าพอร์ท
– พอร์ ทแบบไปป์ มีลกั ษณะกำรทำงำนเหมือนพอร์ทแบบคิว แต่ไปป์ มีควำม
ยำวของพอร์ทไม่จำกัด ในขณะที่พอร์ทแบบคิวมีควำมยำวของพอร์ทคงที่
– พอร์ ทแบบแสต๊ ก มีกลไกการทางานโดยข้ อมูลชุดใดที่ถกู ส่งเข้ าพอร์ ทก่อน
จะถูกดึงออกไปใช้ ทีหลังก่อน ข้ อมูลชุดใดที่ถกู ส่งเข้ าพอร์ ททีหลังจะถูกดึง
ออกไปใช้ ก่อน
31
การเข้ าจังหวะของโปรเซส (Process Synchronization)
• ในการใช้ทรัพยากรโดยเฉพาะอย่างยิง่ ข้อมูลอาจก่อให้เกิด
ปญั หาทีท่ าให้การทางานไม่ถกู ต้อง
• ตัวอย่าง
–
–
–
–
เริม่ ต้นค่า X = 10
โปรเซสที่ 1 มีการเพิม่ ค่า X จากเดิม 10
โปรเซสที่ 2 มีการลบค่า X ลง 10
ผลจากการทางานจะเป็ นดังนี้ (10+10-10) = 10
32
การเข้ าจังหวะของโปรเซส (Process Synchronization)
10
20
X=10
X=20
10
X=20
X=X+10
X=X-10
โปรเซสที่ 1
โปรเซสที่ 2
X=10
โปรเซสที่ 1 ทางานเสร็จก่อนโปรเซสที่ 2
33
การเข้ าจังหวะของโปรเซส (Process Synchronization)
10
0
X=10
X=0
10
X=0
X=X-10
X=X+10
โปรเซสที่ 2
โปรเซสที่ 1
X=10
โปรเซสที่ 2 ทางานเสร็จก่อนโปรเซสที่ 1
34
การเข้ าจังหวะของโปรเซส (Process Synchronization)
X=X+10
X=10
โปรเซสที่ 1
X=20
10
0 หรือ 20
X=10
โปรเซสที่ 2
X=0
X=X-10
โปรเซสที่ 1 และโปรเซสที่ 2 ทางานใกล้เคียงกัน
35
การเข้ าจังหวะของโปรเซส (Process Synchronization)
• จากรูปจะเห็นว่าถ้าโปรเซสที่ 1 และ 2 มีการทางานทีเ่ ป็ นอิสระ
อาจทาให้ผลลัพธ์เกิดความผิดพลาดขึน้
• ดังนัน้ เพือ่ ป้องกันความผิดพลาดทีเ่ กิดขึน้ จะต้องมีการจัดจังหวะ
การทางานให้กบั แต่ละโปรเซสสาหรับการใช้ขอ้ มูลร่วมกัน
• จากตัวอย่างควรกาหนดว่าเมือ่ โปรเซสใดได้เข้ามาครอบครอง
ข้อมูล โปรเซสอื่น ๆ ทีต่ อ้ งการใช้ขอ้ มูลตัวเดียวกันจะต้องหยุดรอ
ให้โปรเซสแรกใช้งานให้เสร็จก่อน
36
การเข้ าจังหวะของโปรเซส (Process Synchronization)
• การป้องกันโปรเซสอื่น ๆ เข้ามาใช้ทรัพยากรซึง่ มีโปรเซสหนึ่ง
ครอบครองอยูแ่ ล้วเรียกว่า การไม่เกิดร่วม (Mutual exclusion)
• ในช่วงเวลาทีโ่ ปรเซสเข้าไปครอบครองทรัพยากรแบบการไม่เกิด
ร่วมนี้เรียกว่า โปรเซสนัน้ อยูใ่ นย่านวิกฤต (Critical region หรือ
Critical Section)
37
ปัญหาการทางานของโปรเซส
• ปัญหาที่ 1 : การอดตาย (Starvation) หรือ การเลื่อน
ไหลไปอย่างไม่มีวนั สิ้นสุด (Infinite postponement)
– ถ้าโปรเซส A และ B ต้องการใช้เครือ่ งพิมพ์พร้อมกัน โปรเซส
ที่จะได้ใช้ก่อนก็คอื โปรเซสทีม่ ลี าดับความสาคัญสูงกว่า
– เช่น ถ้า โปรเซส B มีลาดับความสาคัญสูงกว่า A โปรเซส B ก็
จะได้ใช้เครือ่ งพิมพ์ ส่วนโปรเซส A ต้องรอ
38
ปัญหาการทางานของโปรเซส
– ในขณะทีโ่ ปรเซส A กาลังรอ ปรากฏว่ามีโปรเซสอื่น ๆ
ทีม่ ลี าดับความสาคัญสูงกว่าโปรเซส A ต้องการใช้
เครือ่ งพิมพ์
– สิง่ ทีเ่ กิดขึน้ กับโปรเซส A คือ โปรเซส A จะถูกโปรเซส
อื่นแซงตลอดเวลา เราเรียกเหตุการณ์ทเ่ี กิดขึน้ นี้วา่ “กา
รอดตายของโปรเซส (Starvation) หรือ การเลื่อน
ไหลไปอย่างไม่มีวนั สิ้นสุด (Infinite postponement)
39
ปัญหาการทางานของโปรเซส
• ปัญหาที่ 2 : วงจรอับ หรือ การติดตาย (Deadlock)
ครอบครอง
ทรัพยากร A
ต้องการ
โปรเซส 1
ต้องการ
โปรเซส 2
ครอบครอง
ทรัพยากร B
40
แบบฝึ กหัดบทที่ 2
1. สถานะของโปรเซสมีอะไรบ้ าง จงอธิบาย
2. เวลา Quantum Time คืออะไร
3. ปั ญหา DeadLock เกิดขึน้ ได้ อย่ างไร
4. สถานะ Block เกิดขึน้ ได้ อย่ างไร
5. การติดต่ อกันระหว่ าง Process เป็ นหน้ าที่ของโคร
6. พอร์ ท มีก่ แี บบอะไรบ้ าง
7. จงยกตัวอย่ าง พอร์ ทแบบสเต็ก
8. Mutual exclusion เกิดขึน้ ได้ อย่ างไร
9. ปั ญหาการอดตาย เกิดขึน้ ได้ อย่ างไร
10. องค์ ประกอบของโปรเซส มีอะไรบ้ าง
41