ดาวน์โหลดงานนำเสนอ
งานนำเสนอกำลังจะดาวน์โหลด โปรดรอ
ได้พิมพ์โดยΣίβύλ Αντωνοπούλου ได้เปลี่ยน 6 ปีที่แล้ว
1
Advanced Operating System Operating System Technology
การจัดลำดับงานของหน่วยประมวลผลกลาง CPU Scheduling
2
CPU Scheduling เนื้อหา - แนวคิดพื้นฐาน (Basic Concepts)
- เกณฑ์การจัดตารางเวลาการทำงาน (Scheduling Criteria) วิธีการจัดตารางเวลาการทำงาน(Scheduling Algorithms) การจัดตารางการทำงานแบบคิว (Queue Scheduling) - การจัดตารางงานของมัลติโปรเซสเซอร์ หรือหน่วยประมวลผลแบบหลายตัว (Multiple-Processor Scheduling) - การจัดตารางงานแบบเรียลไทม์ (Real-Time CPU Scheduling) - การประเมินวิธีการ (Algorithm Evaluation)
3
Basic Concepts - เป็นหลักการพื้นฐานสำหรับระบบปฏิบัติการแบบ Multiprogrammed จุดประสงค์ของการรันโปรแกรมหลายโปรแกรมคือ ความต้องการที่จะให้ซีพียูมีการทำงานตลอดเวลา เพื่อให้มีการใช้ซีพียูอย่างเต็มที่และเต็มประสิทธิภาพ ใช้เวลาให้คุ้มค่า กระบวนการหลายๆ กระบวนการถูกเก็บในหน่วยความจำครั้งเดียว เมื่อมีกระบวนการรอ ระบบจะสับเปลี่ยนหน่วยประมวลผลกลางให้อีกกระบวนการหนึ่งแทน
4
Basic Concepts ช่วงประมวลผล/ช่วงรับส่งข้อมูล
การจัดตารางการทำงานที่ดี ต้องทราบลักษณะการทำงานของกระบวนการ กระบวนการทั่วไปจะทำงานเป็นวงจรคือ ทำงานในหน่วยประมวลผล และรอคอย การรับ-ส่งข้อมูลจากอุปกรณ์สลับกันไป โดยเริ่มต้นที่ทำงานในหน่วยประมวลผลก่อนเรียกว่า ช่วงประมวลผล (CPU-burst) แล้วก็จะหยุดเพื่อทำงานในอุปกรณ์รับ-ส่งข้อมูลเรียกว่า ช่วงรับส่งข้อมูล (I/O burst) แล้วตามด้วยช่วงประมวลผลอีกสลับกันไปจนสิ้นสุดกระบวนการ ควรกระจายการดำเนินการหน่วยประมวลผลให้เท่าเทียมกัน
5
Alternating Sequence of CPU And I/O Bursts
6
Histogram of CPU-burst Times
7
ตัวจัดตารางการทำงานของหน่วยประมวลผลกลาง
(CPU Scheduler ) ผู้เลือกกระบวนการในแถวพร้อม (ready queue) เพื่อเข้าไปใช้งานหน่วยประมวลผลกลาง ใช้ตัวจัดตารางระยะสั้นหรือตัวจัดตารางการทำงานของหน่วยประมวลผลกลาง
8
ตัวจัดตารางการทำงานของหน่วยประมวลผลกลาง
(CPU Scheduler ) ตัวจัดตารางการทำงานระยะสั้น (short–term scheduler) จะเลือกโปรเซสที่อยู่ในคิวที่พร้อมในการประมวลผล เพื่อให้ครอบครองเวลาซีพียูและทรัพยากรที่เกี่ยวข้องกับโปรเซสนั้น อย่างไรก็ตามโปรเซสทุกโปรเซสที่พร้อมใช้ซีพียู จะต้องมีโอกาสได้เข้าครอบครองเวลาซีพียูไม่เวลาใดก็เวลาหนึ่ง การเข้าและออกจากการครอบครองเวลาซีพียูแต่ละครั้ง จำเป็นต้องมีการเก็บข้อมูลไว้เสมอว่าเข้ามาทำอะไร ต่อไปจะทำอะไร
9
การจัดตารางการทำงานของหน่วยประมวลผลกลาง
การตัดสินใจในการจัดตารางการทำงานหน่วยประมวลผลกลางก่อนหลัง เกิดขึ้นเมื่อโปรเซสมีเหตุการณ์ดังต่อไปนี้ 1) เมื่อเกิดการเปลี่ยนแปลงสถานะจากกำลังทำงาน (running)ไปเป็นสถานะการรอคอย (waiting) 2) เมื่อเกิดการเปลี่ยนแปลงสถานะจากกำลังทำงาน (running) ไปเป็นสถานะพร้อมที่จะเข้าทำงาน (ready) 3) เมื่อเกิดการเปลี่ยนแปลงสถานะจากรอคอย(waiting)ไปเป็นสถานะพร้อม (ready) 4) เมื่อโปรเซสสิ้นสุดการทำงาน
10
การจัดลำดับการทำงานของหน่วยประมวลผลกลาง
การจัดลำดับการทำงานเหตุการณ์แบบ 1)และแบบ 4) เรียกว่า แบบไม่ให้แทรกกลางคัน (non-preemptive) ระบบจะต้องเลือกกระบวนการเข้ามาทำงาน ไม่คำนึงถึงลำดับความสำคัญของกระบวนการ การจัดลำดับการทำงานแบบอื่นๆ เป็นแบบให้แทรกกลางคัน (preemptive) หรือคำนึงถึงความสำคัญของกระบวนการ ก่อให้เกิดค่าใช้จ่าย กรณีมีการแชร์ข้อมูลกันระหว่างสองกระบวนการ ต้องมีกลไกประสานการทำงาน
11
การจัดตารางแบบให้แทรกกลางคัน (Preemptive Scheduling)
การจัดเวลาแบบให้สิทธิ์ก่อนนั้นมีผลกระทบต่อการออกแบบ Kernel ของระบบปฏิบัติการเป็นอย่างมาก ในระหว่างการเกิด system call นั้น Kernel อาจจะยังไม่ว่าง อาจจะกำลังทำงานในการจัดคิวโปรเซสอยู่ UNIX และบางระบบปฏิบัติการมีการแก้ปัญหานี้ ให้ System call สิ้นสุดเอง หรือไม่ก็คอยจนกว่าจะมีการบล็อกการทำงานของอินพุต/เอาต์พุตเกิดขึ้น แล้วจึงมีการทำสลับการทำงาน
12
การจัดตารางแบบไม่ให้แทรกกลางคัน
(Non-Preemptive Scheduling) เมื่อกระบวนการได้ใช้หน่วยประมวลผลกลางแล้ว กระบวนการสามารถใช้จนกระทั่งกระบวนการสิ้นสุดหรือเปลี่ยนเป็นสถานะรอคอย จึงจะคืนหน่วยประมวลผลกลางกลับให้แก่ระบบ วิธีนี้ใช้ใน Window 3.1 และ Macintosh
13
ตัวจัดการการทำงานของระบบ (Dispatcher)
- ให้การควบคุมการทำงานของหน่วยประมวลผลกลาง กับโปรเซสที่ถูกเลือกจากตัวจัดตารางระยะสั้น เกี่ยวกับ - สลับสภาวะการทำงาน (context switch) - สลับการทำงานไปสู่โหมดผู้ใช้งาน (user mode) - ย้ายไปยังพื้นที่ในการทำงานของโปรแกรมผู้ใช้งานนั้นๆ Dispatch latency หมายถึง เวลาที่ตัวจัดการการทำงานหยุดกระบวนการหนึ่งและเริ่มต้นการทำงานอีกกระบวนการหนึ่ง
14
เกณฑ์การจัดตารางเวลาการทำงาน (Scheduling Criteria)
- การใช้งานหน่วยประมวลผลกลางให้เกิดประโยชน์สูงสุด (CPU utilization) หมายถึงการทำให้หน่วยประผลกลางถูกทำงานหรือใช้งานได้เต็มประสิทธิภาพมากสุด - ผลสัมฤทธิ์ (Throughput) หมายถึง จำนวนโปรเซสที่สามารถทำงานเสร็จสิ้นหรือประมวลผลเสร็จสิ้นต่อหนึ่งหน่วยเวลา - เวลารอบงาน (Turnaround time) หมายถึงเวลาที่แต่ละโปรเซสใช้ในการประมวลผล - เวลารอคอย (Waiting time) หมายถึงเวลาที่โปรเซสต้องรอคอยอยู่ในคิวที่พร้อมจะเข้าทำงาน เวลาในการตอบสนอง (Response time) หมายถึงเวลาทั้งสิ้นที่ใช้ไปนับตั้งแต่คำสั่งร้องขอเกิดขึ้นจนกระทั่งเกิดการตอบสนองต่อคำสั่งร้องขอนั้น
15
เกณฑ์ในการทำให้เกิดประสิทธิภาพสูงสุด (Optimization Criteria)
- การใช้งานหน่วยประมวลผลให้เต็มประสิทธิภาพมากที่สุด Max CPU utilization - ทำให้เกิดผลสัมฤทธิ์ในการทำงานสูงสุด Max throughput - ลดระยะรอบเวลาการทำงานให้น้อยที่สุด Min turnaround time - ลดระยะเวลาการรอคอยให้น้อยที่สุด Min waiting time - ลดระยะเวลาในการตอบสนองให้น้อยที่สุด Min response time
16
เกณฑ์ในการทำให้เกิดประสิทธิภาพสูงสุด (Optimization Criteria)
สิ่งที่ผู้ออกแบบระบบการจัดตารางเวลาต้องการคือ การทำให้เวลาการทำงานสั้นที่สุดนั่นเอง ในความเป็นจริง เราไม่สามารถที่จะได้ระบบที่สามารถทำให้มีการใช้ซีพียูได้สูงสุด โดยที่มีทรูพุตมากที่สุด มีเวลารวมเร็วที่สุด และได้เวลาตอบสนองเร็วที่สุดได้พร้อมๆ กัน ดังนั้นการหาจุดพอดีจากค่าเฉลี่ยของคุณสมบัติแต่ละชนิดจึงมีความจำเป็น ซึ่งบางครั้งอาจจะต้องมีการกำหนดจุดที่ยอมรับได้ไว้ที่จุดใดจุดหนึ่ง ถ้าหากว่าไม่สามารถหาค่าเฉลี่ยได้
17
วิธีการจัดตารางเวลาการทำงานแบบหน่วยประมวลผลเดียว (Single Processor Scheduling Algorithms)
การจัดตารางการทำงานแบบมาก่อนให้บริการก่อน (First-Come, First-Served Scheduling; FCFS) การจัดตารางการทำงานแบบเวลาในการทำงานสั้นที่สุดให้ทำก่อน(Shortest-Job-First Scheduling; SJF) การจัดตารางการทำงานแบบคำนึงถึงระดับความสำคัญ (Priority Scheduling) การจัดตารางการทำงานแบบวนรอบ (Round Robin Scheduling; RR)
18
การจัดตารางการทำงานแบบมาก่อนให้บริการก่อน
First-Come, First-Served Scheduling (FCFS) โปรเซสใดที่ร้องขอใช้ซีพียูก่อนก็จะได้รับการจัดสรรให้ครอบครองเวลาซีพียูก่อน ผลเสียของอัลกอริทึมนี้คือค่าเฉลี่ยของการคอยในคิวแบบมาก่อนได้ก่อนนี้ค่อนข้างจะสูง
19
First- Come, First-Served (FCFS) Scheduling
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: Waiting time for P1 = 0; P2 = 24; P3 = 27 Average waiting time: ( )/3 = 17
20
First- Come, First-Served (FCFS) Scheduling
Suppose that the processes arrive in the order: P2 , P3 , P1 The Gantt chart for the schedule is: Waiting time for P1 = 6; P2 = 0; P3 = 3 Average waiting time: ( )/3 = 3 Much better than previous case
21
ประสิทธิผลในการทำงานของหน่วยประมวลผลและอุปกรณ์ต่ำลง
First- Come, First-Served (FCFS) Scheduling เกิดปัญหา Convoy effect หมายถึง ต้องรอกระบวนการใหญ่เพียงกระบวนการเดียวใช้งานเสร็จแล้วจึงปล่อยหน่วยประมวลผลคืนสู่ระบบ ประสิทธิผลในการทำงานของหน่วยประมวลผลและอุปกรณ์ต่ำลง เป็นการทำงานที่ไม่สามารถแทรกกลางคันได้
22
การจัดตารางการทำงานแบบเวลาในการทำงานสั้นที่สุดให้ทำก่อน
Shortest-Job-First Scheduling (SJF) ในการจัดตารางการทำงานจะพิจารณาจากโปรเซสที่ใช้ระยะเวลาที่สั้นที่สุด แบ่งออกเป็นสองแบบคือ - Non-preemptive คือการทำงานที่หน่วยประมวลผลจะให้โปรเซสทำงานจนเสร็จสิ้นโดยไม่คำนึงถึงระดับความสำคัญ - Preemptive คือการทำงานที่พิจารณาถึงระดับความสำคัญ เมื่อเกิดโปรเซสขึ้นใหม่ที่ใช้ระยะเวลาในการทำงานสั้นกว่าโปรเซสเดิมที่กำลังทำงานอยู่ หน่วยประมวลผลจะให้โปรเซสใหม่ที่เกิดขึ้นเข้าทำงานก่อน และให้โปรเซสเดิมที่ต้องใช้เวลาในการทำงานนานกว่าหยุดการทำงานโดยชั่วคราว หรือเรียกว่า Shortest-Remaining-Time (SRT)
23
การจัดตารางการทำงานแบบเวลาในการทำงานสั้นที่สุดให้ทำก่อน
Shortest-Job-First Scheduling (SJF) - การทำงานด้วยวิธีนี้สามารถช่วยลดระยะเวลาในการรอคอยของแต่ละโปรเซสโดยรวมเฉลี่ยลดลง ความยากคือ จะต้องทราบเวลาของการร้องขอใช้งาน CPU โปรเซสต่อไป
24
Example of SJF Process Burst Time P1 6 P2 8 P3 7 P4 3
SJF scheduling chart Average waiting time = ( ) / 4 = 7 Average turn-around time = ( )/4 = 13
25
Example #2: Non-Preemptive SJF (varied arrival times)
Process Arrival Time Burst Time P P P P SJF (non-preemptive, varied arrival times) Average waiting time = ( (0 – 0) + (8 – 2) + (7 – 4) + (12 – 5) )/ = ( )/4 = 4 Average turn-around time: = ( (7 – 0) + (12 – 2) + (8 - 4) + (16 – 5))/ = ( )/4 = 8 P1 P3 P2 7 3 16 P4 8 12 Waiting time : sum of time that a process has spent waiting in the ready queue
26
Example of Shortest-remaining-time-first
Now we add the concepts of varying arrival times and preemption to the analysis Process Arrival Time Burst Time P1 0 8 P2 1 4 P3 2 9 P4 3 5 Preemptive SJF Gantt Chart Average waiting time = [(10-1)+(1-1)+(17-2)+5-3)]/4 = 26/4 = 6.5 msec
27
การจัดตารางการทำงานแบบคำนึงถึงระดับความสำคัญ
Priority Scheduling จำนวนของระดับความสำคัญ เป็นจำนวนเต็ม (integer) จะสัมพันธ์กับแต่ละโปรเซส โปรเซสที่เข้าใช้งานหน่วยประมวลผลจะต้องมีระดับความสำคัญสูงสุด คือ ค่า Integer น้อยสุด ถ้ามีงานที่มีลำดับความสำคัญเท่ากัน ก็จะมีการนำเอามาก่อนได้ก่อน FCFS มาใช้ Preemptive จะแทรกได้ต่อเมื่อ กระบวนการที่เข้ามาใหม่มีความสำคัญสูงกว่ากระบวนการเดิม Non-preemptive จะนำกระบวนการใหม่ไปไว้ที่หัวแถวของ ready queue แทน
28
การจัดตารางการทำงานแบบคำนึงถึงระดับความสำคัญ
Priority Scheduling ปัญหาคือ โปรเซสที่ระดับความสำคัญต่ำสุดอาจไม่ได้รับการประมวลผลหรือไม่ถูกเอ็กซ์ซีคิวท์เลย เรียก ปัญหาการแช่เย็น(Starvation) หรือรอคอยชั่วนิรันดร์ กระบวนการที่ความสำคัญสูงเข้ามาเรื่อยๆ จนความสำคัญต่ำไม่ได้ทำงานเลย อาจจะได้ทำงานเมื่องานในระบบน้อยลง ระบบทำงานไปจนเสียและงานนั้นๆ ก็จะสาบสูญไป เช่น ระบบ Rumor บนเครื่อง IBM 9074 ที่ MIT ปี 1973 - แก้ปัญหาโดยการกำหนดให้เวลาที่สูญเสียในการรอคอยจะไปเพิ่มระดับความสำคัญของโปรเซสนั้นให้มากขึ้น (Aging)
29
การจัดตารางการทำงานแบบคำนึงถึงระดับความสำคัญ
Priority Scheduling เช่น สมมติว่าเรามีการออกแบบให้มีลำดับความสำคัญจาก ขั้น เราอาจจะเพิ่มอัลกอริทึมพิเศษลงไปว่า ถ้าโปรเซสใดคอยครบ 15 นาที ก็ให้ลดตัวเลขลำดับขั้นลงทีละขั้น และจะลดลงไปเรื่อย ๆ ทุก ๆ 15 นาที แม้โปรเซสที่เข้ามาในระบบมีลำดับความสำคัญต่ำสุดที่ 127 ก็จะมีโอกาสเข้าไปใช้ซีพียูภายในเวลาไม่เกิน 32 ชั่วโมง เพราะในที่สุดโปรเซสนี้ก็จะมีลำดับความสำคัญเท่ากับ 0
30
Example of Priority Scheduling
Process Burst Time Priority P1 10 3 P2 1 1 P3 2 4 P4 1 5 P5 5 2 Priority scheduling Gantt Chart Average waiting time = ( ) / 5 = 8.2 msec
31
การจัดตารางการทำงานแบบวนรอบ (Round Robin Scheduling; RR)
กำหนดให้แต่ละโปรเซสได้รับเวลาในการประมวลผลหรือเวลาที่สามารถเข้าใช้หน่วยประมวลผลระยะสั้นๆ เท่าๆ กัน เรียกว่าส่วนแบ่งเวลา (time quantum, q) ประมาณ 10 – 100 มิลลิวินาที เมื่อแต่ละโปรเซสใช้เวลาที่ตนเองได้รับหมดไป โปรเซสนั้นก็จะต้องหยุดทำงานและถูกย้ายกลับเข้าไปอยู่ยังลำดับสุดท้ายของคิวพร้อมทำงานเพื่อการรอคอยเข้าทำงานอีกครั้ง วนรอบเช่นนี้จนจบการทำงาน ไม่มีกระบวนการใดได้รับช่วงเวลาทำงานมากกว่า 1 ส่วนแบ่งเวลา
32
การจัดตารางการทำงานแบบวนรอบ (Round Robin; RR)
ถ้ามี จำนวนโปรเซส (n) อยู่ในคิวพร้อมทำงาน ส่วนแบ่งเวลา (q) แต่ละโปรเซสจะได้เวลาเพื่อการเข้าใช้งานหน่วยประมวลผลเป็น 1/n ของเวลาที่หน่วยประมวลผลสามารถประมวลผลในหนึ่งช่วงเวลา ดังนั้นจึงไม่มีโปรเซสใดที่จะต้องรอนานเกินกว่า (n-1)q หน่วยเวลา เช่น ถ้ามีโปรเซส 5 โปรเซส และระยะเวลาควันตัมคือ 20 วินาที แต่ละโปรเซสจะต้องคอยในคิวโดยเฉลี่ยประมาณไม่เกิน 80 วินาที เพราะว่าการคอยอาจจะน้อยกว่านี้ ถ้าหากว่ามีโปรเซสใด ๆ สามารถทำงานเสร็จโดยใช้เวลาน้อยกว่าเวลาควันตัมนั่นเอง
33
Example of RR with Time Quantum = 4
Process Burst Time P1 24 P2 3 P3 3 The Gantt chart is: [(10-4)+4+7] / 3 = 17/3 = วินาที
34
การจัดตารางการทำงานแบบวนรอบ ( Round Robin; RR )
- ประสิทธิผลขึ้นอยู่กับ - q มีขนาดใหญ่ FCFS q ที่มีขนาดเล็ก เป็นการแบ่งปันการประมวลผล ซึ่งมี Overhead สูง
35
เวลาควอนตัม กับเวลาในการสลับสภาพแวดล้อม
Time Quantum and Context Switch Time
36
การจัดตารางการทำงานแบบวนรอบ (RR : Round-Robin Scheduling)
ประสิทธิภาพของการวนรอบขึ้นอยู่กับการกำหนดขนาดของควันตัม ถ้าขนาดของควันตัมใหญ่หรือนานเกินไป ประสิทธิภาพของการวนรอบก็จะใกล้เคียงกับแบบมาก่อนได้ก่อน ถ้าขนาดของควันตัมเล็กมากเกินไป ทรูพุต (throughput) ของระบบก็จะช้าลง เนื่องจากการสลับโปรเซสเข้าและออกจากการครอบครองซีพียู จะต้องเสียเวลาบางส่วนในการทำ Dispatcher ถ้าขนาดของควันตัมเล็กใกล้เคียงกับเวลาของ Dispatcher เวลาของระบบรวมก็จะหมดไปกับการสลับโปรเซส(Context Switch) นั่นเอง
37
การจัดตารางการทำงานแบบคิว (Queue Scheduling)
การจัดตารางการทำงานของคิวแบบหลายระดับ (Multilevel Queue Scheduling) การจัดตารางการทำงานของคิวผลตอบกลับหลายระดับ (Multilevel Feedback Queue Scheduling)
38
การจัดลำดับการทำงานของคิวแบบหลายระดับ
Multilevel Queue Scheduling เป็นการจัดเวลาของซีพียูอีกแบบหนึ่งสำหรับระบบที่สามารถแบ่งระดับชั้นของงานได้อย่างชัดเจน งานในคิวพร้อมทำงานแบ่งได้เป็น งานที่เป็น Foreground หรืองานโต้ตอบ(Interactive) – RR กับงานที่เป็น Background หรือแบบกลุ่ม (Batch)- FCFS งานทั้งสองแบบนี้ต้องการเวลาตอบสนอง (Response time) ที่แตกต่างกัน ซึ่งสามารถใช้ระบบการจัดเวลาที่แตกต่างกันได้
39
การจัดตารางการทำงานของคิวแบบหลายระดับ
Multilevel Queue Scheduling ใช้วิธีแบ่งคิวออกเป็นหลาย ๆ ระดับโดยที่แต่ละระดับหมายถึงระดับโปรเซสที่มีความสำคัญแตกต่างกัน การแบ่งระดับความสำคัญของโปรเซสนั้น สามารถแบ่งได้หลายลักษณะ เช่นแบ่งตามขนาดโปรเซส, จำนวนหน่วยความจำที่ต้องใช้ หรือจำนวนอินพุต/เอาต์พุต เป็นต้น แต่ละคิวยังสามารถใช้หลักการจัดเวลาที่แตกต่างกันได้ด้วย เช่น งานที่Foreground ก็อาจใช้การจัดตารางแบบวนรอบ ส่วนงานที่เป็นแบบBackground ก็อาจใช้แบบมาก่อนได้ก่อน ก็ได้
40
การจัดตารางการทำงานของคิวแบบหลายระดับ
Multilevel Queue Scheduling คิวด้านบนจะมีความสำคัญมากกว่าคิวที่อยู่ด้านล่างถัดลงไปเสมอ โปรเซสที่คอยอยู่ในคิวที่มีความสำคัญต่ำจะมีโอกาสได้ออกมาใช้ซีพียูก็ต่อเมื่อคิวที่มีความสำคัญสูงกว่าไม่มีโปรเซสที่ต้องทำเหลืออยู่เท่านั้น ในขณะที่โปรเซสที่มีลำดับความสำคัญกำลังครอบครองซีพียู มีโปรเซสที่มีลำดับความสำคัญสูงกว่าเข้ามาคอยอยู่ในคิวที่สูงกว่า โปรเซสนี้ก็จะถูกสลับออกมาจากซีพียูทันที
41
การจัดตารางการทำงานของคิวแบบหลายระดับ
Multilevel Queue Scheduling เพื่อป้องกันไม่ให้โปรเซสที่อยู่ในคิวต่ำต้องคอยอยู่นานเกินไป หรืออาจจะไม่มีโอกาสได้เข้าไปใช้ซีพียูเลย เพราะว่าในคิวบน ๆ ไม่เคยว่างเลย ต้องมีการกำหนดสัดส่วนเวลาให้กับแต่ละคิวในการทำงานเข้าไปใช้ซีพียู เช่น การกำหนดให้เวลา 80 เปอร์เซ็นต์เป็นของโปรเซสที่เป็น Foreground และอีก 20 เปอร์เซ็นต์เป็นของงานBackground เป็นต้น
42
การจัดตารางการทำงานของคิวแบบหลายระดับ
Multilevel Queue Scheduling
43
การจัดตารางการทำงานของคิวผลตอบกลับหลายระดับ
Multilevel Feedback Queue Scheduling - โปรเซสสามารถเคลื่อนย้ายระหว่างคิวต่าง ๆ กัน (สามารถใช้ได้ในการทำ Aging) - ตัวจัดตารางการทำงานของคิวผลตอบกลับหลายระดับถูกกำหนดโดยพารามิเตอร์ต่าง ๆ ดังต่อไปนี้ - จำนวนของคิว - อัลกอริธึมในการจัดตารางการทำงานของแต่ละคิว - เกณฑ์ในการตัดสินเมื่อมีการปรับระดับกระบวนการ - เกณฑ์ในการตัดสินเมื่อมีการลดระดับกระบวนการ - เกณฑ์ในการตัดสินเลือกกระบวนการที่ต้องการครอบครองซีพียูเข้าสู่คิว
44
การจัดตารางการทำงานของคิวผลตอบกลับหลายระดับ
Multilevel Feedback Queue Scheduling โปรเซสในแต่ละคิว สามารถมีการเลื่อนชั้นระดับความสำคัญขึ้นหรือลงได้ อาจจะต้องเสียเวลาเพิ่ม ในการคำนวณหาระดับความสำคัญใหม่ให้กับโปรเซส
45
การจัดตารางการทำงานของคิวผลตอบกลับหลายระดับ
Multilevel Feedback Queue Scheduling ส่วนมากจะแบ่งระดับความสำคัญตามระยะเวลาของเวลาซีพียู เช่นเมื่อซีพียูทำงานนานขึ้นก็อาจจะถูกลดชั้นลงมาสู่คิวที่มีลำดับความสำคัญต่ำได้ ซึ่งจะทำให้โปรเซสที่มีการใช้ซีพียูน้อยแต่มีอินพุต/เอาต์พุตหรืออินเทอร์แอ็กทีฟมาก ๆ มีโอกาสเข้าไปอยู่ในคิวที่มีความสำคัญมากได้ วิธีนี้ยังเป็นการป้องกันไม่ให้มีโปรเซสที่มีความสำคัญน้อยถูกดองอยู่ในคิว เพราะโปรเซสที่อยู่ในคิวที่ต่ำก็สามารถเลื่อนขึ้นไปสู่คิวที่สูงขึ้นถ้าคอยอยู่นานเกินไป
46
ตัวอย่างของการจัดตารางการทำงานของคิวผลตอบกลับหลายระดับ
Example of Multilevel Feedback Queue Scheduling
47
ตัวอย่างของการจัดตารางการทำงานของคิวผลตอบกลับหลายระดับ
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
48
ตัวอย่างของการจัดตารางการทำงานของคิวผลตอบกลับหลายระดับ
Example of Multilevel Feedback Queue Scheduling ใน q1 งานนั้นจะได้รับเวลาในการทำงานเพิ่มขึ้นเป็น 16 มิลลิวินาที หากยังคงไม่สามารถดำเนินการให้เสร็จสิ้นอีก ก็จะถูกทำการเพิ่มระดับและเคลื่อนย้ายเข้าสู่ คิว q2 ต่อไป ใน q2 กระบวนการจะได้ทำงานก็ต่อเมื่อ q0 และ q1 ว่าง
49
Thread Scheduling 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
50
Pthread Scheduling 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
51
การจัดตารางการทำงานแบบหน่วยประมวลผลหลายหน่วย
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 Processor affinity – process has affinity for processor on which it is currently running soft affinity hard affinity Variations including processor sets
52
NUMA and CPU Scheduling
Note that memory-placement algorithms can also consider affinity
53
Multiple-Processor Scheduling – Load Balancing
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
54
Multicore Processors 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
55
Multithreaded Multicore System
56
Real-Time CPU Scheduling
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 Interrupt latency – time from arrival of interrupt to start of routine that services interrupt Dispatch latency – time for schedule to take current process off CPU and switch to another E.g., EDF (Earliest Deadline First, LLF (Least Laxity First), RMS (Rate-Monotonic Scheduling), DM (Deadline Monotonic Scheduling)
58
Priority-based Scheduling
For real-time scheduling, scheduler must support preemptive, priority-based 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
59
Virtualization and Scheduling
Virtualization software schedules multiple guests onto CPU(s) Each guest doing its own scheduling Not knowing it doesn’t own the CPUs Can result in poor response time Can effect time-of-day clocks in guests Can undo good scheduling algorithm efforts of guests
60
Rate Montonic Scheduling
A priority is assigned based on the inverse of its period Shorter periods = higher priority; Longer periods = lower priority P1 is assigned a higher priority than P2
61
Missed Deadlines with Rate Monotonic Scheduling
62
Earliest Deadline First Scheduling (EDF)
Priorities are assigned according to deadlines: the earlier the deadline, the higher the priority; the later the deadline, the lower the priority
63
Proportional Share Scheduling
T shares are allocated among all processes in the system An application receives N shares where N < T This ensures each application will receive N / T of the total processor time
64
POSIX Real-Time Scheduling
The POSIX.1b standard API provides functions for managing real-time threads Defines two scheduling classes for real-time threads: SCHED_FIFO - threads are scheduled using a FCFS strategy with a FIFO queue. There is no time-slicing for threads of equal priority SCHED_RR - similar to SCHED_FIFO except time-slicing occurs for threads of equal priority Defines two functions for getting and setting scheduling policy: pthread_attr_getsched_policy(pthread_attr_t *attr, int *policy) pthread_attr_setsched_policy(pthread_attr_t *attr, int policy)
65
Windows Scheduling 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
66
Windows Priority Classes
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
67
Windows Priority Classes (Cont.)
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
68
Windows Priorities
69
Linux Scheduling Two algorithms: time-sharing and real-time
Prioritized credit-based – process with most credits is scheduled next Credit subtracted when timer interrupt occurs When credit = 0, another process chosen When all processes have credit = 0, recrediting occurs Based on factors including priority and history Real-time Soft real-time Posix.1b compliant – two classes FCFS and RR Highest priority process runs first
70
Solaris Priority-based scheduling Six classes available
Time sharing (default) (TS) Interactive (IA) Real time (RT) System (SYS) Fair Share (FSS) Fixed priority (FP) Given thread can be in one class at a time Each class has its own scheduling algorithm Time sharing is multi-level feedback queue Loadable table configurable by sysadmin
71
Solaris Dispatch Table
72
Solaris Scheduling
73
Solaris Scheduling (Cont.)
Scheduler converts class-specific priorities into a per-thread global priority Thread with highest priority runs next Runs until (1) blocks, (2) uses time slice, (3) preempted by higher-priority thread Multiple threads at same priority selected via RR
74
การประเมินวิธีการ (Algorithm Evaluation)
ต้องคำนึงถึงรื่องของการกำหนดคุณสมบัติสำหรับการเปรียบเทียบในกระบวนการคัดเลือก อรรถประโยชน์ของซีพียู (CPU utilization) เวลาตอบสนอง (Response time) ผลสัมฤทธิ์ (Throughput) กำหนดหลักเกณฑ์ในการพิจารณาดังนี้ การกำหนดโมเดล (Deterministic Modeling) โมเดลการจัดคิว วิธีการจำลองระบบ (Simulations) วิธีการสร้างขึ้นจริง
75
การกำหนดโมเดล (Deterministic Modeling)
วิธีการคัดเลือกนี้เรียกว่า Analytic Evaluation ซึ่งจะนำเอาอัลกอริทึมชนิดต่าง ๆ และลักษณะของงานมาสร้างสูตร เพื่อใช้ในการคำนวณหาตัวเลขของประสิทธิภาพที่สามารถวัดและเปรียบเทียบได้
76
การกำหนดโมเดล (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:
77
โมเดลการจัดคิว ลักษณะงานที่เข้ามาในระบบคอมพิวเตอร์มีลักษณะไม่แน่นอน อาจจะไม่ซ้ำกันเลย แต่เราสามารถทำนายหรือกำหนดการกระจายเวลาของซีพียู และการกระจายการใช้อินพุต/เอาต์พุตได้ ระบบคอมพิวเตอร์อาจมองเป็นระบบเน็ตเวิร์คที่สถานีงานที่มีคิวเป็นของตนเอง ทั้งซีพียูหรืออุปกรณ์ต่าง ๆ ถ้าเราทราบเวลาในการให้บริการและจำนวนงานที่เข้ามาในสถานีงาน เราก็สามารถคำนวณหาสิ่งที่ต้องการได้ การวิเคราะห์แบบนี้เรียกว่า การวิเคราะห์การจัดคิวแบบเน็ตเวิร์ค (Queuing-network analysis)
78
โมเดลการจัดคิว Little’s formula (n=*w) มีประโยชน์เนื่องจากสามารถใช้ได้เมื่อทราบค่าเฉลี่ยการกระจายเวลา n = ขนาดแถวคอย = อัตราเฉลี่ยของกระบวนการที่เข้ามา w = เวลาคอยเฉลี่ยในแถวคอย สามารถเปรียบเทียบค่าของการคอยแต่ละอัลกอริทึม ปัญหาก็คือยังไม่สามารถคำนวณกับทุกอัลกอริทึมได้ ถ้าใช้อัลกอริทึมที่ซับซ้อนมาก ๆ การคำนวณค่าเฉลี่ยทำได้ยาก เนื่องจากการตั้งสูตรทำได้ยาก การคำนวณค่าเฉลี่ยจึงทำไว้แบบง่าย ๆ การคำนวณอาจไม่เที่ยงตรง
79
วิธีการจำลองระบบ (Simulations)
เป็นการเลือกวิธีการหรืออัลกอริทึมที่ให้ค่าเป็นจริงมากที่สุด เนื่องจากสามารถคำนวณค่าตัวเลขออกมาได้อย่างเที่ยงตรงมากที่สุด ส่วนมากจะใช้การโปรแกรมคอมพิวเตอร์เพื่อใช้เป็นตัวแทนหรือการจำลองของระบบ รวมทั้งการเขียนโปรแกรมเพื่อเป็นตัวแทนสิ่งแวดล้อมที่เกี่ยวข้องกับระบบคอมพิวเตอร์ สิ่งสำคัญคือการใช้ตัวแปรที่เป็นตัวแทนของเวลา เพื่ออ้างถึงตำแหน่งหรือหลักในการสร้างเหตุการณ์
80
วิธีการจำลองระบบ (Simulations)
เวลาของเหตุการณ์ที่จะเกิดขึ้นในแบบจำลองนี้มี 2 แบบ เวลาจากการสุ่ม (เขียนโปรแกรมเพื่อสร้างตัวแปรสุ่มนี้) โดยต้องสร้างงาน สร้างเวลาซีพียู สร้างเวลาเข้ามาในระบบ โดยอาศัยหลักความน่าจะเป็น โดยใช้การกระจายต่าง ๆ เช่น uniform, exponential หรือ Poisson เป็นต้น ข้อมูลจากระบบจริง ข้อดีของการใช้ข้อมูลจริงก็คือจะได้ค่าที่ถูกต้องมากกว่าแบบการสุ่ม แต่ถ้ายุ่งยากซับซ้อนมาก ๆ วิธีการสุ่มก็ยังคงมีความจำเป็น การทำแบบจำลองจำเป็นต้องใช้เวลาค่อนข้างมาก ทำให้ค่าใช้จ่ายสูง เพื่อให้ได้ข้อมูลที่เที่ยงตรงมากเท่าใด เวลาและค่าใช้จ่ายจะยิ่งเพิ่มสูงขึ้น
81
Evaluation of CPU Schedulers by Simulation
82
วิธีการสร้างขึ้นจริง
การสร้างแบบจำลองก็คงยังเป็นการจำลองที่ยังไม่สามารถเหมือนจริงได้ สิ่งที่ดีกว่าคือการสร้างอัลกริทึมชนิดต่าง ๆ เพื่อทดลองใช้กับโปรแกรมจัดการระบบจริง ๆ ในสิ่งแวดล้อมจริง วิธีนี้ไม่ค่อยนิยมเนื่องจากค่าใช้จ่ายค่อนข้างสูง ความเสี่ยงสูง และใช้เวลามาก ในบางอัลกอริทึมอาจจะต้องใช้ฮาร์ดแวร์พิเศษ ทำให้เครื่องต้องสามารถปรับเปลี่ยนได้ ค่อนข้างยุ่งยาก แม้จะได้วิธีการที่ดีที่สุด เรายังต้องพิจารณาว่าเราได้ทดลองทุกอัลกอริทึมโดยครบทุกสถานการณ์แล้วหรือไม่ (ปกติเป็นไปได้ยากที่เราจะสามารถทำได้ครบทุกสถานการณ์)
83
วิธีการสร้างขึ้นจริง
ทางออกที่ดีที่สุดเราจะต้องทำให้ระบบคอมพิวเตอร์สามารถปรับเปลี่ยนได้โดยการควบคุมของผู้ใช้ ซึ่งทำได้โดยการตั้งค่าไว้ก่อนเริ่มใช้งาน หรือสามารถปรับค่าได้ในขณะใช้งาน จะมีค่าใช้จ่ายในปริมาณที่เพิ่มมากขึ้นนั่นเอง
งานนำเสนอที่คล้ายกัน
© 2024 SlidePlayer.in.th Inc.
All rights reserved.