710 likes | 912 Vues
Advanced Operating System Operating System Technology. การจัดลำดับงานของหน่วยประมวลผลกลาง. CPU Scheduling. CPU Scheduling. เนื้อหา. - แนวคิดพื้นฐาน (Basic Concepts) - เกณฑ์การจัดตารางเวลาการทำงาน (Scheduling Criteria) วิธีการจัดตารางเวลาการทำงาน (Scheduling Algorithms)
E N D
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 ช่วงประมวลผล/ช่วงรับส่งข้อมูล • การจัดตารางการทำงานที่ดี ต้องทราบลักษณะการทำงานของกระบวนการ • กระบวนการทั่วไปจะทำงานเป็นวงจรคือ ทำงานในหน่วยประมวลผลและรอคอย การรับ-ส่งข้อมูลจากอุปกรณ์สลับกันไป • โดยเริ่มต้นที่ทำงานในหน่วยประมวลผลก่อนเรียกว่า ช่วงประมวลผล (CPU-burst) แล้วก็จะหยุดเพื่อทำงานในอุปกรณ์รับ-ส่งข้อมูลเรียกว่า ช่วงรับส่งข้อมูล (I/O burst) แล้วตามด้วยช่วงประมวลผลอีกสลับกันไปจนสิ้นสุดกระบวนการ • ควรกระจายการดำเนินการหน่วยประมวลผลให้เท่าเทียมกัน
ตัวจัดตารางการทำงานของหน่วยประมวลผลกลางตัวจัดตารางการทำงานของหน่วยประมวลผลกลาง (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) • สิ่งที่ผู้ออกแบบระบบการจัดตารางเวลาต้องการคือ การทำให้เวลาการทำงานสั้นที่สุดนั่นเอง • ในความเป็นจริง • เราไม่สามารถที่จะได้ระบบที่สามารถทำให้มีการใช้ซีพียูได้สูงสุด โดยที่มีทรูพุตมากที่สุด มีเวลารวมเร็วที่สุด และได้เวลาตอบสนองเร็วที่สุดได้พร้อมๆ กัน • ดังนั้นการหาจุดพอดีจากค่าเฉลี่ยของคุณสมบัติแต่ละชนิดจึงมีความจำเป็น ซึ่งบางครั้งอาจจะต้องมีการกำหนดจุดที่ยอมรับได้ไว้ที่จุดใดจุดหนึ่ง ถ้าหากว่าไม่สามารถหาค่าเฉลี่ยได้
วิธีการจัดตารางเวลาการทำงาน (Scheduling Algorithms) • การจัดตารางการทำงานแบบมาก่อนให้บริการก่อน (First-Come, First-Served Scheduling; FCFS) • การจัดตารางการทำงานแบบเวลาในการทำงานสั้นที่สุดให้ทำก่อน(Shortest-Job-First Scheduling; SJF) • การจัดตารางการทำงานแบบคำนึงถึงระดับความสำคัญ (Priority Scheduling) • การจัดตารางการทำงานแบบวนรอบ (Round Robin Scheduling; RR)
การจัดตารางการทำงานแบบมาก่อนให้บริการก่อนการจัดตารางการทำงานแบบมาก่อนให้บริการก่อน First-Come, First-Served Scheduling (FCFS) • โปรเซสใดที่ร้องขอใช้ซีพียูก่อนก็จะได้รับการจัดสรรให้ครอบครองเวลาซีพียูก่อน • ผลเสียของอัลกอริทึมนี้คือค่าเฉลี่ยของการคอยในคิวแบบมาก่อนได้ก่อนนี้ค่อนข้างจะสูง
First- Come, First-Served (FCFS) Scheduling ProcessBurst 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: (0 + 24 + 27)/3 = 17
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: (6 + 0 + 3)/3 = 3 • Much better than previous case
First- Come, First-Served (FCFS) Scheduling • เกิดปัญหา Convoy effect หมายถึง ต้องรอกระบวนการใหญ่เพียงกระบวนการเดียวใช้งานเสร็จแล้วจึงปล่อยหน่วยประมวลผลคืนสู่ระบบ • ประสิทธิผลในการทำงานของหน่วยประมวลผลและอุปกรณ์ต่ำลง • เป็นการทำงานที่ไม่สามารถแทรกกลางคันได้
การจัดตารางการทำงานแบบเวลาในการทำงานสั้นที่สุดให้ทำก่อนการจัดตารางการทำงานแบบเวลาในการทำงานสั้นที่สุดให้ทำก่อน Shortest-Job-First Scheduling (SJF) • ในการจัดตารางการทำงานจะพิจารณาจากโปรเซสที่ใช้ระยะเวลาที่สั้นที่สุด แบ่งออกเป็นสองแบบคือ • - Non-preemptive คือการทำงานที่หน่วยประมวลผลจะให้โปรเซสทำงานจนเสร็จสิ้นโดยไม่คำนึงถึงระดับความสำคัญ • - Preemptive คือการทำงานที่พิจารณาถึงระดับความสำคัญ เมื่อเกิดโปรเซสขึ้นใหม่ที่ใช้ระยะเวลาในการทำงานสั้นกว่าโปรเซสเดิมที่กำลังทำงานอยู่ หน่วยประมวลผลจะให้โปรเซสใหม่ที่เกิดขึ้นเข้าทำงานก่อน และให้โปรเซสเดิมที่ต้องใช้เวลาในการทำงานนานกว่าหยุดการทำงานโดยชั่วคราว หรือเรียกว่า Shortest-Remaining-Time (SRT)
การจัดตารางการทำงานแบบเวลาในการทำงานสั้นที่สุดให้ทำก่อนการจัดตารางการทำงานแบบเวลาในการทำงานสั้นที่สุดให้ทำก่อน Shortest-Job-First Scheduling (SJF) • - การทำงานด้วยวิธีนี้สามารถช่วยลดระยะเวลาในการรอคอยของแต่ละโปรเซสโดยรวมเฉลี่ยลดลง • ความยากคือ จะต้องทราบเวลาของการร้องขอใช้งาน CPU โปรเซสต่อไป
Example of SJF ProcessBurst Time P16 P2 8 P37 P43 • SJF scheduling chart • Average waiting time = (3 + 16 + 9 + 0) / 4 = 7
Example of Shortest-remaining-time-first • Now we add the concepts of varying arrival times and preemption to the analysis ProcessArrival TimeBurst Time P10 8 P2 1 4 P32 9 P43 5 • Preemptive SJF Gantt Chart • 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
Example of Priority Scheduling ProcessBurst TimePriority P1 10 3 P2 1 1 P3 2 4 P4 1 5 P5 5 2 • Priority scheduling Gantt Chart • Average waiting time = (0 + 1 + 6 + 16 + 18) / 5 = 8.2 msec
การจัดตารางการทำงานแบบวนรอบ (Round RobinScheduling; RR) • กำหนดให้แต่ละโปรเซสได้รับเวลาในการประมวลผลหรือเวลาที่สามารถเข้าใช้หน่วยประมวลผลระยะสั้นๆ เท่าๆ กัน เรียกว่าส่วนแบ่งเวลา (time quantum, q) • ประมาณ 10 – 100 มิลลิวินาที • เมื่อแต่ละโปรเซสใช้เวลาที่ตนเองได้รับหมดไป โปรเซสนั้นก็จะต้องหยุดทำงานและถูกย้ายกลับเข้าไปอยู่ยังลำดับสุดท้ายของคิวพร้อมทำงานเพื่อการรอคอยเข้าทำงานอีกครั้ง วนรอบเช่นนี้จนจบการทำงาน • ไม่มีกระบวนการใดได้รับช่วงเวลาทำงานมากกว่า 1 ส่วนแบ่งเวลา
การจัดตารางการทำงานแบบวนรอบ (Round Robin; RR) • ถ้ามี • จำนวนโปรเซส (n) อยู่ในคิวพร้อมทำงาน • ส่วนแบ่งเวลา (q) • แต่ละโปรเซสจะได้เวลาเพื่อการเข้าใช้งานหน่วยประมวลผลเป็น 1/n ของเวลาที่หน่วยประมวลผลสามารถประมวลผลในหนึ่งช่วงเวลา • ดังนั้นจึงไม่มีโปรเซสใดที่จะต้องรอนานเกินกว่า(n-1)q หน่วยเวลา • เช่น ถ้ามีโปรเซส 5 โปรเซส และระยะเวลาควันตัมคือ 20 วินาที แต่ละโปรเซสจะต้องคอยในคิวโดยเฉลี่ยประมาณไม่เกิน 80 วินาที เพราะว่าการคอยอาจจะน้อยกว่านี้ ถ้าหากว่ามีโปรเซสใด ๆ สามารถทำงานเสร็จโดยใช้เวลาน้อยกว่าเวลาควันตัมนั่นเอง
Example of RR with Time Quantum = 4 ProcessBurst Time P1 24 P2 3 P3 3 • The Gantt chart is: [(10-4)+4+7] / 3 = 17/3 = 5.67 วินาที
การจัดตารางการทำงานแบบวนรอบ ( Round Robin; RR ) • - ประสิทธิผลขึ้นอยู่กับ • - q มีขนาดใหญ่ FCFS • q ที่มีขนาดเล็ก เป็นการแบ่งปันการประมวลผลซึ่งมี Overhead สูง
เวลาควอนตัม กับเวลาในการสลับสภาพแวดล้อม Time Quantum and Context Switch Time
การจัดตารางการทำงานแบบวนรอบ (RR : Round-Robin Scheduling) • ประสิทธิภาพของการวนรอบขึ้นอยู่กับการกำหนดขนาดของควันตัม • ถ้าขนาดของควันตัมใหญ่หรือนานเกินไป ประสิทธิภาพของการวนรอบก็จะใกล้เคียงกับแบบมาก่อนได้ก่อน • ถ้าขนาดของควันตัมเล็กมากเกินไป ทรูพุต (throughput) ของระบบก็จะช้าลง เนื่องจากการสลับโปรเซสเข้าและออกจากการครอบครองซีพียู จะต้องเสียเวลาบางส่วนในการทำ Dispatcher • ถ้าขนาดของควันตัมเล็กใกล้เคียงกับเวลาของ Dispatcher เวลาของระบบรวมก็จะหมดไปกับการสลับโปรเซส(Context Switch) นั่นเอง
การจัดตารางการทำงานแบบคิว (Queue Scheduling) • การจัดตารางการทำงานของคิวแบบหลายระดับ (Multilevel Queue Scheduling) • การจัดตารางการทำงานของคิวผลตอบกลับหลายระดับ (Multilevel Feedback Queue Scheduling)
การจัดลำดับการทำงานของคิวแบบหลายระดับการจัดลำดับการทำงานของคิวแบบหลายระดับ Multilevel Queue Scheduling • เป็นการจัดเวลาของซีพียูอีกแบบหนึ่งสำหรับระบบที่สามารถแบ่งระดับชั้นของงานได้อย่างชัดเจน • งานในคิวพร้อมทำงานแบ่งได้เป็น • งานที่เป็น Foregroundหรืองานโต้ตอบ(Interactive) กับงานที่เป็นBackgroundหรือแบบกลุ่ม (Batch) • งานทั้งสองแบบนี้ต้องการเวลาตอบสนอง (Response time)ที่แตกต่างกัน ซึ่งสามารถใช้ระบบการจัดเวลาที่แตกต่างกันได้
การจัดตารางการทำงานของคิวแบบหลายระดับการจัดตารางการทำงานของคิวแบบหลายระดับ Multilevel Queue Scheduling • ใช้วิธีแบ่งคิวออกเป็นหลาย ๆ ระดับโดยที่แต่ละระดับหมายถึงระดับโปรเซสที่มีความสำคัญแตกต่างกัน • การแบ่งระดับความสำคัญของโปรเซสนั้น สามารถแบ่งได้หลายลักษณะ เช่นแบ่งตามขนาดโปรเซส, จำนวนหน่วยความจำที่ต้องใช้ หรือจำนวนอินพุต/เอาต์พุตเป็นต้น • แต่ละคิวยังสามารถใช้หลักการจัดเวลาที่แตกต่างกันได้ด้วย เช่น งานที่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 ว่าง
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
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
การจัดตารางการทำงานแบบหน่วยประมวลผลหลายหน่วยการจัดตารางการทำงานแบบหน่วยประมวลผลหลายหน่วย Multiple-Processor Scheduling • CPU scheduling more complex when multiple CPUs are available • Homogeneousprocessorswithin 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