2.2
การจัดการตารางงานของซีพียู ( CPU Scheduling )
- CPU Utilization
2.2.1 ช่วงเวลากระท าของซีพียู และ ของอุปกรณ์น าเข้ากับส่งออก ( CPU – I/O Burst Cycle )
:
Load Store Add StoreRead from file
CPU burst I/O burst Store Increment index Write to file CPU burst I/O burst
:
รูปที่ 2.2.A ที่แสดงถึงช่วงเวลาการท างานของโปรเซสโดยซีพียูและ อุปกรณ์น าเข้ากับส่งออก2.2.2 การจัดการตารางงานแบบสามารถแย่งช่วงเวลาได้และแบบแย่งช่วงเวลาไม่ได้ ( Preemptive and Non-preemptive Scheduling ) 2.2.3 เกณฑ์พิจารณาการจัดการตารางงาน( Scheduling Criteria) - Best Algorithm 1. “CPU Utilization” 2. “Throughput” 3. “Turnaround time” 4. “Waiting time” 5. “Response time”
Wait for I/O
2.2.4 อัลกอลิทึ่มของจัดการตารางงาน( Scheduling Algorithm)
1. การจัดการตารางงานแบบมาก่อนได้ท าก่อน ( First-Come , First-Served Scheduling : FCFS) - Ready queue ( First-in First -out queue : FIFO queue )
ตัวอย่างที่ 2.2.ก
ถ้ามีโปรเซสทั้งหมดเข้ามาถึง Ready queue ที่เวลา 0 มิลลิวินาที(millisecond ) ตามล าดับคือ P1 , P2 , P3 โดยมีข้อมูลความต้องการเวลาให้ซีพียูกระท า( burst time )ของแต่ละโปรเซสเป็นดังนี้ และก าหนดหน่วยเวลา เป็นมิลลิวินาที ให้ท าการจัดการตารางงานแบบมาก่อนได้ท าก่อน( First-Come , First-Served Scheduling ) แล้วท าการค านวณหา Waiting time และ Turnaround time ของแต่ละโปรเซส รวมทั้ง Average waiting time
Process Burst time
P1 24 P2 3 P3 3 วิธีท า ท าการวาด แก็นท์ชาท ( Gantt chart ) ออกมาได้ดังนี้ P1 P2 P3 0 24 27 30
จะได้ว่า P1 มี Waiting time = 0 มิลลิวินาที และมี Turnaround time = ( 0 + 24 ) = 24 มิลลิวินาที P2 มี Waiting time = 24 มิลลิวินาที และมี Turnaround time = ( 24 + 3 ) = 27 มิลลิวินาที P3 มี Waiting time = 27 มิลลิวินาที และมี Turnaround time = ( 27 + 3 ) = 30 มิลลิวินาที ดังนั้น Average waiting time = ( 0 + 24 + 27 ) / 3 = 17 มิลลิวินาที
Ans
2. การจัดการตารางงานแบบมาทีหลังได้ท าก่อน ( Last-In / First-out Scheduling ) ตัวอย่างที่ 2.2.ข
ก าหนดให้ข้อมูลเหมือนกับตัวอย่าง 2.2.ก เพียงแต่ให้มีการจัดการตารางงานแบบมาทีหลังได้ท าก่อน ( Last-In / First-out Scheduling ) แล้วท าการค านวณหา Waiting time และ Turnaround time ของแต่ละโปรเซส รวมทั้ง Average waiting time เช่นกัน
วิธีท า ท าการวาด แก็นท์ชาท ออกมาได้ดังนี้
จะได้ว่า P1 มี Waiting time = 6 มิลลิวินาที และมี Turnaround time = ( 6 + 24 ) = 30 มิลลิวินาที P2 มี Waiting time = 3 มิลลิวินาที และมี Turnaround time = ( 3 + 3 ) = 6 มิลลิวินาที P3 มี Waiting time = 0 มิลลิวินาที และมี Turnaround time = ( 0 + 3 ) = 3 มิลลิวินาที ดังนั้น Average waiting time = ( 6 + 3 + 0 ) / 3 = 3 มิลลิวินาที
จะเห็นว่า จากข้อมูลของโปรเซสของทั้งสองตัวอย่างข้างต้นเหมือนกัน หากมีการจัดล าดับการเข้าท า ของโปรเซสให้แตกต่างกัน สามารถจะท าให้ระบบมีผลของ Average waiting time เปลี่ยนแปลงไปได้มากเช่นกัน
Ans
3. การจัดการตารางงานแบบงานสั้นท าก่อน ( Shortest – Job – First Scheduling : SJF ) ตัวอย่างที่ 2.2.ค
ถ้ามีโปรเซสทั้งหมดเข้ามาถึง Ready queue แล้วที่เวลา 0 มิลลิวินาที โดยมีข้อมูลความต้องการเวลาให้ ซีพียูกระท าของแต่ละโปรเซสเป็นดังนี้ และก าหนดหน่วยเวลาเป็นมิลลิวินาที ให้ท าการจัดการตารางงานแบบ งานสั้นท าก่อน ( Shortest – Job – First Scheduling ) แล้วท าการค านวณหา Waiting time และ Turnaround time ของแต่ละโปรเซส รวมทั้ง Average waiting time
Process Burst time
P1 6 P2 8 P3 7 P4 3 วิธีท า ท าการวาด แก็นท์ชาท ออกมาได้ดังนี้ P4 P1 P3 P2 0 3 9 16 24
จะได้ว่า P1 มี Waiting time = 3 มิลลิวินาที และมี Turnaround time = ( 3 + 6 ) = 9 มิลลิวินาที P2 มี Waiting time = 16 มิลลิวินาที และมี Turnaround time = ( 16 + 8 ) = 24 มิลลิวินาที P3 มี Waiting time = 9 มิลลิวินาที และมี Turnaround time = ( 9 + 7 ) = 16 มิลลิวินาที P4 มี Waiting time = 0 มิลลิวินาที และมี Turnaround time = ( 0 + 3 ) = 3 มิลลิวินาที ดังนั้น Average waiting time = ( 3 + 16 + 9 + 0 ) / 4 = 7 มิลลิวินาที
การจัดการตารางงานแบบงานสั้นท าก่อนนี้ สามารถพิจารณาได้เป็น 2 แบบ คือ แบบสามารถแย่งช่วง เวลาได้และแบบแย่งไม่ได้ ดังนี้
3(1). การจัดการตารางงานแบบเวลางานที่เหลือสั้นท าก่อน ( Shortest – Remaining -Time – First Scheduling )
- Preemptive SJF : ( arrival time ) ตัวอย่างที่ 2.2.ง
ถ้ามีโปรเซสต่างๆเข้ามาถึง Ready queue ตามเวลาที่มาถึง โดยมีข้อมูลความต้องการเวลาให้ ซีพียูกระท าของแต่ละโปรเซสเป็นดังนี้ และก าหนดหน่วยเวลาเป็นมิลลิวินาที ให้ท าการจัดการตารางงานแบบ เวลางานที่เหลือสั้นท าก่อน ( Shortest – Remaining -Time – First Scheduling ) หรือ Preemptive SJF นั่นเอง แล้วท าการค านวณหา Waiting time และ Turnaround time ของแต่ละโปรเซส รวมทั้ง Average waiting time
Process Arrival time Burst time
P1 0 8 P2 1 4 P3 2 9 P4 3 5 วิธีท า ท าการวาด แก็นท์ชาท ออกมาได้ดังนี้ P1 P2 P4 P1 P3 0 1 5 10 17 26
P1 มี Waiting time = 10-1 = 9 มิลลิวินาที และมี Turnaround time = ( 9 + 8 ) = 17 มิลลิวินาที P2 มี Waiting time = 1-1 = 0 มิลลิวินาที และมี Turnaround time = ( 0 + 4 ) = 4 มิลลิวินาที P3 มี Waiting time = 17-2 = 15 มิลลิวินาที และมี Turnaround time = ( 15 + 9 ) = 24 มิลลิวินาที P4 มี Waiting time = 5-3 = 2 มิลลิวินาที และมี Turnaround time = ( 2 + 5 ) = 7 มิลลิวินาที ดังนั้น Average waiting time = ( 9 + 0 + 15 + 2 ) / 4 = 6.5 มิลลิวินาที
3(2). การจัดการตารางงานแบบแย่งช่วงเวลาไม่ได้ของงานสั้นท าก่อน ( Non-preemptive Shortest – Job – First Scheduling : Non-preemptive SJF )
ตัวอย่างที่ 2.2.จ
ก าหนดให้ข้อมูลเหมือนกับตัวอย่าง 2.2.ง เพียงแต่ให้มีการจัดการตารางงานแบบแย่งช่วงเวลาไม่ได้ของ งานสั้นท าก่อน ( Non-preemptive SJF ) แล้วท าการค านวณหา Waiting time และ Turnaround time ของแต่ละโปรเซส รวมทั้ง Average waiting time เช่นกัน
วิธีท า ท าการวาด แก็นท์ชาท ออกมาได้ดังนี้ P1 P2 P4 P3 0 8 12 17 26
P1 มี Waiting time = 0-0 = 0 มิลลิวินาที และมี Turnaround time = ( 0 + 8 ) = 8 มิลลิวินาที P2 มี Waiting time = 8-1 = 7 มิลลิวินาที และมี Turnaround time = ( 7 + 4 ) = 11 มิลลิวินาที P3 มี Waiting time = 17-2 = 15 มิลลิวินาที และมี Turnaround time = ( 15 + 9 ) = 24 มิลลิวินาที P4 มี Waiting time = 12-3 = 9 มิลลิวินาที และมี Turnaround time = ( 9 + 5 ) = 14 มิลลิวินาที
ดังนั้น Average waiting time = ( 0 + 7 + 15 + 9 ) / 4 = 7.75 มิลลิวินาที
4. การจัดการตารางงานแบบงานยาวท าก่อน ( Longest – Job – First Scheduling )
ตัวอย่างที่ 2.2.ฉ
ก าหนดให้ข้อมูลเหมือนกับตัวอย่าง 2.2.ค เพียงแต่ให้มีการจัดการตารางงานแบบงานยาวท าก่อน ( Longest – Job – First Scheduling ) แล้วท าการค านวณหา Waiting time และ Turnaround time ของแต่ละโปรเซส รวมทั้ง Average waiting time เช่นกัน
วิธีท า ท าการวาด แก็นท์ชาท ออกมาได้ดังนี้
P2 P3 P1 P4
0 8 15 21 24
จะได้ว่า P1 มี Waiting time = 15 มิลลิวินาที และมี Turnaround time = ( 15 + 6 ) = 21 มิลลิวินาที P2 มี Waiting time = 0 มิลลิวินาที และมี Turnaround time = ( 0 + 8 ) = 8 มิลลิวินาที P3 มี Waiting time = 8 มิลลิวินาที และมี Turnaround time = ( 8 + 7 ) = 15 มิลลิวินาที P4 มี Waiting time = 21 มิลลิวินาที และมี Turnaround time = ( 21 + 3 ) = 24 มิลลิวินาที ดังนั้น Average waiting time = ( 15 + 0 + 8 + 21 ) / 4 = 11 มิลลิวินาที
Ans
5. การจัดการตารางงานแบบล าดับความส าคัญ ( Priority Scheduling ) - high priority -> low priority ( low number , high number) ตัวอย่างที่ 2.2.ช
ถ้ามีโปรเซสทั้งหมดเข้ามาถึง Ready queue ที่เวลา 0 มิลลิวินาทีตามล าดับคือ P1 , P2 , P3 , P4 , P5 โดยมี ข้อมูลความต้องการเวลาให้ซีพียูกระท าและล าดับความส าคัญ(Priority)ของแต่ละโปรเซสเป็นดังนี้ และก าหนด หน่วยเวลาเป็นมิลลิวินาที รวมทั้งให้ใช้เลขค่าต่ า(low number)หมายถึงมีความส าคัญมาก ให้ท าการจัดการตาราง งานแบบล าดับความส าคัญ ( Priority Scheduling ) แล้วท าการค านวณหา Waiting time และ Turnaround time ของแต่ละโปรเซส รวมทั้ง Average waiting time
Process Burst time Priority
P1 10 3
P2 1 1
P3 2 3
P4 1 4
ก าหนดว่า ถ้าล าดับความส าคัญเท่ากันให้พิจารณาเรียงตามล าดับโปรเซสที่เข้ามา( หรือหมายเลขโปรเซส ) วิธีท า ท าการวาด แก็นท์ชาท ออกมาได้ดังนี้ P2 P5 P1 P3 P4 0 1 6 16 18 19 ได้ผล ดังนี้
P1 มี Waiting time = 6 มิลลิวินาที และมี Turnaround time = ( 6 + 10 ) = 16 มิลลิวินาที P2 มี Waiting time = 0 มิลลิวินาที และมี Turnaround time = ( 0 + 1 ) = 1 มิลลิวินาที P3 มี Waiting time = 16 มิลลิวินาที และมี Turnaround time = ( 16 + 2 ) = 18 มิลลิวินาที P4 มี Waiting time = 18 มิลลิวินาที และมี Turnaround time = ( 18 + 1 ) = 19 มิลลิวินาที P5 มี Waiting time = 1 มิลลิวินาที และมี Turnaround time = ( 1 + 5 ) = 6 มิลลิวินาที
ดังนั้น Average waiting time = ( 6 + 0 + 16 + 18 + 1 ) / 5 = 8.2 มิลลิวินาที
Ans 6. การจัดการตารางงานแบบราวด์โรบิน ( Round-Robin Scheduling : RR )
- time-sharing system : ( time quantum , time slice : 10 - 100 มิลลิวินาที ) ( FCFS Scheduling , preemption )
( ready queue : circular queue ) ตัวอย่างที่ 2.2.ซ
ถ้ามีโปรเซสทั้งหมดเข้ามาถึง Ready queue ที่เวลา 0 มิลลิวินาที ตามล าดับคือ P1 , P2 , P3 โดยมีข้อมูล
ความต้องการเวลาให้ซีพียูกระท าของแต่ละโปรเซสเป็นดังนี้ และก าหนดหน่วยเวลาเป็นมิลลิวินาที ให้ท าการ จัดการตารางงานแบบราวด์โรบิน ( Round-Robin Scheduling : RR ) และเวลาควอนตัมเท่ากับ 4 มิลลิวินาที แล้วท าการค านวณหา Waiting time และ Turnaround time ของแต่ละโปรเซส รวมทั้ง Average waiting time
Process Burst time
P1 24 P2 3 P3 3 วิธีท า ท าการวาด แก็นท์ชาท ออกมาได้ดังนี้ P1 P2 P3 P1 P1 P1 P1 P1
จะได้ P1 มี Waiting time = 0 +(10-4) = 6 มิลลิวินาที และมี Turnaround time = ( 6 + 24 ) = 30 มิลลิวินาที P2 มี Waiting time = 4 มิลลิวินาที และมี Turnaround time = ( 4 + 3 ) = 7 มิลลิวินาที P3 มี Waiting time = 7 มิลลิวินาที และมี Turnaround time = ( 7 + 3 ) = 10 มิลลิวินาที
ดังนั้น Average waiting time = ( 6 + 4 + 7 ) / 3 = 5.66 มิลลิวินาที
Ans
7. การจัดการตารางงานแบบคิวหลายระดับ ( Multilevel Queue Scheduling ) 7(1). มี คิว 2 ระดับ คือ ฟอร์กราวด์( forground ) และ แบ็คกราวด์( background ) forground : interactive , RR
background : batch , FCFS
7(2). มี คิว 5 ระดับ คือ ซิสเต็ม(System ), อินเตอร์แอกทีฟ(Interactive), อินเตอร์แอกทีฟอิดิทิ่ง (Interactive editing ) , แบ็ตช์( Batch) และ สติวเด้น( Student )
เป็นการเพิ่มจ านวนคิวมากขึ้นเพื่อรองรับประเภทหรือลักษณะการท างานของโปรเซสให้มากขึ้น โดยเรียงตามล าดับความส าคัญของโปรเซส ดังรูปที่ 2.2.C โดยแต่ละโปรเซสก็จะแยกกันเข้าที่คิวแตกต่างกัน
High priority low priority รูปที่ 2.2.B คิวหลายระดับ แบบ 2 ระดับ
Highest priority lowest priority รูปที่ 2.2.C คิวหลายระดับ แบบ 5 ระดับ System processes Interactive processes
Interactive editing processes
Batch processes
Student processes
Foreground
8. การจัดการตารางงานแบบคิวป้อนกลับหลายระดับ (Multilevel Feedback Queue Scheduling )
รูปที่ 2.2.D คิวป้อนกลับหลายระดับ
Quantum = 8 Quantum = 16 FCFS
อัลกอลิทึ่มหลักต่างๆที่กล่าวมาทั้งหมดของจัดการตารางงาน มีตัวอย่างของการค านวณโดยวาดใน ลักษณะของตารางเวลาการท างานของโปรเซสโดยซีพียู แทนแก็นชาต์ท ดังนี้ ตัวอย่างที่ 2..2.ฌ โปรเซส A , B ,C ,D, E มีข้อมูลให้มาดังนี้ แล้วท าการจัดตารางงาน(Scheduling)แบบ FCFS , SJF , SRTF ( หากโปรเซสที่จะถูกเลือกมีมากกว่า 1 โปรเซส ให้ใช้หลักการของ FCFS เข้าเสริมเพื่อประกอบการ ตัดสินใจ ) โดยวาดในลักษณะของตารางเวลาการท างานของโปรเซสโดยซีพียู แทนแก็นชาต์ท และค านวณหา ว่า Finish time , Waiting time และ Turnaround time ของแต่ละโปรเซส รวมทั้ง Average waiting time , Average turnaround time นี้ ( ก าหนดหน่วยเวลาเป็นมิลลิวินาที )
Process Arrival time Burst time
A 0 3 B 2 6 C 4 4 D 6 5 E 8 2 วิธีท า ท าการวาดตารางเวลาได้ดังนี้ 0 5 10 15 20 FCFS A B C D E SJF A B C D E SRTF A B C D E
แล้วท าการค านวณค่าต่างๆได้ดังผลตารางต่อไปนี้
Process A B C D E Average
Scheduling Arrival time 0 2 4 6 8
Burst time 3 6 4 5 2 FCFS Finish time 3 9 13 18 20 Turnaround time 3 7 9 12 12 8.60 Wait time 0 1 5 7 10 4.60 SJF Finish time 3 9 15 20 11 Turnaround time 3 7 11 14 3 7.60 Wait time 0 1 7 9 1 3.60 SRTF Finish time 3 15 8 20 10 Turnaround time 3 13 4 14 2 7.20 Wait time 0 7 0 9 0 3.20 Ans