Transcript ภาพนิ่ง 1
Advanced Operating System
Operating System Technology
การจัดลาดับงานของหน่ วยประมวลผลกลาง
CPU Scheduling
CPU Scheduling
เนือ้ หา
- แนวคิดพืน้ ฐาน (Basic Concepts)
- เกณฑ์ การจัดตารางเวลาการทางาน (Scheduling Criteria)
-วิธีการจัดตารางเวลาการทางาน(Scheduling Algorithms)
- การจัดตารางการทางานแบบคิว (Queue Scheduling)
- การจัดตารางงานของมัลติโปรเซสเซอร์ หรือหน่ วยประมวลผลแบบ
หลายตัว (Multiple-Processor Scheduling)
- การจัดตารางงานแบบเรียลไทม์ (Real-Time CPU
Scheduling)
- การประเมินวิธีการ (Algorithm Evaluation)
Basic Concepts
- เป็ นหลักการพื้นฐานสาหรับระบบปฏิบตั กิ ารแบบ
Multiprogrammed
• จุดประสงค์ของการรันโปรแกรมหลายโปรแกรมคือ ความต้องการทีจ่ ะให้ซพี ยี ูมี
การทางานตลอดเวลา เพือ่ ให้มกี ารใช้ซพี ยี ูอย่างเต็มทีแ่ ละเต็มประสิทิิาาพ
•ใช้เวลาให้คมุ ้ ค่า กระบวนการหลายๆ กระบวนการถูกเก็บในหน่วยความจาครัง้
เดียว
•เมือ่ มีกระบวนการรอ ระบบจะสับเปลีย่ นหน่วยประมวลผลกลางให้อกี กระบวนการ
หนึ่งแทน
Basic Concepts
ช่ วงประมวลผล/ช่ วงรับส่ งข้ อมูล
- การจัดตารางการทางานทีด่ ี ต้องทราบลักษณะการทางานของกระบวนการ
- กระบวนการทัว่ ไปจะทางานเป็ นวงจรคือ ทางานในหน่วยประมวลผล และรอคอย
การรับ-ส่งขอ้ มูลจากอุปกรณ์สลับกันไป
- โดยเริ่มต้นทีท่ างานในหน่วยประมวลผลก่อนเรียกว่า ช่วงประมวลผล (CPUburst) แล ้วก็จะหยุดเพือ่ ทางานในอุปกรณ์รบั -ส่งขอ้ มูลเรียกว่า ช่วงรับส่งข้อมูล
(I/O burst) แล ้วตามด้วยช่วงประมวลผลอีกสลับกันไปจนสิ้นสุดกระบวนการ
- ควรกระจายการดาเนินการหน่วยประมวลผลให้เท่าเทียมกัน
Alternating Sequence of CPU And I/O Bursts
Histogram of CPU-burst Times
ตัวจัดตารางการทางานของหน่ วยประมวลผลกลาง
(CPU Scheduler )
- ผูเ้ ลือกกระบวนการในแถวพร้อม (ready queue) เพือ่ เข้าไปใช้งาน
หน่วยประมวลผลกลาง
- ใช้ตวั จัดตารางระยะสัน้ หรือตัวจัดตารางการทางานของหน่วยประมวลผลกลาง
ตัวจัดตารางการทางานของหน่ วยประมวลผลกลาง
(CPU Scheduler )
ตัวจัดตารางการทางานระยะสัน้ (short–term scheduler) จะเลือก
โปรเซสทีอ่ ยู่ในคิวทีพ่ ร้อมในการประมวลผล เพือ่ ให้ครอบครองเวลาซีพยี ู
และทรัพยากรทีเ่ กี่ยวข้องกับโปรเซสนัน้
อย่างไรก็ตามโปรเซสทุกโปรเซสทีพ่ ร้อมใช้ซพี ยี ู จะต้องมีโอกาสได้เข้า
ครอบครองเวลาซีพยี ูไม่เวลาใดก็เวลาหนึ่ง
การเข้าและออกจากการครอบครองเวลาซีพยี ูแต่ละครัง้ จาเป็ นต้องมีการ
เก็บข้อมูลไว้เสมอว่าเข้ามาทาอะไร ต่อไปจะทาอะไร
การจัดตารางการทางานของหน่ วยประมวลผลกลาง
• การตัดสินใจในการจัดตารางการทางานหน่วยประมวลผลกลางก่อนหลัง เกิดขึ้นเมือ่
โปรเซสมีเหตุการณ์ดงั ต่อไปนี้
1) เมือ่ เกิดการเปลีย่ นแปลงสถานะจากกาลังทางาน (running)ไปเป็ น
สถานะการรอคอย (waiting)
2) เมือ่ เกิดการเปลีย่ นแปลงสถานะจากกาลังทางาน (running) ไปเป็ น
สถานะพร้อมทีจ่ ะเข้าทางาน (ready)
3) เมือ่ เกิดการเปลีย่ นแปลงสถานะจากรอคอย(waiting)ไปเป็ นสถานะ
พร้อม (ready)
4) เมือ่ โปรเซสสิ้นสุดการทางาน
การจัดลาดับการทางานของหน่ วยประมวลผลกลาง
• การจัดลาดับการทางานเหตุการณ์แบบ 1)และแบบ 4) เรียกว่า แบบไม่ให้
แทรกกลางคัน (non-preemptive) ระบบจะตองเลื
อก
้
กระบวนการเขามาท
างาน ไม่คานึงถึงลาดับความสาคัญของ
้
กระบวนการ
• การจัดลาดับการทางานแบบอืน่ ๆ เป็ นแบบให้แทรกกลางคัน
(preemptive) หรือคานึงถึงความสาคัญของกระบวนการ
• ก่อให้เกิดค่าใช้จ่าย กรณีมกี ารแชร์ขอ้ มูลกันระหว่างสองกระบวนการ ต้องมี
กลไกประสานการทางาน
การจัดตารางแบบให้ แทรกกลางคัน (Preemptive Scheduling)
การจัดเวลาแบบให้สทิ ิิ์ก่อนนัน้ มีผลกระทบต่อการออกแบบ Kernel ของ
ระบบปฏิบตั กิ ารเป็ นอย่างมาก
ในระหว่างการเกิด system call นัน
้ Kernel อาจจะยังไม่วา่ ง อาจจะกาลัง
ทางานในการจัดคิวโปรเซสอยู่
UNIX และบางระบบปฏิบต
ั กิ ารมีการแก้ปญั หานี้
ให้ System call สิ้นสุดเอง หรือไม่ก็คอยจนกว่าจะมีการบล็อกการทางานของ
อินพุต/เอาต์พตุ เกิดขึ้น แล ้วจึงมีการทาสลับการทางาน
การจัดตารางแบบไม่ ให้ แทรกกลางคัน
(Non-Preemptive Scheduling)
- เมือ่ กระบวนการได้ใช้หน่วยประมวลผลกลางแล ้ว กระบวนการสามารถใช้จนกระทัง่
กระบวนการสิ้นสุดหรือเปลีย่ นเป็ นสถานะรอคอย จึงจะคืนหน่วยประมวลผลกลางกลับ
ให้แก่ระบบ
- วิินี ้ ใี ช้ใน Window 3.1 และ Macintosh
ตัวจัดการการทางานของระบบ (Dispatcher)
- ให้การควบคุมการทางานของหน่วยประมวลผลกลาง กับโปรเซสทีถ่ กู เลือกจากตัวจัด
ตารางระยะสัน้ เกี่ยวกับ
- สลับสาาวะการทางาน (context switch)
- สลับการทางานไปสู่โหมดผูใ้ ช้งาน (user mode)
- ย้ายไปยังพื้นทีใ่ นการทางานของโปรแกรมผูใ้ ช้งานนัน้ ๆ
-Dispatch latency หมายถึง เวลาทีต่ วั จัดการการทางานหยุดกระบวนการ
หนึ่งและเริ่มต้นการทางานอีกกระบวนการหนึ่ง
เกณฑ์ การจัดตารางเวลาการทางาน (Scheduling Criteria)
- การใช้งานหน่วยประมวลผลกลางให้เกิดประโยชน์สูงสุด (CPU utilization)
หมายถึงการทาให้หน่วยประผลกลางถูกทางานหรือใช้งานได้เต็มประสิทิิาาพมากสุด
- ผลสัมฤทิิ์ (Throughput) หมายถึง จานวนโปรเซสทีส่ ามารถทางานเสร็จสิ้น
หรือประมวลผลเสร็จสิ้นต่อหนึ่งหน่วยเวลา
- เวลารอบงาน (Turnaround time) หมายถึงเวลาทีแ่ ต่ละโปรเซสใช้ในการ
ประมวลผล
- เวลารอคอย (Waiting time) หมายถึงเวลาทีโ่ ปรเซสต้องรอคอยอยู่ในคิวที่
พร้อมจะเข้าทางาน
-เวลาในการตอบสนอง (Response time) หมายถึงเวลาทัง้ สิ้นทีใ่ ช้ไป
นับตัง้ แต่คาสัง่ ร้องขอเกิดขึ้นจนกระทัง่ เกิดการตอบสนองต่อคาสัง่ ร้องขอนัน้
เกณฑ์ ในการทาให้ เกิดประสิทธิภาพสูงสุด (Optimization Criteria)
- การใช้งานหน่วยประมวลผลให้เต็มประสิทิิาาพมากทีส่ ุด Max CPU
utilization
- ทาให้เกิดผลสัมฤทิิ์ในการทางานสูงสุด Max throughput
- ลดระยะรอบเวลาการทางานให้นอ้ ยทีส่ ุด Min turnaround time
- ลดระยะเวลาการรอคอยให้นอ้ ยทีส่ ุด Min waiting time
- ลดระยะเวลาในการตอบสนองให้นอ้ ยทีส่ ุด Min response time
เกณฑ์ ในการทาให้ เกิดประสิทธิภาพสูงสุด (Optimization Criteria)
สิง่ ทีผ่ ูอ้ อกแบบระบบการจัดตารางเวลาต้องการคือ การทาให้เวลาการทางาน
สัน้ ทีส่ ุดนัน่ เอง
ในความเป็ นจริง
เราไม่สามารถทีจ่ ะได้ระบบทีส่ ามารถทาให้มกี ารใช้ซพี ยี ูได้สูงสุด โดยทีม่ ที รูพตุ
มากทีส่ ุด มีเวลารวมเร็วทีส่ ุด และได้เวลาตอบสนองเร็วทีส่ ุดได้พร้อมๆ กัน
ดังนัน้ การหาจุดพอดีจากค่าเฉลีย่ ของคุณสมบัตแิ ต่ละชนิดจึงมีความจาเป็ น
ซึง่ บางครัง้ อาจจะต้องมีการกาหนดจุดทีย่ อมรับได้ไว้ทจ่ี ดุ ใดจุดหนึ่ง ถ้าหาก
ว่าไม่สามารถหาค่าเฉลีย่ ได้
การจัดตารางการทางานแบบมาก่อนให้ บริ การก่อน (First-Come,
First-Served Scheduling; FCFS)
การจัดตารางการทางานแบบเวลาในการทางานสันที
้ ่สดุ ให้ ทาก่อน
(Shortest-Job-First Scheduling; SJF)
การจัดตารางการทางานแบบคานึงถึงระดับความสาคัญ (Priority
Scheduling)
การจัดตารางการทางานแบบวนรอบ (Round Robin
Scheduling; RR)
การจัดตารางการทางานแบบมาก่อนให้ บริการก่อน
First-Come, First-Served Scheduling (FCFS)
โปรเซสใดที่ร้องขอใช้ ซีพียกู ่อนก็จะได้ รับการจัดสรรให้ ครอบครอง
เวลาซีพียกู ่อน
ผลเสียของอัลกอริทมึ นี ้คือค่าเฉลี่ยของการคอยในคิวแบบมาก่อนได้
ก่อนนี ้ค่อนข้ างจะสูง
Process Burst Time
P1
24
P2
3
P3
3
Suppose that the processes arrive in the order: P1 , P2 , P3
The Gantt Chart for the schedule is:
P1
0
P2
24
Waiting time for P1 = 0; P2 = 24; P3 = 27
Average waiting time: (0 + 24 + 27)/3 = 17
P3
27
30
Suppose that the processes arrive in the order:
P2 , P3 , P1
The Gantt chart for the schedule is:
P2
0
P3
3
P1
6
Waiting time for P1 = 6; P2 = 0; P3 = 3
Average waiting time: (6 + 0 + 3)/3 = 3
Much better than previous case
30
-เกิดปัญหา Convoy effect หมายถึง ต้องรอกระบวนการใหญ่เพียง
กระบวนการเดียวใช้งานเสร็จแล ้วจึงปล่อยหน่วยประมวลผลคืนสู่ระบบ
- ประสิทิิผลในการทางานของหน่วยประมวลผลและอุปกรณ์ตา่ ลง
- เป็ นการทางานทีไ่ ม่สามารถแทรกกลางคันได้
การจัดตารางการทางานแบบเวลาในการทางานสันที
้ ่สดุ ให้ ทาก่อน
Shortest-Job-First Scheduling (SJF)
ในการจัดตารางการทางานจะพิจารณาจากโปรเซสทีใ่ ช้ระยะเวลาทีส่ นั้ ทีส่ ุด แบ่งออกเป็ น
สองแบบคือ
- Non-preemptive คือการทางานทีห่ น่วยประมวลผลจะให้โปรเซส
ทางานจนเสร็จสิ้นโดยไม่คานึงถึงระดับความสาคัญ
- Preemptive คือการทางานทีพ่ จิ ารณาถึงระดับความสาคัญ เมือ่ เกิดโปรเซส
ขึ้นใหม่ทใ่ี ช้ระยะเวลาในการทางานสัน้ กว่าโปรเซสเดิมทีก่ าลังทางานอยู่ หน่วยประมวลผล
จะให้โปรเซสใหม่ทเ่ี กิดขึ้นเข้าทางานก่อน และให้โปรเซสเดิมทีต่ อ้ งใช้เวลาในการทางาน
นานกว่าหยุดการทางานโดยชัว่ คราว หรือเรียกว่า Shortest-Remaining-Time (SRT)
การจัดตารางการทางานแบบเวลาในการทางานสันที
้ ่สดุ ให้ ทาก่อน
Shortest-Job-First Scheduling (SJF)
- การทางานด้วยวิินี ้ สี ามารถช่วยลดระยะเวลาในการรอคอยของแต่ละโปรเซสโดยรวม
เฉลีย่ ลดลง
- ความยากคือ จะต้องทราบเวลาของการร้องขอใช้งาน CPU โปรเซสต่อไป
Process
P1
P2
P3
P4
SJF scheduling chart
P4
0
Burst Time
6
8
7
3
P1
3
P3
9
P2
16
Average waiting time = (3 + 16 + 9 + 0) / 4 = 7
24
Now we add the concepts of varying arrival times
and preemption to the analysis
Process Arrival Time Burst Time
P1
0
P2
1
P3
2
P4
3
Preemptive SJF Gantt Chart
P1
0
P2
1
P4
5
8
4
9
5
P1
10
P3
17
26
Average waiting time = [(10-1)+(1-1)+(17-2)+5-3)]/4
= 26/4 = 6.5 msec
การจัดตารางการทางานแบบคานึงถึงระดับความสาคัญ
Priority Scheduling
จานวนของระดับความสาคัญ เป็ นจานวนเต็ม (integer) จะสัมพันิ์กบั แต่ละ
โปรเซส โปรเซสทีเ่ ข้าใช้งานหน่วยประมวลผลจะต้องมีระดับความสาคัญสูงสุด คือ ค่า
Integer น้อยสุด
• ถ้ามีงานทีม่ ลี าดับความสาคัญเท่ากัน ก็จะมีการนาเอามาก่อนได้ก่อน FCFS มาใช้
• Preemptive จะแทรกได้ต่อเมือ่ กระบวนการทีเ่ ข้ามาใหม่มี
ความสาคัญสูงกว่ากระบวนการเดิม
• Non-preemptive จะนากระบวนการใหม่ไปไว้ทห่ี วั แถวของ
ready queue แทน
การจัดตารางการทางานแบบคานึงถึงระดับความสาคัญ
Priority Scheduling
- ปัญหาคือ โปรเซสทีร่ ะดับความสาคัญตา่ สุดอาจไม่ได้รบั การประมวลผลหรือไม่ถกู
เอ็กซ์ซคี วิ ท์เลย เรียก ปัญหาการแช่เย็น(Starvation) หรือรอคอยชัว่ นิรนั ดร์
- กระบวนการทีค่ วามสาคัญสูงเข้ามาเรื่อยๆ จนความสาคัญตา่ ไม่ได้ทางานเลย
- อาจจะได้ทางานเมือ่ งานในระบบน้อยลง
- ระบบทางานไปจนเสียและงานนัน้ ๆ ก็จะสาบสูญไป เช่น ระบบ Rumor
บนเครื่อง IBM 9074 ที่ MIT ปี 1973
- แก้ปญั หาโดยการกาหนดให้เวลาทีส่ ูญเสียในการรอคอยจะไปเพิม่ ระดับความสาคัญ
ของโปรเซสนัน้ ให้มากขึ้น (Aging)
การจัดตารางการทางานแบบคานึงถึงระดับความสาคัญ
Priority Scheduling
เช่น สมมติวา่ เรามีการออกแบบให้มลี าดับความสาคัญจาก 0-127 ขัน้ เราอาจจะเพิม่
อัลกอริทมึ พิเศษลงไปว่า
ถ้าโปรเซสใดคอยครบ 15 นาที ก็ให้ลดตัวเลขลาดับขัน้ ลงทีละขัน้ และ
จะลดลงไปเรื่อย ๆ ทุก ๆ 15 นาที
แม้โปรเซสทีเ่ ข้ามาในระบบมีลาดับความสาคัญตา่ สุดที่ 127 ก็จะมีโอกาส
เข้าไปใช้ซพี ยี ูาายในเวลาไม่เกิน 32 ชัว่ โมง เพราะในทีส่ ุดโปรเซสนี้ก็จะมีลาดับ
ความสาคัญเท่ากับ 0
Process Burst Time
P1
10
P2
1
P3
2
P4
1
P5
5
Priority
3
1
4
5
2
Priority scheduling Gantt Chart
Average waiting time = (0 + 1 + 6 + 16 + 18) / 5
= 8.2 msec
การจัดตารางการทางานแบบวนรอบ (Round Robin Scheduling; RR)
•กาหนดให้แต่ละโปรเซสได้รบั เวลาในการประมวลผลหรือเวลาทีส่ ามารถเข้าใช้หน่ วย
ประมวลผลระยะสัน้ ๆ เท่าๆ กัน เรียกว่าส่วนแบ่งเวลา (time quantum,
q)
•ประมาณ 10 – 100 มิลลิวนิ าที
• เมือ่ แต่ละโปรเซสใช้เวลาทีต่ นเองได้รบั หมดไป โปรเซสนัน้ ก็จะต้องหยุดทางานและถูก
ย้ายกลับเข้าไปอยู่ยงั ลาดับสุดท้ายของคิวพร้อมทางานเพือ่ การรอคอยเข้าทางานอีกครัง้
วนรอบเช่นนี้จนจบการทางาน
•ไม่มกี ระบวนการใดได้รบั ช่วงเวลาทางานมากกว่า 1 ส่วนแบ่งเวลา
การจัดตารางการทางานแบบวนรอบ (Round Robin; RR)
ถ้ามี
- จานวนโปรเซส (n) อยู่ในคิวพร้อมทางาน
- ส่วนแบ่งเวลา (q)
- แต่ละโปรเซสจะได้เวลาเพือ่ การเข้าใช้งานหน่วยประมวลผลเป็ น 1/n ของเวลาที่
หน่วยประมวลผลสามารถประมวลผลในหนึ่งช่วงเวลา
ดังนัน้ จึงไม่มโี ปรเซสใดทีจ่ ะต้องรอนานเกินกว่า (n-1)q หน่วยเวลา
-เช่น ถ้ามีโปรเซส 5 โปรเซส และระยะเวลาควันตัมคือ 20 วินาที แต่ละโปรเซส
จะต้องคอยในคิวโดยเฉลีย่ ประมาณไม่เกิน 80 วินาที เพราะว่าการคอยอาจจะน้อย
กว่านี้ ถ้าหากว่ามีโปรเซสใด ๆ สามารถทางานเสร็จโดยใช้เวลาน้อยกว่าเวลา
ควันตัมนัน่ เอง
Process Burst Time
P1
24
P2
3
P3
3
The Gantt chart is:
P1
0
P2
4
P3
7
P1
10
P1
14
P1
18
P1
22
[(10-4)+4+7] / 3 = 17/3 = 5.67 วินาที
P1
26
30
การจัดตารางการทางานแบบวนรอบ ( Round Robin; RR )
- ประสิทิิผลขึ้นอยู่กบั
- q มีขนาดใหญ่ FCFS
- q ทีม่ ขี นาดเล็ก เป็ นการแบ่งปันการประมวลผล ซึง่ มี Overhead สูง
เวลาควอนตัม กับเวลาในการสลับสภาพแวดล้ อม
Time Quantum and Context Switch Time
การจัดตารางการทางานแบบวนรอบ (RR : Round-Robin Scheduling)
ประสิทิิาาพของการวนรอบขึ้นอยู่กบั การกาหนดขนาดของควันตัม
ถ้าขนาดของควันตัมใหญ่หรือนานเกินไป ประสิทิิาาพของการวนรอบก็จะ
ใกล ้เคียงกับแบบมาก่อนได้ก่อน
ถ้าขนาดของควันตัมเล็กมากเกินไป ทรูพตุ (throughput) ของระบบก็จะ
ช้าลง เนื่องจากการสลับโปรเซสเข้าและออกจากการครอบครองซีพยี ู จะต้อง
เสียเวลาบางส่วนในการทา Dispatcher
ถ้าขนาดของควันตัมเล็กใกล ้เคียงกับเวลาของ Dispatcher เวลาของระบบ
รวมก็จะหมดไปกับการสลับโปรเซส(Context Switch) นัน่ เอง
การจัดตารางการทางานของคิวแบบหลายระดับ (Multilevel
Queue Scheduling)
การจัดตารางการทางานของคิวผลตอบกลับหลายระดับ
(Multilevel Feedback Queue Scheduling)
การจัดลาดับการทางานของคิวแบบหลายระดับ
Multilevel Queue Scheduling
เป็ นการจัดเวลาของซีพยี ูอกี แบบหนึ่งสาหรับระบบทีส่ ามารถแบ่งระดับชัน้
ของงานได้อย่างชัดเจน
งานในคิวพร้อมทางานแบ่งได้เป็ น
งานทีเ่ ป็ น Foreground หรืองานโต้ตอบ(Interactive) กับงานทีเ่ ป็ น
Background หรือแบบกลุม่ (Batch)
งานทัง้ สองแบบนี้ตอ้ งการเวลาตอบสนอง (Response time) ที่
แตกต่างกัน ซึง่ สามารถใช้ระบบการจัดเวลาทีแ่ ตกต่างกันได้
การจัดตารางการทางานของคิวแบบหลายระดับ
Multilevel Queue Scheduling
38
ใช้วิิ แี บ่งคิวออกเป็ นหลาย ๆ ระดับโดยทีแ่ ต่ละระดับหมายถึงระดับโปรเซสทีม่ ี
ความสาคัญแตกต่างกัน
การแบ่งระดับความสาคัญของโปรเซสนัน้ สามารถแบ่งได้หลายลักษณะ เช่นแบ่ง
ตามขนาดโปรเซส, จานวนหน่วยความจาทีต่ อ้ งใช้ หรือจานวนอินพุต/เอาต์พตุ
เป็ นต้น
แต่ละคิวยังสามารถใช้หลักการจัดเวลาทีแ่ ตกต่างกันได้ดว้ ย เช่น งานที่
Foreground ก็อาจใช้การจัดตารางแบบวนรอบ ส่วนงานทีเ่ ป็ นแบบ
Background ก็อาจใช้แบบมาก่อนได้ก่อน ก็ได้
การจัดตารางการทางานของคิวแบบหลายระดับ
Multilevel Queue Scheduling
คิวด้านบนจะมีความสาคัญมากกว่าคิวทีอ่ ยู่ดา้ นล่างถัดลงไปเสมอ
โปรเซสทีค่ อยอยู่ในคิวทีม่ คี วามสาคัญตา่ จะมีโอกาสได้ออกมาใช้ซพี ยี ูก็ต่อเมือ่
คิวทีม่ คี วามสาคัญสูงกว่าไม่มโี ปรเซสทีต่ อ้ งทาเหลืออยู่เท่านัน้
ในขณะทีโ่ ปรเซสทีม่ ลี าดับความสาคัญกาลังครอบครองซีพยี ู มีโปรเซสทีม่ ลี าดับ
ความสาคัญสูงกว่าเข้ามาคอยอยู่ในคิวทีส่ ูงกว่า โปรเซสนี้ก็จะถูกสลับออกมา
จากซีพยี ูทนั ที
การจัดตารางการทางานของคิวแบบหลายระดับ
Multilevel Queue Scheduling
เพือ่ ป้ องกันไม่ให้โปรเซสทีอ่ ยู่ในคิวตา่ ต้องคอยอยู่นานเกินไป หรืออาจจะไม่มี
โอกาสได้เข้าไปใช้ซพี ยี ูเลย เพราะว่าในคิวบน ๆ ไม่เคยว่างเลย
ต้องมีการกาหนดสัดส่วนเวลาให้กบ
ั แต่ละคิวในการทางานเข้าไปใช้ซพี ยี ู เช่น
การกาหนดให้เวลา 80 เปอร์เซ็นต์เป็ นของโปรเซสทีเ่ ป็ น Foreground และอีก
20 เปอร์เซ็นต์เป็ นของงานBackground เป็ นต้น
การจัดตารางการทางานของคิวแบบหลายระดับ
Multilevel Queue Scheduling
การจัดตารางการทางานของคิวผลตอบกลับหลายระดับ
Multilevel Feedback Queue Scheduling
- โปรเซสสามารถเคลือ่ นย้ายระหว่างคิวต่าง ๆ กัน (สามารถใช้ได้ในการทา Aging)
- ตัวจัดตารางการทางานของคิวผลตอบกลับหลายระดับถูกกาหนดโดยพารามิเตอร์ต่าง ๆ
ดังต่อไปนี้
- จานวนของคิว
- อัลกอริิมึ ในการจัดตารางการทางานของแต่ละคิว
- เกณฑ์ในการตัดสินเมือ่ มีการปรับระดับกระบวนการ
- เกณฑ์ในการตัดสินเมือ
่ มีการลดระดับกระบวนการ
- เกณฑ์ในการตัดสินเลือกกระบวนการทีต่ อ้ งการครอบครองซีพยี ูเข้าสู่คิว
การจัดตารางการทางานของคิวผลตอบกลับหลายระดับ
Multilevel Feedback Queue Scheduling
โปรเซสในแต่ละคิว สามารถมีการเลือ่ นชัน้ ระดับความสาคัญขึ้นหรือลงได้
อาจจะต้องเสียเวลาเพิม่ ในการคานวณหาระดับความสาคัญใหม่ให้กบั โปรเซส
การจัดตารางการทางานของคิวผลตอบกลับหลายระดับ
Multilevel Feedback Queue Scheduling
ส่วนมากจะแบ่งระดับความสาคัญตามระยะเวลาของเวลาซีพยี ู
เช่นเมือ
่ ซีพยี ูทางานนานขึ้นก็อาจจะถูกลดชัน้ ลงมาสู่ควิ ทีม่ ลี าดับความสาคัญตา่ ได้
ซึง่ จะทาให้โปรเซสทีม่ กี ารใช้ซพี ยี ูนอ้ ยแต่มอี นิ พุต/เอาต์พตุ หรืออินเทอร์แอ็กทีฟ
มาก ๆ มีโอกาสเข้าไปอยู่ในคิวทีม่ คี วามสาคัญมากได้
วิิน
ี ้ ยี งั เป็ นการป้ องกันไม่ให้มโี ปรเซสทีม่ คี วามสาคัญน้อยถูกดองอยู่ในคิว เพราะ
โปรเซสทีอ่ ยู่ในคิวทีต่ า่ ก็สามารถเลือ่ นขึ้นไปสู่ควิ ทีส่ ูงขึ้นถ้าคอยอยู่นานเกินไป
ตัวอย่างของการจัดตารางการทางานของคิวผลตอบกลับหลายระดับ
Example of Multilevel Feedback Queue Scheduling
ตัวอย่างของการจัดตารางการทางานของคิวผลตอบกลับหลายระดับ
Example of Multilevel Feedback Queue
ระบบมี 3 คิว:
- Q 0 – time quantum 8 milliseconds
- Q 1 – time quantum 16 milliseconds
- Q 2 – FCFS
การจัดลาดับการทางาน
-เมือ่ เกิดงานใหม่ข้นึ เข้าไปอยู่ในคิว q0
- เมือ่ สามารถเข้าใช้งานหน่วยประมวลผล งานนัน้ จะได้รบั เวลาในการทางาน 8
มิลลิวนิ าที
- หากงานนัน้ ไม่สามารถดาเนินการให้เสร็จสิ้นาายในระยะเวลา 8 มิลลิวนิ าที งาน
นัน้ จะถูกเคลือ่ นย้ายไปยัง q1
ตัวอย่างของการจัดตารางการทางานของคิวผลตอบกลับหลายระดับ
Example of Multilevel Feedback Queue Scheduling
- ใน q1 งานนัน้ จะได้รบั เวลาในการทางานเพิม่ ขึ้นเป็ น 16 มิลลิวนิ าที
- หากยังคงไม่สามารถดาเนินการให้เสร็จสิ้นอีก ก็จะถูกทาการเพิม่ ระดับและ
เคลือ่ นย้ายเข้าสู่ คิว q2 ต่อไป
- ใน q2 กระบวนการจะได้ทางานก็ต่อเมือ่ q0 และ q1 ว่าง
Distinction between user-level and kernel-level
threads
When threads supported, threads scheduled, not
processes
Many-to-one and many-to-many models, thread
library schedules user-level threads to run on LWP
› Known as process-contention scope (PCS) since
scheduling competition is within the process
› Typically done via priority set by programmer
Kernel thread scheduled onto available CPU is
system-contention scope (SCS) – competition
among all threads in system
API allows specifying either PCS or SCS during
thread creation
› PTHREAD_SCOPE_PROCESS schedules threads
using PCS scheduling
› PTHREAD_SCOPE_SYSTEM schedules threads
using SCS scheduling
Can be limited by OS – Linux and Mac OS X only
allow PTHREAD_SCOPE_SYSTEM
การจัดตารางการทางานแบบหน่วยประมวลผลหลายหน่วย
Multiple-Processor Scheduling
CPU scheduling more complex when multiple CPUs
are available
Homogeneous processors within a multiprocessor
Asymmetric multiprocessing – only one processor
accesses the system data structures, alleviating the
need for data sharing
Symmetric multiprocessing (SMP) – each processor is
self-scheduling, all processes in common ready
queue, or each has its own private queue of ready
processes
› Currently, most common
If SMP, need to keep all CPUs loaded for
efficiency
Load balancing attempts to keep workload
evenly distributed
Push migration – periodic task checks load on
each processor, and if found pushes task from
overloaded CPU to other CPUs
Pull migration – idle processors pulls waiting task
from busy processor
Recent trend to place multiple
processor cores on same physical chip
Faster and consumes less power
Multiple threads per core also growing
› Takes advantage of memory stall to make
progress on another thread while memory
retrieve happens
Can present obvious challenges
Soft real-time systems – no guarantee as to when
critical real-time process will be scheduled
Hard real-time systems – task must be serviced by
its deadline
Two types of latencies affect performance
1. Interrupt latency – time from arrival of interrupt
to start of routine that services interrupt
2. Dispatch latency – time for schedule to take
current process off CPU and switch to another
For real-time scheduling, scheduler
must support preemptive, prioritybased scheduling
› But only guarantees soft real-time
For hard real-time must also provide
ability to meet deadlines
Processes have new characteristics:
periodic ones require CPU at
constant intervals
› Has processing time t, deadline
d, period p
› 0≤t≤d≤p
› Rate of periodic task is 1/p
Windows uses priority-based preemptive
scheduling
Highest-priority thread runs next
Dispatcher is scheduler
Thread runs until (1) blocks, (2) uses time slice,
(3) preempted by higher-priority thread
Real-time threads can preempt non-real-time
32-level priority scheme
Variable class is 1-15, real-time class is 16-31
Priority 0 is memory-management thread
Queue for each priority
If no run-able thread, runs idle thread
Win32 API identifies several priority classes to which a
process can belong
› REALTIME_PRIORITY_CLASS, HIGH_PRIORITY_CLASS,
ABOVE_NORMAL_PRIORITY_CLASS,NORMAL_PRIORITY_
CLASS, BELOW_NORMAL_PRIORITY_CLASS,
IDLE_PRIORITY_CLASS
› All are variable except REALTIME
A thread within a given priority class has a relative priority
› TIME_CRITICAL, HIGHEST, ABOVE_NORMAL, NORMAL,
BELOW_NORMAL, LOWEST, IDLE
Priority class and relative priority combine to give numeric
priority
Base priority is NORMAL within the class
If quantum expires, priority lowered, but never below base
If wait occurs, priority boosted depending on
what was waited for
Foreground window given 3x priority boost
Windows 7 added user-mode scheduling (UMS)
› Applications create and manage threads
independent of kernel
› For large number of threads, much more
efficient
› UMS schedulers come from programming
language libraries like
C++ Concurrent Runtime (ConcRT) framework
การประเมินวิธีการ (Algorithm Evaluation)
ต้องคานึงถึงรื่องของการกาหนดคุณสมบัตสิ าหรับการเปรียบเทียบในกระบวนการ
คัดเลือก
อรรถประโยชน์ของซีพย
ี ู (CPU utilization)
เวลาตอบสนอง (Response time)
ผลสัมฤทิิ์ (Throughput)
กาหนดหลักเกณฑ์ในการพิจารณาดังนี้
การกาหนดโมเดล (Deterministic Modeling)
โมเดลการจัดคิว
วิิก
ี ารจาลองระบบ (Simulations)
วิิก
ี ารสร้างขึ้นจริง
การกาหนดโมเดล (Deterministic Modeling)
วิิกี ารคัดเลือกนี้เรียกว่า Analytic Evaluation ซึง่ จะนาเอาอัลกอริทมึ ชนิดต่าง ๆ
และลักษณะของงานมาสร้างสูตร เพือ่ ใช้ในการคานวณหาตัวเลขของประสิทิิาาพที่
สามารถวัดและเปรียบเทียบได้
การกาหนดโมเดล (Deterministic Modeling)
For each algorithm, calculate minimum average
waiting time
Simple and fast, but requires exact numbers for
input, applies only to those inputs
FCS is 28ms:
Non-preemptive SFJ is 13ms:
RR is 23ms:
โมเดลการจัดคิว
ลักษณะงานทีเ่ ข้ามาในระบบคอมพิวเตอร์มลี กั ษณะไม่แน่นอน อาจจะไม่ซา้ กันเลย
แต่เราสามารถทานายหรือกาหนดการกระจายเวลาของซีพยี ู และการกระจายการ
ใช้อนิ พุต/เอาต์พตุ ได้
ระบบคอมพิวเตอร์อาจมองเป็ นระบบเน็ตเวิรค์ ทีส่ ถานีงานทีม่ คี วิ เป็ นของตนเอง ทัง้
ซีพยี ูหรืออุปกรณ์ต่าง ๆ
ถ้าเราทราบเวลาในการให้บริการและจานวนงานทีเ่ ข้ามาในสถานีงาน
เราก็สามารถคานวณหาสิง่ ทีต่ อ้ งการได้ การวิเคราะห์แบบนี้เรียกว่า การวิเคราะห์
การจัดคิวแบบเน็ตเวิรค์ (Queuing-network analysis)
โมเดลการจัดคิว
Little’s formula (n=*w) มีประโยชน์เนื่องจากสามารถใช้ได้เมือ่ ทราบค่าเฉลีย่
การกระจายเวลา
n = ขนาดแถวคอย
= อัตราเฉลีย่ ของกระบวนการทีเ่ ข้ามา
w = เวลาคอยเฉลีย่ ในแถวคอย
สามารถเปรียบเทียบค่าของการคอยแต่ละอัลกอริทมึ
ปัญหาก็คอื ยังไม่สามารถคานวณกับทุกอัลกอริทมึ ได้
ถ้าใช้อลั กอริทมึ ทีซ่ บั ซ้อนมาก ๆ การคานวณค่าเฉลีย่ ทาได้ยาก เนื่องจากการตัง้
สูตรทาได้ยาก
การคานวณค่าเฉลีย่ จึงทาไว้แบบง่าย ๆ การคานวณอาจไม่เทีย่ งตรง
วิธีการจาลองระบบ (Simulations)
เป็ นการเลือกวิิกี ารหรืออัลกอริทมึ ทีใ่ ห้ค่าเป็ นจริงมากทีส่ ุด เนื่องจากสามารถ
คานวณค่าตัวเลขออกมาได้อย่างเทีย่ งตรงมากทีส่ ุด
ส่วนมากจะใช้การโปรแกรมคอมพิวเตอร์เพือ่ ใช้เป็ นตัวแทนหรือการจาลองของ
ระบบ รวมทัง้ การเขียนโปรแกรมเพือ่ เป็ นตัวแทนสิง่ แวดล ้อมทีเ่ กีย่ วข้องกับระบบ
คอมพิวเตอร์
สิง่ สาคัญคือการใช้ตวั แปรทีเ่ ป็ นตัวแทนของเวลา เพือ่ อ้างถึงตาแหน่งหรือหลักใน
การสร้างเหตุการณ์
วิธีการจาลองระบบ (Simulations)
เวลาของเหตุการณ์ทจ่ี ะเกิดขึ้นในแบบจาลองนี้มี 2 แบบ
เวลาจากการสุ่ม (เขียนโปรแกรมเพือ
่ สร้างตัวแปรสุ่มนี้) โดยต้องสร้างงาน
สร้างเวลาซีพยี ู สร้างเวลาเข้ามาในระบบ โดยอาศัยหลักความน่าจะเป็ น โดย
ใช้การกระจายต่าง ๆ เช่น uniform, exponential หรือ Poisson เป็ นต้น
ข้อมูลจากระบบจริง
ข้อดีของการใช้ขอ้ มูลจริงก็คอื จะได้ค่าทีถ่ กู ต้องมากกว่าแบบการสุ่ม แต่ถา้ ยุ่งยาก
ซับซ้อนมาก ๆ วิิกี ารสุ่มก็ยงั คงมีความจาเป็ น
การทาแบบจาลองจาเป็ นต้องใช้เวลาค่อนข้างมาก ทาให้ค่าใช้จ่ายสูง เพือ่ ให้ได้
ข้อมูลทีเ่ ทีย่ งตรงมากเท่าใด เวลาและค่าใช้จ่ายจะยิง่ เพิม่ สูงขึ้น
วิธีการสร้ างขึน้ จริง
การสร้างแบบจาลองก็คงยังเป็ นการจาลองทีย่ งั ไม่สามารถเหมือนจริงได้ สิง่ ทีด่ กี ว่า
คือการสร้างอัลกริทมึ ชนิดต่าง ๆ เพือ่ ทดลองใช้กบั โปรแกรมจัดการระบบจริง ๆ ใน
สิง่ แวดล ้อมจริง
วิินี ้ ไี ม่ค่อยนิยมเนื่องจากค่าใช้จ่ายค่อนข้างสูง ความเสีย่ งสูง และใช้เวลามาก
ในบางอัลกอริทมึ อาจจะต้องใช้ฮาร์ดแวร์พเิ ศษ ทาให้เครื่องต้องสามารถปรับเปลีย่ น
ได้ ค่อนข้างยุ่งยาก
แม้จะได้วิิ กี ารทีด่ ที ส่ี ุด เรายังต้องพิจารณาว่าเราได้ทดลองทุกอัลกอริทมึ โดยครบ
ทุกสถานการณ์แล ้วหรือไม่ (ปกติเป็ นไปได้ยากทีเ่ ราจะสามารถทาได้ครบทุก
สถานการณ์)
วิธีการสร้ างขึน้ จริง
ทางออกทีด่ ที ส่ี ุดเราจะต้องทาให้ระบบคอมพิวเตอร์สามารถปรับเปลีย่ นได้โดยการ
ควบคุมของผูใ้ ช้ ซึง่ ทาได้โดยการตัง้ ค่าไว้ก่อนเริ่มใช้งาน หรือสามารถปรับค่าได้
ในขณะใช้งาน จะมีค่าใช้จ่ายในปริมาณทีเ่ พิม่ มากขึ้นนัน่ เอง