Transcript Chapter2

บทที่ 2
การจัดการโปรเซส
L/O/G/O
1
Agenda
โปรเซส (Process)
 กาหนดการใช้ ซีพย
ี ู (CPU Scheduling)
 การติดตาย (Deadlock)

2
โปรเซส (Process)
3
ความหมายของโปรเซส
โปรแกรมที่กำลังถูกเอ็กซิ คิวต์
่ ะหว่ำงกำรทำงำน
 โปรแกรมที่อยูร
ั
 กิจกรรมที่มีกำรทำงำนสัมพันธ์กน
 สิ่ งที่กำลังใช้งำนโปรเซสเซอร์ อยู่

4
องค์ ประกอบของโปรเซส
หมำยเลขโปรเซส (Process ID)
 โค้ดโปรแกรม (Program Code)
 ข้อมูล (Data)
 บล็อกควบคุมโปรเซส (Process Control Block ) หรื อ PCB
 PSW (Program Status Word)
 คุณสมบัติของโปรเซส
 ลำดับควำมสำคัญของโปรเซส (Priority)
 อำนำจหน้ำที่ของโปรเซส (Authority)
 คุณสมบัติอื่น ๆ

5
บล็อกควบคุมโปรเซส (PCB)
ตัวชี้ (Pointer)
 สถำนะของโปรเซส (Process state)
 หมำยเลขของโปรเซส (Process ID)
 ตัวนับโปรเซส (Program counter)
 รี จิสเตอร์ (Register)
 ข้อมูลกำรจัดกำรเวลำของซี พีย ู (CPU scheduling information)
 ข้อมูลกำรจัดกำรหน่ วยควำมจำ (Memory management information)
 ข้อมูลแอ็กเคำต์ (Account information)
 ข้อมูลสถำนะอินพุต/เอำต์พต
ุ (I/O status information)

6
L/O/G/O
บล็อกควบคุมโปรเซส (PCB)
7
สถานะของโปรเซส
สถำนะของโปรเซสที่สำคัญมี 3 สถำนะ คือ
 สถำนะพร้อม (Ready State)
 สถำนะกำรทำงำน (Running State)
 สถำนะรอ,พัก (Waiting State)
8
L/O/G/O
ไดอะแกรมของสถานะโปรเซส
9
การจัดลาดับโปรเซส (Process Scheduling)




ใช ในระบบมัลติโปรแกรมมิ่ง คือกำรจัดโปรเซสให รัน
ตลอดเวลำ เพื่อให ใช ประโยชน ซี พียไู ด สู งสุ ด
โปรเซสที่ระบบปฏิบตั ิกำรสร ำงขึ้นมำใหม จะอยู ในสถำนะ
พร อมและเก็บ อยู ในคิว เรี ยกว ำ Ready Queue เพื่อรอกำร
รัน
ต้องพิจำรณำหน่วยควำมจำของระบบมีเพียงพอหรื อไม่
Ready Queue จะเก็บโปรเซสในลักษณะลิงค ลิสต (Link list)
ที่ส วนหัวของคิว จะประกอบด วยพอยเตอร ของ PCB เริ่ มต
น และท ำยสุ ดของลิสต และแต ละ PCB จะมีพอยเตอร
10
ชี้ไปยัง PCB ตัวต อไปของคิว
หัว
ท้ าย
L/O/G/O
คิวที่พร้อมทำงำนและอินพุต/เอำต์พตุ อื่น ๆ
11
การจัดลาดับโปรเซส (Process Scheduling)
อย่ำงไรก็ตำม ในกำรจัดกำรโปรเซสที่อยูใ่ นคิวต่ำงๆ จำเป็ นต้องมี
โปรแกรมที่ช่วยกำหนดและจัดลำดับของโปรเซส โปรแกรมดังกล่ำว
เรี ยกว่ำ “กำหนดกำร (Scheduler)” โดยแบ่งออกเป็ น

กำหนดกำรระยะยำว (Long-term Scheduler หรื อ Job Scheduler)
ทำหน้ำที่เลือกโปรเซสที่รออยูใ่ นหน่วยควำมจำสำรองเข้ำไปอยูท่ ี่
หน่วยควำมจำหลัก โดยจะพิจำรณำเลือกโปรเซสจำกหน่วยควำมจำ
สำรองไปเข้ำคิวพร้ อม ที่หน่วยควำมจำหลัก เพื่อรอจนกว่ำซีพียจู ะ
ว่ำง
12
การจัดลาดับโปรเซส (Process Scheduling)
กำหนดกำรระยะสั้น (Short-term Scheduler หรื อ CPU Scheduler)
ทำหน้ำที่เลือกโปรเซสจำก คิวพร้ อม และมอบหมำยซีพียใู ห้แก่โปรเซส
ทีละโปรเซส เป็ นผลให้โปรเซสเปลี่ยนสถำนะจำก พร้ อม เป็ น ทำงำน

ข้อแตกต่ำงระหว่ำงกำหนดกำรทั้ง 2 ข้อ คือ
- กำหนดกำรระยะสั้นจะถูกเรี ยกใช้งำนมำกกว่ำกำหนดกำรระยะ
ยำว
13
การดาเนินการบนโปรเซส (Operation on Process)
ระบบปฏิบตั ิกำรจำเป็ นต้องมีวิธีกำรหรื อกระบวนกำรสร้ำงและ
ทำลำยโปรเซสได้ ด้วยกำรเรี ยกใช้ “คำสัง่ ระบบ(System command)”
ของระบบปฏิบตั ิกำร
โปรเซสพ่อ (Parent Process) โปรเซสที่สร้ำงโปรเซสอื่น
 โปรเซสลูก (Child Process) โปรเซสที่ถูกสร้ำง

14
การดาเนินการบนโปรเซส (Operation on Process)


การเอ็กซิคิวต์ (พร้ อมกัน หรื อรอให้ โปรเซสลูกเสร็จก่อนแม่จึงเอ็กซิคิวต์)
แอ็ดเดรส (โปรเซสลูกสาเนาจากโปรเซสแม่ หรื อโหลดแอ็ดเดรสให้ ตวั เอง)
15
Thread
Thread เป็ นส่ วนย่อยของโปรเซสที่เรี ยกว่ำ “Lightweight
Process”
 แต่ละโปรเซสอำจจะมีหนึ่ งเทรด หรื อมีหลำยเทรดก็ได้
 ข้อดีของกำรมีหลำยเทรด(Multithreaded process) เช่น

กำรตอบสนอง
 กำรใช้ทรัพยำกรร่ วมกัน
 ควำมประหยัด
 กำรเอื้อประโยชน์ของสถำปั ตยกรรมมัลติโปรเซสเซอร์

16
Thread
17
Thread
18
Thread

ส่ วนประกอบของ Thread
 หมำยเลข Thread
 ตัวนับ : ติดตำมให้ทรำบคำสัง
่ ต่อไปที่จะเอ็กซิคิวต์
 ชุดของรี จิสเตอร์ : เก็บค่ำตัวแปรที่ทำงำนอยู่
 สแต็ก : เก็บประวัติกำรเอ็กซิ คิวต์
19
Thread

โมเดลของ MultiThread

Many-to-One : 1 Kernel
กับหลำย User thread กำร
จัดกำร threadอยูใ่ นพื้นที่
ของผูใ้ ช้ซ่ ึงมีประสิ ทธิภำพ
แต่ถำ้ thread บล็อก system
call จะทำให้โปรเซสถูกบ
ล้อกไปด้วย
20
Thread

โมเดลของ MultiThread

One-to-One : 1 Kernel กับ 1
User thread ทำงำนได้พร้อม
กันดีกว่ำแบบแรก โดยยอมให้
thread อื่นรันได้เมื่อ thread
บล็อก system call ต้องคำนึง
กำรสร้ำง kernel และ user
thread ต้องสัมพันธ์กนั กำร
สร้ำง kernel thread เป็ น
ประสิ ทธิภำพของโปรแกรม
21
Thread

โมเดลของ MultiThread

Many-to-many : User thread
มำกว่ำหรื อเท่ำกับ Kernel thread ได้
 kernel thread กำหนดแอปพลิเค
ชัน
 Many-to-One ยอมให้ผพ
ู ้ ฒั นำ
สร้ำง user thread ได้ตำมต้องกำร
แต่ไม่สำมำรถรันได้พร้อมกัน
เนื่องจำก Kernel จัดเวลำให้ครั้ง
ละ thread
22
กาหนดการใช้ ซีพยี ู
(CPU Scheduling)
23
กาหนดการใช้ ซีพยี ู (CPU Scheduling)
กำรจัดเวลำซีพียู (CPU Scheduling) เป็ นหลักกำรทำงำนหนึ่ งของ
โปรแกรมจัดกำรระบบที่มีควำมสำมำรถในกำรรันโปรแกรมหลำย ๆ
โปรแกรมในเวลำเดียวกัน ซึ่งกำรแบ่งเวลำกำรเข้ำใช้ซีพียใู ห้กบั งำนที่
อำจถูกส่ งเข้ำมำหลำย ๆ งำนพร้อม ๆ กัน โดยเป้ ำหมำยของระบบ
เช่น
24
กาหนดการใช้ ซีพยี ู (CPU Scheduling)
มีกำรใช้งำนซีพียู (CPU utilization) มำกที่สุด
 มีปริ มำณงำนมำกที่สุด (throughput)
 มีเวลำครบวงงำนน้อยที่สุด (turnaround time)
 มีเวลำรอ (waiting time) น้อยที่สุด
 มีเวลำตอบสนองน้อยที่สุด (reponse time)

25
กาหนดการใช้ ซีพยี ู (CPU Scheduling)
กำรจัดลำดับใช้ซีพียมู ี 5 อัลกอริ ทึม ดังนี้
 มำก่อนบริ กำรก่อน (First -Come, First-Served Scheduling :
FCFS)
 งำนสั้นทำก่อน (Shortest-Job-First Scheduling : SJF)
 ลำดับควำมสำคัญ (Priority Scheduling)
 วิธีวนรอบ (Round-Robin Scheduling : RR)
 คิวหลำยระดับ (Multilevel Queue Scheduling)
26
มาก่อนบริการก่ อน (FCFS)
เป็ นอัลกอริ ทึมที่ง่ำยที่สุด
 โปรเซสใดที่ร้องขอใช้ซีพียก
ู ่อนก็จะได้รับกำรจัดสรรให้
ครอบครองเวลำซี พียกู ่อน
 ผลเสี ยของอัลกอริ ท่ ึมนี้ คือค่ำเฉลี่ยของกำรคอยในคิวแบบ
มำก่อนได้ก่อนนี้ค่อนข้ำงจะสู ง

27
การจัดเวลาแบบมาก่ อนได้ ก่อน (FCFS)
ค่ าเฉลีย่ ของเวลาทีใ่ ช้ ในการรอคอยคือ (0+24+27) / 3 = 17 วินาที
28
งานสั้ นทาก่ อน (SJF : Short–Job–First Scheduling)
โปรเซสที่ตอ้ งกำรใช้ซีพียเู ป็ นระยะเวลำสั้นทีส่ ุ ด จะได้รับ
เลือกให้เข้ำมำครบครองซี พียกู ่อน
 ถ้ำมีโปรเซสหลำยตัวที่มีคำบเวลำของเวลำซี พียข
ู องช่วง
ต่อไปเท่ำ ๆ กัน ก็จะใช้หลักกำรมำก่อนได้ก่อนมำใช้ใน
กำรคัดเลือก

29
การจัดเวลาแบบงานสั้ นทาก่อน (SJF)
ค่ าเฉลีย่ ของเวลาที่ใช้ ในการรอคอยคือ (0+3+9+16) / 4 = 7 วินาที
30
การจัดเวลาแบบงานสั้ นทาก่อน (SJF)




SJF สำมำรถเป็ นได้ท้ งั แบบให้สิทธิ์ ก่อน (Preemptive) หรื อไม่ให้สิทธิ์
ก่อน(Non-preemptive)
กำรตัดสิ นใจจะเกิดขึ้นทุกครั้งเมื่อมีโปรเซสใหม่เข้ำมำในคิวในขณะที่
ยังมีโปรเซสอื่นใช้งำนซี พียอู ยู่
โปรเซสใหม่อำจมีคำบเวลำของเวลำซี พียสู ้ นั กว่ำเวลำที่เหลืออยูข่ อง
เวลำซี พียขู องโปรเซสที่กำลังใช้ซีพียู --> อัลกอริ ทึมที่เป็ นแบบให้
สิ ทธิ์ ก่อนจะทำกำรหยุดงำนที่กำลังใช้ซีพียอู ยู่
แบบไม่ให้สิทธิ์ ก่อน --> ปล่อยให้งำนนั้นใช้ซีพียจู นเสร็ จสิ้ นเวลำซี พียู
ของช่วงเวลำนั้น บำงครั้งกำรทำ SJF แบบให้สิทธิ ก่อน อำจมีชื่อ
เรี ยกว่ำ Shortest-Remaining-Time-First
31
การจัดเวลาแบบงานสั้ นทาก่อน (SJF)
ให้ สิทธิ์ก่อน = [(10-1)+(1-1)+(17-2)+(5-3)] / 4 = 26/4 = 6.5 วินาที
ห้ ามแทรก = [(0)+(8-1)+(17-2)+(12-3)] / 4 = 31/4 = 7.75 วินาที32
ลาดับความสาคัญ (Priority Scheduling)





โปรเซสที่มีลำดับควำมสำคัญสู งที่สุดจะทำงำนก่อน แต่ถำ้ มีงำนที่มี
ลำดับควำมสำคัญเท่ำกัน ก็จะมีกำรนำเอำมำก่อนได้ก่อน (FCFS) มำใช้
ถ้ำไม่มีขอ้ ตกลงในกำรใช้ระบบกำรกำกับของควำมสำคัญเหล่ำนี้ อำจ
ก่อให้เกิดควำมสับสนขึ้นได้
ในหนังสื อเล่มนี้จะมีกำรกำหนดว่ำตัวเลขน้อยมีลำดับควำมสำคัญมำก
เพื่อเป็ นที่เข้ำใจร่ วมกัน
สำมำรถเป็ นได้ท้ งั แบบให้สิทธิ์ ก่อน (Preemptive) หรื อไม่ให้สิทธิ์ ก่อน
(Non-preemptive)
แบบ Preemptive อำจจะทำให้เกิดปัญหำสำคัญคือกำรอดตำย(Starvation)
33
การจัดเวลาตามลาดับสาคัญ (Priority)
ค่ าเฉลีย่ ของเวลาที่ใช้ ในการรอคอยคือ (0+1+6+16+18) / 5 = 41/5 = 8.2 วินาที
34
การจัดเวลาตามลาดับสาคัญ (Priority)
ปั ญหำใหญ่ของกำรจัดเวลำซีพียแู บบนี้กค็ ือโปรเซสทีม่ ีลำดับ
ควำมสำคัญต่ำอำจจะไม่มีโอกำสได้เข้ำไปใช้ซีพียเู ลย ถ้ำหำก
ว่ำมีโปรเซสที่มีลำดับควำมสำคัญสูงกว่ำอยูเ่ ป็ นจำนวนมำก
 กำรแก้ปัญหำสถำนกำรณ์น้ ี คือ กำรเพิม
่ ลำดับควำมสำคัญ
ให้กบั โปรเซสที่ยงั ไม่เสร็ จเหล่ำนี้ตำมระยะเวลำทีค่ อยอยูใ่ นคิว

35
วิธีวนรอบ (Round-Robin Scheduling : RR)
คิดขึ้นมำเพื่อใช้กบั ระบบคอมพิวเตอร์ แบบแบ่งเวลำโดยเฉพำะ
โดยมีลกั ษณะกำรทำงำนแบบมำก่อนได้ก่อน (FCFS) แต่ให้มีกรรมวิธี
ของให้สิทธิ์ ก่อนรวมอยูด่ ว้ ย แต่ละโปรเซสที่เข้ำมำในระบบจะถูกจำกัด
เวลำกำรเข้ำไปใช้ซีพียเู ท่ำ ๆ กัน ซึ่งช่วงเวลำนี้จะเป็ นช่วงเวลำสั้น
เรี ยกว่ำ เวลาควันตัม (Quantum Time)




ระยะเวลำควันตัมนี้ มีควำมยำวระหว่ำง 10 ถึง 100 มิลลิวินำที
คิวที่ใช้กเ็ ป็ นแบบวงกลม (Circular Queue)
ตัวจัดเวลำจะมีกำรให้ซีพียกู บั โปรเซสที่อยูใ่ นคิวแบบวนไปรอบ ๆ
36
วิธีวนรอบ (Round-Robin Scheduling : RR)
ในแต่ละคำบเวลำจะมีควำมยำวของกำรได้รับซีพียมู ำกทีส่ ุ ดคือ
1 ควันตัม ถ้ำโปรเซสใดไม่สำมำรถกระทำได้สำเร็ จภำยใน 1
ควันตัมนี้ โปรเซสก็จะต้องถูกนำกลับไปไว้ในคิวเช่นเดิม
 สถำนภำพต่ำง ๆ ของโปรเซสที่ยงั ทำไม่เสร็ จก็จะถูกบันทึก
ไว้ เพื่อว่ำเมื่อถึงโอกำสได้ครอบครองซีพียอู ีก ก็จะได้เริ่ มต้น
รันต่อจำกครั้งที่แล้วโดยไม่ตอ้ งเริ่ มใหม่ท้ งั หมด

37
วิธีวนรอบ (Round-Robin Scheduling : RR)
สมมติ ให้ ควันตัม = 4
ค่ าเฉลีย่ ของเวลาทีใ่ ช้ ในการรอคอยคือ [(10-4)+4+7] / 3 = 17/3 = 5.66 วิน38าที
วิธีวนรอบ (Round-Robin Scheduling : RR)
39
คิวหลายระดับ (Multilevel Queue Scheduling)
เป็ นกำรจัดเวลำของซีพียอู ีกแบบหนึ่งสำหรับระบบที่สำมำรถแบ่ง
ระดับชั้นของงำนได้อย่ำงชัดเจน
 งำนที่เป็ นฟอร์ กรำวนด์ (Foreground) หรื ออินเตอร์ แอ็กทีฟ
(Interactive) กับงำนที่เป็ นแบ็คกรำวนด์ (Background) หรื อแบ็ตช์
(Batch)
 งำนทั้งสองแบบนี้ ตอ
้ งกำรเวลำตอบสนอง (Response time) ที่
แตกต่ำงกัน จึงย่อมต้องกำรกำรจัดเวลำที่แตกต่ำงกัน
 งำนโต้ตอบต้องกำรกำรตอบสนองที่เร็ วควรได้ลำดับทำงำนก่อน

40
คิวหลายระดับ (Multilevel Queue Scheduling)
ใช้วธิ ีแบ่งคิวออกเป็ นหลำย ๆ ระดับโดยที่แต่ละระดับหมำยถึง
ระดับโปรเซสที่มีควำมสำคัญแตกต่ำงกัน
 กำรแบ่งระดับควำมสำคัญของโปรเซสนั้น สำมำรถแบ่งได้หลำย
ลักษณะ เช่นแบ่งตำมขนำดโปรเซส, จำนวนหน่วยควำมจำที่ตอ้ ง
ใช้หรื อจำนวนอินพุต/เอำต์พตุ เป็ นต้น

41
การจัดเวลาแบบคิวหลายระดับ
42
การประสานเวลาของโปรเซส (Process Synchronization)
ระบบคอมพิวเตอร์ แบบมัลติโปรแกรมมิ่ง จะมี
 โปรเซสที่ทำงำนพร้อมกันเรี ยกว่ำ Concurrent
 โปรเซสที่ทำงำนเป็ นอิสระจำกกัน Independent
 โปรเซสที่ทำงำนขึ้นต่อกันเรี ยกว่ำ dependent
 กำรซิ นโครไนซ์โปรเซสหรื อกำรประสำนเวลำของโปรเซสหมำยถึง
กำรทำงำนของโปรเซส 2 โปรเซสที่มีควำมเกี่ยวข้องกัน เนื่องจำก
 ต้องกำรใช้รีซอร์ สร่ วมกัน หรื อ
 อำจจะเป็ นกำรเอ็กซิ คิวต์โปรเซสหลังจำกที่โปรเซสอื่นเอ็กซิ
คิวต์เสร็ จแล้ว
43
การประมวลผลพร้ อมกันโดยวิธีการทางซอฟต์ แวร์
เรำสำมำรถนำวิธีกำรทำงซอฟต์แวร์มำช่วยควบคุมกำรทำงำนของ
ระบบ ให้ประมวลผลพร้อมกันได้ ซึ่งมีวธิ ีกำรทำงซอฟต์แวร์ที่สำคัญ
ดังนี้
1. อัลกอริ ทึมของเดกเกอร์ (Dekker’s Algorithm)
2. อัลกอริ ทึมของปรเตอร์สนั (Peterson’s Algorithm)
3. ซีมำฟอร์ (Semaphore)
44
การประมวลผลพร้ อมกันโดยวิธีการทางฮาร์ ดแวร์
กำรประมวลผลพร้อมกันและมีคุณสมบัติกำรไม่เกิดร่ วม (Mutual
exclusion) โดยใช้วิธีทำงฮำร์ดแวร์ มีวิธีกำรที่ทำได้หลำยวิธี เช่น
1. กำรปิ ดกั้น (Lock)
2. กำรปิ ดทำงขัดจังหวะ (Disabling Interrupt)
3. คำสัง่ ทดสอบและเซ็ต (Test and Set Instruction)
45
การประยุกต์
กำรทำงำนร่ วมกันของหลำยโปรเซสที่มีกำรทำงำนร่ วมกัน และมี
กำรสื่ อสำรกันระหว่ำงโปรเซส เพื่อให้โปรเซสเหล่ำนั้นสำมำรถทำงำน
ร่ วมกันได้ โดยมีคุณสมบัติกำรไม่เกิดร่ วม ได้ถูกนำไปประยุกต์ใช้ใน
หลำยปัญหำ ปัญหำสำคัญที่เป็ นพื้นฐำนและเป็ นแนวทำงในกำรนำไป
ประยุกต์ คือ
1. ปัญหำควำมสัมพันธ์แบบผูผ้ ลิต-ผูบ้ ริ โภค
(The Producer-Consumer Relationship Problem)
2. ปัญหำกำรบริ โภคของนักปรำชญ์
(The Dinning Philosopher Problem)
46
การติดตาย (Deadlock)
47
การติดตาย (Deadlock)
กำรติดตำย หมำยถึง สภำพที่โปรแกรมรอเหตุกำรณ์ที่ไม่มีวนั เกิดขึ้น
ในระบบมัลติโปรแกรม เช่น ต้องกำรดึงข้อมูลจำกกันและกัน แต่ไม่
ยอมซึ่งกันและกัน ทำให้ไม่สำมำรถปฏิบตั ิกำรต่อไปได้
Deadlock ไม่จำเป็ นที่จะต้องเกิดขึ้นภำยในเครื่ องคอมพิวเตอร์เครื่ อง
เดียวเท่ำนั้น วงจรอับสำมำรถเกิดข้ำมเครื่ องได้เช่นเดียวกัน เช่น ใน
ระบบเครื อข่ำยของสำนักงำน (Network) บำงครั้งอุปกรณ์ที่เชื่อมต่อ
กับระบบและสำมำรถเรี ยกใช้งำนได้โดยผูใ้ ช้หลำย ๆ คน เช่น Printer
เป็ นต้น
48
การติดตาย (Deadlock)
• กำรติดตำยในกำรเจรำจร
49
การติดตาย (Deadlock)
• กำรติดตำยในกำรใช้ทรัพยำกร
50
ลักษณะของการติดตาย (Deadlock Characteristics)
จำกตัวอย่ำงจะเห็นว่ำกำรติดตำยเกิดขึ้นเนื่องจำก
• กำรไม่เกิดร่ วม (Mutual exclusion) ใช้ทรัพยำกรร่ วมกันไม่ได้
• กำรครอบครองและกำรรอใช้ทรัพยำกร (Hold and Wait) โปรเซส
ครอบครองทรัพยำกรอยู่ แต่ตอ้ งกำรใช้ทรัพยำกรอื่นอีก เลยต้องรอ
• กำรไม่แย่งชิงทรัพยำกร (No Preemption) โปรเซสไม่สำมำรถแย่ง
ชิงทรัพยำกรจำกโปรเซสอื่นได้
• กำรรอแบบวงกลม (Circulate Wait) โปรเซสเกิดกำรรอเป็ นวัฏจักร
51
การป้ องกันการติดตาย (Deadlock Prevention)
กำรป้ องกันไม่เกิดกำรติดตำยก็คือจะต้องทำให้เงื่อนไขทั้ง 4 ข้อ
ข้ำงต้น อย่ำงน้อย 1 ข้อ ไม่เป็ นจริ ง คือ
1. ปฏิเสธกำรไม่เกิดร่ วม (Denying the Mutual Exclusion condition)
ทำได้ดว้ ยกำรให้ระบบเลือกใช้เฉพำะทรัพยำกรที่สำมำรถใช้ร่วมกันได้ แต่
ในทำงปฏิบตั ิเป็ นไปได้ยำก
2. ปฏิเสธกำรครอบครองและกำรรอ (Denying the Hold and Wait)
ขณะที่โปรเซสร้องขอทรัพยำกรโปรเซสต้องไม่ได้ครอบครองทรัพยำกร
ใดๆ ทั้งสิ้ น โดยก่อนเริ่ มทำงำนให้โปรเซสร้องขอทรัพยำกรทั้งหมดก่อน
52
การป้ องกันการติดตาย (Deadlock Prevention)
3. ปฏิเสธกำรไม่แย่งชิงทรัพยำกร (Denying the No-Preemption
condition) ยอมให้โปรเซสแย่งชิงทรัพยำกรที่โปรเซสอื่นครอบครอง
อยู่ โดยวิธีกำรต่อไปนี้
วิธีที่ 1 : โปรเซสที่ครอบครองทรัพยำกรบำงอย่ำงอยู่ แต่ตอ้ งกำรเพิ่ม แต่
ทรัพยำกรนั้นไม่วำ่ ง โปรเซสนั้นจะต้องปล่อยทรัพยำกรทั้งหมดที่มี
คืน สู่ ระบบ จำกนั้นทำกำรร้องขอใหม่ท้ งั หมด เมื่อได้ครบจึงจะเริ่ ม
ทำงำนได้
53
การป้ องกันการติดตาย (Deadlock Prevention)
วิธีที่ 2 : ถ้ำมีโปรเซสร้องขอทรัพยำกรบำงอย่ำงจำกระบบ ให้ระบบ
ตรวจสอบว่ำทรัพยำกรนั้นว่ำงหรื อไม่ ถ้ำไม่วำ่ ง ต้องตรวจสอบ
ต่อไปว่ำ ทรัพยำกรนั้นถูกครอบครองโดยโปรเซสใด และโปรเซส
นั้นกำลังรอทรัพยำกรชนิดอื่นหรื อไม่
ถ้ำใช่  ให้ระบบทำกำรแย่งชิงทรัพยำกรนั้นไปให้โปรเซสที่ร้องขอ
ถ้ำไม่ใช่  ให้โปรเซสที่ร้องขอนั้นรอจนกว่ำทรัพยำกรที่ตอ้ งกำรจะว่ำง
(โปรเซสไม่สำมำรถแย่งชิงทรัพยำกรได้)
54
การป้ องกันการติดตาย (Deadlock Prevention)
4. ปฏิเสธกำรรอแบบวงกลม (Denying the Circular Wait condition)
ระบบจะกำหนดหมำยเลขประจำให้แต่ละทรัพยำกร และเมื่อมีกำร
ร้องขอจำกโปรเซสใดๆ ต้องร้องขอเรี ยงตำมลำดับหมำยเลขประจำ
ทรัพยำกร
55
การหลีกเลีย่ งการติดตาย (Deadlock Avoidance)
เป็ นวิธีหนึ่งที่สำมำรถทำได้ ซึ่งจะทำให้กำรใช้งำนทรัพยำกร
ของระบบดีข้ ึน วิธีน้ ียอมนี้ให้กำรติดตำยมีโอกำสเกิดขึ้นได้ แต่
ระบบต้องมีวธิ ีจดั กำร อัลกอริ ธึมที่ใช้ในกำรหลีกเลี่ยงกำรติดตำย
ที่เป็ นที่รู้จกั คือ Dijkstra’s Banker’s Algorithm
56
การตรวจสอบการติดตาย (Deadlock Detection)
กำรตรวจสอบกำรติดตำย จะใช้อลั กอริ ธึมเข้ำมำใช้ในกำร
ตรวจสอบ รวมถึงมีอลั กอริ ธึมของกำรแก้ไขสถำนกำรณ์ติดตำย
ที่เกิดขึ้นด้วย แต่กำรใช้อลั กอริ ธึมในกำรตรวจสอบกำรติดตำย
จะทำให้เวลำกำรทำงำนของระบบเพิ่มมำกขึ้น ดังนั้นผูอ้ อกแบบ
ระบบปฏิบตั ิกำรจำเป็ นจะต้องมีกำรพิจำรณำว่ำจะให้มีกำร
ตรวจสอบกำรติดตำยในระบบปฏิบตั ิกำรด้วยหรื อไม่
57
การตรวจสอบการติดตาย (Deadlock Detection)
กราฟจัดสรรทรัพยากร(Resource Allocation Graphs)
• เรำสำมำรถอธิบำยกำรติดตำยโดยใช้แผนภำพ หรื อกรำฟของกำรจัดสรร
ทรัพยำกรได้ (directed graph) กรำฟดังกล่ำวประกอบไปด้วยโหนด 2
ประเภท
– โหนดโปรเซสแสดงเป็ นรู ปวงกลม
– โหนดทรัพยำกรที่แสดงเป็ นรู ปสี่ เหลี่ยม
58
แผนภาพแสดงการติดตาย
ลูกศรจำกโหนดทรัพยำกรชี้ไปหำโหนดโปรเซส
หมำยถึง ทรัพยำกรนั้นได้ถูกร้องขอและโปรเซสนั้นก็
ได้ใช้ไปแล้ว และกำลังถือครองอยู่ ในรู ปทรัพยำกร R
ในขณะนั้นถูกโปรเซส A ถือครองอยู่
59
แผนภาพแสดงการติดตาย
ลูกศรจำกโหนดโปรเซสชี้ไปหำโหนดทรัพยำกร
หมำยถึง โปรเซสในขณะนั้นกำลังรอคอยทรัพยำกร
นั้นอยู่ โปรเซส B กำลังรอทรัพยำกร S
60
แผนภาพแสดงการติดตาย
จากรู ป จะเห็นได้วำ่ มีวงจรอับเกิดขึ้น โปรเซส C
กำลังรอคอยที่จะใช้ทรัพยำกร T ซึ่งในขณะนั้นก็ถูก
ถือครองโดยโปรเซส D โปรเซส D เองไม่สำมำรถ
ปล่อยทรัพยำกร T ได้ เพรำะว่ำตัวเองก็กำลังรอคอย
ทรัพยำกร U ที่ถือครองโดยโปรเซส C เช่นกัน
โปรเซสทั้งสองก็จะรอคอยอย่ำงไม่มีที่สิ้นสุ ด แผน
ภำพวงกลมในกรำฟแสดงว่ำวงจรอับนั้นเกี่ยวข้อง
กับโปรเซสและทรัพยำกรที่มีเส้น กรำฟต่อกันเป็ น
ลูกโซ่ โดยจำกตัวอย่ำงในรู ปนั้น คือ วงจร C-T-DU-C
61
การกู้คนื จากการติดตาย (Deadlock Recovery)
ระบบที่เกิดกำรติดตำย จะไม่สำมำรถทำงำนต่อไปได้ จึงต้องมีวิธีกำร
กำจัดกำรติดตำยที่เกิดขึ้น เพื่อกูร้ ะบบกลับคืนสู่สภำพก่อนที่จะเกิดกำร
ติดตำย ซึ่งมี 2 วิธี ดังนี้
1. กำรยกเลิกโปรเซส สำมำรถทำได้ 2 วิธี คือ
- กำรยกเลิกทุกโปรเซสที่เกิดกำรติดตำย (Abort all deadlock process )
ข้อเสี ย คืออำจมีบำงโปรเซสที่ทำงำนใกล้เสร็ จแต่ตอ้ งถูกยกเลิกไป ทำ
ให้ตอ้ งเริ่ มทำงำนใหม่ เสี ยเวลำและค่ำใช้จ่ำยมำกขึ้น
62
การกู้คนื จากการติดตาย (Deadlock Recovery)
- กำรยกเลิกทีละหนึ่งโปรเซส (Abort one process at a time)
ยกเลิกทีละหนึ่งโปรเซส จนกว่ำกำรติดตำยจะถูกกำจัดออกไป โดยที่
หลังจำกยกเลิกหรื อกำจัดไปนั้น ระบบจะต้องเรี ยกอัลกอริ ธึมตรวจสอบ
กำรติดตำยใหม่ เพื่อตรวจสอบว่ำระบบยังมีกำรติดตำยอยูห่ รื อไม่ ทำให้
เปลืองค่ำใช้จ่ำยอื่นมำก ระบบจึงต้องตัดสิ้ นใจได้วำ่ จะยกเลิกโปรเซสใด
จะเสี ยค่ำใช้จ่ำยน้อยที่สุด และกำจัดกำรติดตำยออกไปได้
63
การกู้คนื จากการติดตาย (Deadlock Recovery)
ปั จจัยที่ตอ้ งคำนึงถึง เช่น
- ลำดับควำมสำคัญ
- ระยะเวลำที่โปรเซสถูกประมวลผลไปแล้ว และระยะเวลำที่
ต้องกำรใช้เพื่อให้งำนเสร็ จสิ้ น
- จำนวนทรัพยำกรที่โปรเซสต้องกำรเพิ่มเติม เพื่อใช้ในกำร
ประมวลผลให้งำนเสร็ จสมบูรณ์
64
การกู้คนื จากการติดตาย (Deadlock Recovery)
2. กำรแย่งชิงทรัพยำกรจำกโปรเซส เป็ นกำรแย่งชิงทรัพยำกรจำก
โปรเซสหนึ่งไปมอบให้อีกโปรเซสหนึ่ง ทำแบบนี้ไปเรื่ อยๆ จนกว่ำ
กำรติดตำยจะถูกกำจัดออกไป ในกำรแย่งชิงระบบจะต้องพิจำรณำเรื่ อง
ต่ำงๆ ต่อไปนี้
– กำรเลือกเหยือ่ (Selecting victim) คำนึงถึงค่ำใช้จ่ำย, โปรเซสที่
ครอบครองทรัพยำกรอยูน่ อ้ ย , โปรเซสที่เริ่ มทำงำนไปแล้วไม่มำก
– กำรถอยกลับ (Rollback) ถอยกลับไปยังสถำนะที่อยูห่ ่ำงกำรติดตำยที่สุด
– กำรอดตำย (Starvation) กำรเลือกเหยือ่ โดยคำนึงถึงค่ำใช้จ่ำย ทำให้เกิด
กำรแย่งชิงจำกโปรเซสเดิมตลอดเวลำ โปรเซสนั้นจึงทำงำนไม่ได้เลย65
แบบฝึ กหัดที่ 2.1
1. Process คืออะไร
2. องค์ประกอบของ Process ประกอบไปด้วยอะไรบ้ำง
3. สถำนะของ Process มีท้ งั หมดกี่สถำนะ อะไรบ้ำง
4. Threads คืออะไร มีส่วนประกอบอะไรบ้ำง
5. ข้อได้เปรี ยบของ Multithreaded มีอะไรบ้ำง
6. โมเดลของ Multithreaded มีกี่รูปแบบ อะไรบ้ำง
7. อธิบำยควำมแตกต่ำงระหว่ำงกำหนดกำรระยะยำว(long term
scheduling) กับกำหนดกำรระยะสั้น(short term scheduling)
66
แบบฝึ กหัดที่ 2.2
- หาเวลาคอยเฉลีย่ แบบ FCFS, SJF, Priority และ RR (เวลาควันตัม=2)
โปรเซส
เวลาที่ใช้
ลาดับความสาคัญ
P1
P2
P3
P4
P5
8
1
2
1
3
2
1
2
3
1
67
แบบฝึ กหัดที่ 2.3
1. กำรติดตำย (Deadlock) คืออะไร สำเหตุสำคัญมีอะไรบ้ำง อธิ บำย
และยกตัวอย่ำงประกอบ
2. กำรป้ องกันกำรเกิดวงจรอับมีวธิ ีใดบ้ำง
3. กรำฟกำรจัดสรรทรัพยำกรคืออะไร (ยกตัวอย่ำง+วำดรู ป
ประกอบ) มำ 3 แบบ
4. วิธีกำรคิดแบบนกกระจอกเทศ (Ostrich algorithm) คืออะไร
5. กำรกูค้ ืนจำกกำรติดตำย มีกี่วธิ ี อะไรบ้ำง
68
THE END
69