790 likes | 1.18k Views
การจัดเวลาซีพียู (CPU Scheduling). การจัดเวลาซีพียู (CPU Scheduling).
E N D
การจัดเวลาซีพียู(CPU Scheduling)
การจัดเวลาซีพียู (CPU Scheduling) การจัดเวลาซีพียู (CPU Scheduling) เป็นหลักการทำงานหนึ่งของโปรแกรมจัดการระบบที่มีความสามารถในการรันโปรแกรมหลาย ๆ โปรแกรมในเวลาเดียวกัน ซึ่งการแบ่งเวลาการเข้าใช้ซีพียูให้กับงานที่อาจถูกส่งเข้ามาหลาย ๆ งานพร้อม ๆ กัน ที่ซีพียูอาจมีจำนวนน้อยกว่าจำนวนโปรแกรม หรืออาจมีซีพียูเพียงตัวเดียว จะทำให้คอมพิวเตอร์สามารถทำงานได้ปริมาณงานที่มากขึ้นกว่าการที่ให้ซีพียูทำงานให้เสร็จทีละงาน
หลักความต้องการพื้นฐานหลักความต้องการพื้นฐาน • จุดประสงค์ของการรันโปรแกรมหลายโปรแกรมคือ ความต้องการที่จะให้ซีพียูมีการทำงานตลอดเวลาเพื่อให้มีการใช้ซีพียูอย่างเต็มที่ และเต็มประสิทธิภาพ • สำหรับระบบคอมพิวเตอร์ที่มีซีพียูตัวเดียว ในเวลาใดเวลาหนึ่งซีพียูจะทำงานได้เพียงงานเดียวเท่านั้น ถ้ามีหลายโปรแกรมหรือหลายงาน งานที่เหลือก็ต้องคอยจนกว่าจะมีการจัดการให้เข้าไปใช้ซีพียู
หลักความต้องการพื้นฐานหลักความต้องการพื้นฐาน • หลักการของการทำงานกับหลายโปรแกรมในขั้นพื้นฐานนั้นค่อนข้างจะไม่ซับซ้อน แต่ละโปรแกรมจะถูกรันจนกระทั่งถึงจุดที่มันต้องคอยอะไรซักอย่างเพื่อใช้ในการทำงานช่วงต่อไป ส่วนมากการคอยเหล่านี้เกี่ยวข้องกับอินพุต/เอาต์พุตนั่นเอง • ซีพียูจะหยุดการทำงานในระหว่างที่คอยอินพุต/เอาต์พุตนี้ ซึ่งการคอยเหล่านี้เป็นการเสียเวลาโดยเปล่าประโยชน์ เพราะซีพียูไม่ได้ทำงานเลย
หลักความต้องการพื้นฐานหลักความต้องการพื้นฐาน • เมื่อใดก็ตามที่ซีพียูต้องคอย และยังมีโปรแกรมในหน่วยความจำหลายโปรแกรมที่คอยการใช้ซีพียูอยู่ เราก็จะจัดให้ซีพียูทำงานในโปรแกรมเหล่านี้ทันที • ระบบจะจัดการนำเอาโปรแกรมที่ต้องคอยอินพุต/เอาต์พุตออกไปก่อน เพื่อที่จะให้โปรแกรมอื่นที่คอยใช้ซีพียูนี้สามารถเข้ามาได้ • ถ้าทำงานในแบบนี้ไปเรื่อย ๆ ซีพียูก็จะได้มีงานทำเกือบตลอดเวลากับโปรแกรมหลาย ๆ โปรแกรมที่อยู่ในระบบ
หลักความต้องการพื้นฐานหลักความต้องการพื้นฐาน • การจัดเวลาให้กับซีพียูแบบนี้ เป็นความต้องการพื้นฐานของระบบปฏิบัติการในคอมพิวเตอร์ • ซีพียูเองก็ถือได้ว่าเป็นทรัพยากรของระบบคอมพิวเตอร์ชนิดหนึ่งที่มีความสำคัญมากที่สุด • โดยตัวซีพียูนี่เอง ที่จะเป็นหลักของการสร้างระบบปฏิบัติการที่มีความสามารถในการรันหลายโปรแกรม
ช่วงเวลาอินพุต/เอาต์พุต และช่วงเวลาซีพียู • ความสำคัญในการจัดเวลาซีพียูขึ้นอยู่กับคุณลักษณะของโปรเซส • การเอ็กซิคิวต์โปรเซสจะประกอบด้วย • เวลาที่ใช้ซีพียู (CPU Burst Cycle) • เวลาที่ต้องคอยอุปกรณ์อินพุต/เอาต์พุต (I/O Burst Cycle) • ในขณะที่มีการเอ็กซิคิวต์โปรเซส จะมีการสลับการทำงานระหว่าง 2 ช่วงเวลานี้เท่านั้น และจะเกิดไม่พร้อมกัน การเอ็กซิคิวต์มักจะเริ่มจากการใช้ซีพียู แล้วก็จะตามด้วยการคอยอินพุต/เอาต์พุต เมื่อจบการรอคอย ก็จะตามมาด้วยเวลาของซีพียู สลับกันไปเรื่อย ๆ จนกว่าจะจบการเอ็กซิคิวต์
ตัวจัดการเวลาซีพียู (CPU Scheduler) • ตัวจัดการเวลาซีพียู (CPUScheduler) หรือตัวจัดการเวลาช่วงสั้น (short–term scheduler)จะเลือกโปรเซสที่อยู่ในหน่วยความจำที่พร้อมในการเอ็กซิคิวต์ที่สุด เพื่อให้ครอบครองเวลาซีพียูและทรัพยากรที่เกี่ยวข้องกับโปรเซสนั้น • คิวของโปรเซสในหน่วยความจำนั้นไม่จำเป็นที่ต้องเป็นแบบใดแบบหนึ่ง อย่างไรก็ตามโปรเซสทุกโปรเซสที่พร้อมใช้ซีพียู จะต้องมีโอกาสได้เข้าครอบครองเวลาซีพียูไม่เวลาใดก็เวลาหนึ่ง • การเข้าและออกจากการครอบครองเวลาซีพียูแต่ละครั้ง จำเป็นต้องมีการเก็บข้อมูลไว้เสมอว่าเข้ามาทำอะไร ต่อไปจะทำอะไร
การให้สิทธิการจัดเวลา (Preemptive Scheduling) • เมื่อมีการเปลี่ยนสถานะของโปรเซสจากสถานะรัน --> สถานะรอเช่น ในสภาวะที่คอยอินพุต/เอาต์พุต หรือการคอยให้โปรเซสลูกเสร็จสิ้นไปก่อน • เมื่อมีการเปลี่ยนสถานะของโปรเซสจากสถานะรัน --> พร้อมเช่น เมื่อมีอินเทอร์รัพต์เกิดขึ้น • เมื่อมีการเปลี่ยนสถานะของโปรเซสจากสถานะรอ --> พร้อม เช่น เมื่ออินพุต/เอาต์พุตเสร็จสิ้นไปแล้ว • เมื่อโปรเซสเสร็จสิ้นไปแล้ว
การให้สิทธิการจัดเวลา (Preemptive Scheduling) • ในสถานการณ์ที่ 1 และ 4 นั้นเป็นสถานการณ์ที่จะต้องมีการตัดสินใจทำอะไรอย่างใดอย่างหนึ่งโดยไม่สามารถหลีกเลี่ยงได้ เช่น ต้องเลือกโปรเซสใหม่เข้ามาเอ็กซิคิวต์ต่อไป เนื่องจากโปรเซสเดิมไม่ใช้ซีพียูอีกแล้ว • สำหรับสถานการณ์ที่ 2 และ 3 นั้น การตัดสินใจต้องอยู่บนพื้นฐานหรือกฎเกณฑ์ของแต่ละอัลกอริทึมที่ใช้ ซึ่งอาจทำให้มีการทำงานที่แตกต่างกันไป
การให้สิทธิการจัดเวลา (Preemptive Scheduling) • การตัดสินใจที่เกิดขึ้นเนื่องจากสถานการณ์ 1 และ 4 การจัดเวลาซีพียูจะเป็นแบบไม่ให้สิทธิ์ก่อน (nonpreemptive) • ส่วนสถานการณ์ที่ 2 และ 3 จะเรียกว่าให้สิทธิ์ก่อน (preemptive) • การทำงานแบบไม่ให้สิทธิ์ก่อนนี้ โปรเซสจะครอบครองเวลาซีพียูไปจนกว่าจะเสร็จสิ้น หรือเปลี่ยนสถานะตัวเองเป็นสถานะคอย • เนื่องจากระบบปฏิบัติการนี้ไม่ต้องการในการใช้ฮาร์ดแวร์พิเศษ เช่น ไทม์เมอร์ (timer) ในการนับคาบเวลาสำหรับการให้โปรเซศใด ๆ ครอบครองเวลาซีพียู โปรเซสจึงสามารถครอบครองเวลาซีพียูได้จนกว่าจะหมดความต้องการ
การให้สิทธิการจัดเวลา (Preemptive Scheduling) • ถ้าเป็นระบบมัลติยูเซอร์ (multiusers) การจัดเวลาแบบให้สิทธิก่อนจะเหมาะสมกว่า • การจัดเวลาแบบให้สิทธิก่อนนั้นต้องใช้ทรัพยากรพิเศษเข้าช่วยเยอะเพื่อแก้ปัญหาต่าง ๆ ที่หลีกเลี่ยงไม่ได้ • เช่น โปรเซส 2 โปรเซสที่ต้องใช้ข้อมูลร่วม (shared data) โปรเซสแรกอาจจะต้องหยุดรอในขณะที่อยู่ในระหว่างการอัปเดทข้อมูล เนื่องจากคาบเวลาของมันหมดลงพอดี แล้วโปรเซสที่สองก็เข้ามาแทน ซึ่งโปรเซสที่สองนี้อาจต้องการที่จะอ่านข้อมูลที่โปรเซสแรกยังแก้ไขไม่เรียบร้อย ทำให้เกิดปัญหา
การให้สิทธิการจัดเวลา (Preemptive Scheduling) • การจัดเวลาแบบให้สิทธิก่อนนั้นมีผลกระทบต่อการออกแบบ Kernel ของระบบปฏิบัติการเป็นอย่างมาก เช่น ในระหว่างการเกิด system call นั้น Kernel อาจจะยังไม่ว่าง อาจจะกำลังทำงานในการจัดคิวโปรเซสอยู่ แล้วอะไรจะเกิดขึ้นถ้าหากว่า โปรเซสถูกทำให้หยุด และออกจากการครอบครองเวลาซีพียู • UNIX มีการแก้ปัญหาตรงจุดนี้โดยการให้ System call สิ้นสุดเอง หรือไม่ก็คอยจนกว่าจะมีการบล็อกการทำงานของอินพุต/เอาต์พุตเกิดขึ้น แล้วจึงมีการทำ คอนเท็กซ์สวิตช์ (Context Switch)
การให้สิทธิการจัดเวลา (Preemptive Scheduling) • การออกแบบ Kernel จะได้ไม่มีความยุ่งยากมาก เพราะว่าตัว Kernel เอง จะไม่ไปจัดการโปรเซสอื่น ๆ ถ้าโครงสร้างข้อมูลของ Kernel ยังไม่อยู่ในสภาพที่สมบูรณ์ • แต่ปัญหาก็คือการทำงานของ Kernel แบบนี้ช้าเกินไป ทำให้ต้องมีการพัฒนาบางสิ่งบางอย่างเพิ่มเติมเข้ามาอีก
Dispatcher • Dispatcher เป็นโมดูลที่ทำหน้าที่ควบคุมการครอบครองเวลาซีพียูของโปรเซส • ฟังก์ชันประกอบด้วย • การย้าย Context • การย้ายไป user mode • กระโดดไปยังตำแหน่งที่เหมาะสมของโปรแกรม เพื่อที่จะเริ่มรันโปรแกรมนั้นใหม่อีกครั้ง • ควรมีการทำงานที่เร็วที่สุดเท่าที่จะทำได้ เพราะทำงานทุกครั้งที่มีการย้ายโปรเซส ซึ่งเวลาที่ใช้ในการทำนี้เรียก Dispatch Latency
ข้อพิจารณาในการจัดเวลาข้อพิจารณาในการจัดเวลา • อรรถประโยชน์ของซีพียู (CPU Utilization) : การใช้ประโยชน์จากซีพียูอย่างสูงสุด โดยทำให้ซีพียูมีงานทำมากที่สุดเท่าที่จะทำได้ ซีพียูควรจะถูกใช้อยู่ระหว่าง 40-90 % • ทรูพุต (Throughput) : จำนวนงานที่เสร็จต่อหน่วยเวลา • เวลาทั้งหมด (Turnaround Time) : คือช่วงเวลาทั้งหมดที่ใช้ในการทำงานใดงานหนึ่งตั้งแต่เริ่มต้นเข้าไปในระบบ จนงานถูกทำจนเสร็จเรียบร้อย (รวมเวลาที่รอเข้าหน่วยความจำ เวลาที่คอยอยู่ในคิว เวลาที่ใช้ซีพียู และเวลาของอินพุต/เอาต์พุต)
ข้อพิจารณาในการจัดเวลาข้อพิจารณาในการจัดเวลา • เวลารอคอย (Waiting Time): ช่วงเวลาที่งานใดงานหนึ่งต้องรอการทำงานของตัวจัดเวลา โดยไม่รวมเวลาของการใช้ซีพียู และเวลาของการติดต่ออินพุต/เอาต์พุตส่วนใหญ่ก็คือเวลาที่งานต้องคอยอยู่ในคิว (Ready Queue) • เวลาตอบสนอง (Response Time) คือเวลาที่วัดระหว่างเวลาที่มีการร้องขอการกระทำใด ๆ ต่อระบบแล้วมีการตอบรับกลับออกมา (ความเร็วของเวลาตอบสนองจึงมักจะขึ้นอยู่กับอุปกรณ์อินพุต/เอาต์พุต)
ข้อพิจารณาในการจัดเวลาข้อพิจารณาในการจัดเวลา • สิ่งที่ผู้ออกแบบระบบการจัดเวลาต้องการก็คือ การทำให้เวลาการทำงานสั้นที่สุดนั่นเอง • ในความเป็นจริงแล้ว อาการได้อย่างเสียอย่างมักจะต้องเกิดขึ้น • เราไม่สามารถที่จะได้ระบบที่สามารถทำให้มีการใช้ซีพียูได้สูงสุด โดยที่มีทรูพุตมากที่สุด มีเวลารวมเร็วที่สุด และได้เวลาตอบสนองเร็วที่สุดได้พร้อม ๆ • ดังนั้นการหาจุดพอดีจากค่าเฉลี่ยของคุณสมบัติแต่ละชนิดจึงมีความจำเป็น ซึ่งบางครั้งอาจจะต้องมีการกำหนดจุดที่ยอมรับได้ไว้ที่จุดใดจุดหนึ่ง ถ้าหากว่าไม่สามารถหาค่าเฉลี่ยได้
อัลกอริทึมของการจัดเวลา (Scheduling Algorithms) • การจัดเวลาแบบมาก่อนได้ก่อน (FCFS : First-Come First-Served) • โปรเซสใดที่ร้องขอใช้ซีพียูก่อนก็จะได้รับการจัดสรรให้ครอบครองเวลาซีพียูก่อน • ผลเสียของอัลกอริทึ่มนี้คือค่าเฉลี่ยของการคอยในคิวแบบมาก่อนได้ก่อนนี้ค่อนข้างจะสูง
การจัดเวลาแบบมาก่อนได้ก่อน (FCFS) (0+24+27) / 3 = 17 วินาที (0+3+6) / 3 = 3 วินาที
อัลกอริทึมของการจัดเวลา (Scheduling Algorithms) • การจัดเวลาแบบงานสั้นทำก่อน(SJF : Short–Job–First Scheduling) • โปรเซสที่ต้องการคาบเวลาของเวลาซีพียูในเวลาถัดไปสั้นที่สุด จะได้รับเลือกให้เข้ามาครบครองซีพียูก่อน • ถ้ามีโปรเซสหลายตัวที่มีคาบเวลาของเวลาซีพียูของช่วงต่อไปเท่า ๆ กัน ก็จะใช้หลักการมาก่อนได้ก่อนมาใช้ในการคัดเลือก
การจัดเวลาแบบงานสั้นทำก่อน (SJF) (0+3+9+16) / 4 = 7 วินาที FCFS = (0+6+8+7) / 4 = 10.25วินาที
อัลกอริทึมของการจัดเวลา (Scheduling Algorithms) • การจัดเวลาแบบงานสั้นทำก่อน(SJF : Short–Job–First Scheduling) • ข้อยุ่งยากของวิธี SJF คือการวัดคาบเวลาของเวลาซีพียูถัดไปของแต่ละโปรเซสที่ร้องขอเวลาซีพียูเข้ามา • ในระบบการทำงานแบบแบ็ตซ์ เจ้าของโปรเซสจะต้องเป็นผู้บอกช่วงเวลาที่จำกัดของการใช้ซีพียูสำหรับโปรเซสให้กับระบบ เพื่อใช้อ้างอิงสำหรับการจัดลำดับดังกล่าว ซึ่งเจ้าของโปรเซสก็จะพยายามที่จะให้ค่าต่ำที่สุดเพื่อโอกาสในการเข้าไปใช้ซีพียูก่อนมีมากที่สุด • ถ้าคาบเวลาที่กำหนดไว้นี้มีค่าน้อยเกินไป ก็จะทำให้โปรแกรมนั้นไม่สามารถคำนวณสำเร็จได้ ซึ่งจะต้องเสียเวลามาเริ่มต้นใหม่อีก
อัลกอริทึมของการจัดเวลา (Scheduling Algorithms) • การจัดเวลาแบบงานสั้นทำก่อน(SJF : Short–Job–First Scheduling) • มีปัญหาในการนำมาใช้ในการจัดเวลาช่วงสั้น (Short-termScheduling)เพราะว่าเราไม่มีทางจะรู้ได้ว่าความยาวของคาบเวลาการใช้ซีพียูในช่วงต่อไปของแต่ละโปรเซสเป็นเท่าใด วิธีการที่ใช้มักจะเป็นแค่การประมาณเอาเท่านั้น โดยประมาณจากระยะเวลาของเวลาซีพียูในคาบเวลาที่ผ่านมาด้วยการหาค่าเฉลี่ย
อัลกอริทึมของการจัดเวลา (Scheduling Algorithms)
อัลกอริทึมของการจัดเวลา (Scheduling Algorithms) • การจัดเวลาแบบงานสั้นทำก่อน(SJF : Short–Job–First Scheduling) • SJF สามารถเป็นได้ทั้งแบบให้สิทธิ์ก่อน หรือไม่ให้สิทธิ์ก่อน • การตัดสินใจจะเกิดขึ้นทุกครั้งเมื่อมีโปรเซสใหม่เข้ามาในคิวในขณะที่ยังมี โปรเซสอื่นใช้งานซีพียูอยู่ • โปรเซสใหม่อาจมีคาบเวลาของเวลาซีพียูสั้นกว่าเวลาที่เหลืออยู่ของเวลาซีพียูของโปรเซสที่กำลังใช้ซีพียู --> อัลกอริทึมที่เป็นแบบให้สิทธิ์ก่อนจะทำการหยุดงานที่กำลังใช้ซีพียูอยู่ • แบบไม่ให้สิทธิ์ก่อน --> ปล่อยให้งานนั้นใช้ซีพียูจนเสร็จสิ้นเวลาซีพียูของช่วงเวลานั้น บางครั้งการทำ SJF แบบให้สิทธิก่อน อาจมีชื่อเรียกว่า Shortest-Remaining-Time-First
อัลกอริทึมของการจัดเวลา (Scheduling Algorithms) ให้สิทธิ์ก่อน = [(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 วินาที
อัลกอริทึมของการจัดเวลา (Scheduling Algorithms) • การจัดเวลาตามลำดับความสำคัญ(Priority Scheduling) • โปรเซสที่มีลำดับความสำคัญสูงที่สุดขจะทำงานก่อน แต่ถ้ามีงานที่มีลำดับความสำคัญเท่ากัน ก็จะมีการนำเอามาก่อนได้ก่อน (FCFS) มาใช้ • ลำดับความสำคัญ จะกำกับไว้ด้วยสัญลักษณ์ที่เปรียบเทียบกันได้ เช่น ตัวเลขจำนวนนับ เป็นต้น • ถ้าไม่มีข้อตกลงในการใช้ระบบการกำกับของความสำคัญเหล่านี้ อาจก่อให้เกิดความสับสนขึ้นได้
การจัดเวลาตามลำดับสำคัญ (Priority) (0+1+6+16+18) / 5 = 41/5 = 8.2 วินาที
อัลกอริทึมของการจัดเวลา (Scheduling Algorithms) • การจัดเวลาตามลำดับความสำคัญ(Priority Scheduling) • ปัญหาใหญ่ของการจัดเวลาซีพียูแบบนี้ก็คือโปรเซสที่มีลำดับความสำคัญต่ำอาจจะไม่มีโอกาสได้เข้าไปใช้ซีพียูเลย ถ้าหากว่ามีโปรเซสที่มีลำดับความสำคัญสูงกว่าอยู่เป็นจำนวนมาก • การแก้ปัญหาสถานการณ์นี้คือ การเพิ่มลำดับความสำคัญให้กับโปรเซสที่ยังไม่เสร็จเหล่านี้ตามระยะเวลาที่คอยอยู่ในคิว
อัลกอริทึมของการจัดเวลา (Scheduling Algorithms) • การจัดเวลาตามลำดับความสำคัญ(Priority Scheduling) • เช่น สมมติว่าเรามีการออกแบบให้มีลำดับความสำคัญจาก 0-127 ขั้น เราอาจจะเพิ่มอัลกอริทึมพิเศษลงไปว่า ถ้าโปรเซสใดคอยครบ 15 นาที ก็ให้ลดตัวเลขลำดับขั้นลงทีละขั้น และจะลดลงไปเรื่อย ๆ ทุก ๆ 15 นาที ซึ่งการทำแบบนี้ แม้โปรเซสที่เข้ามาในระบบมีลำดับความสำคัญต่ำสุดที่ 127 ก็จะมีโอกาสเข้าไปใช้ซีพียูภายในเวลาไม่เกิน 32 ชั่วโมง เพราะในที่สุดโปรเซสนี้ก็จะมีลำดับความสำคัญเท่ากับ 0
อัลกอริทึมของการจัดเวลา (Scheduling Algorithms) • การจัดเวลาแบบวนรอบ (RR : Round-Robin Scheduling) • คิดขึ้นมาเพื่อใช้กับระบบคอมพิวเตอร์แบบแบ่งเวลาโดยเฉพาะ โดยมีลักษณะการทำงานแบบมาก่อนได้ก่อน (FCFS) แต่ให้มีกรรมวิธีของให้สิทธิ์ก่อนรวมอยู่ด้วย แต่ละโปรเซสที่เข้ามาในระบบจะถูกจำกัดเวลาการเข้าไปใช้ซีพียูเท่า ๆ กัน ซึ่งช่วงเวลานี้จะเป็นช่วงเวลาสั้นเรียกว่า เวลาควันตัม(QuantumTime) • ระยะเวลาควันตัมนี้ มีความยาวระหว่าง 10 ถึง 100 มิลลิวินาที • คิวที่ใช้ก็เป็นแบบวงกลม (Circular Queue) • ตัวจัดเวลาจะมีการให้ซีพียูกับโปรเซสที่อยู่ในคิวแบบวนไปรอบ ๆ
อัลกอริทึมของการจัดเวลา (Scheduling Algorithms) • การจัดเวลาแบบวนรอบ (RR : Round-Robin Scheduling) • ในแต่ละคาบเวลาจะมีความยาวของการได้รับซีพียูมากที่สุดคือ 1 ควันตัม ถ้าโปรเซสใดไม่สามารถกระทำได้สำเร็จภายใน 1 ควันตัมนี้ โปรเซสก็จะต้องถูกนำกลับไปไว้ในคิวเช่นเดิม • สถานภาพต่าง ๆ ของโปรเซสที่ยังทำไม่เสร็จก็จะถูกบันทึกไว้ เพื่อว่าเมื่อถึงโอกาสได้ครอบครองซีพียูอีก ก็จะได้เริ่มต้นรันต่อจากครั้งที่แล้วโดยไม่ต้องเริ่มใหม่ทั้งหมด
อัลกอริทึมของการจัดเวลา (Scheduling Algorithms) • การจัดเวลาแบบวนรอบ (RR : Round-Robin Scheduling) • มีคิวที่พร้อมทำงาน (Ready Queue)เป็นแบบมาก่อนได้ก่อนไว้สำหรับเก็บโปรเซสต่าง ๆ โปรเซสที่เข้ามาใหม่จะถูกนำมาต่อไว้ที่หางของคิว ตัวจัดเวลาจะเลือกเอาโปรเซสที่อยู่ตรงหัวคิวออกมา แล้วกำหนดให้ไทม์เมอร์หยุดการให้เวลาซีพียูหลังจากนั้น 1 ควันตัม แล้วนำโปรเซสออกไปต่อที่หางคิว ถ้าหากว่าโปรแกรมยังไม่สิ้นสุดการทำงาน • โปรเซสที่เสร็จก่อนถึงเวลา 1 ควันตัม จะต้องให้สิ้นสุดและออกจากการครอบครองซีพียู เพื่อโปรเซสอื่นที่อยู่ตรงหัวคิวเข้ามาทำงานได้
การจัดเวลาแบบวนรอบ (Round Robin) [(10-4)+4+7] / 3 = 17/3 = 5.66 วินาที
อัลกอริทึมของการจัดเวลา (Scheduling Algorithms) • การจัดเวลาแบบวนรอบ (RR : Round-Robin Scheduling) • ถ้ามีโปรเซสอยู่ในคิวจำนวน n โปรเซส และระยะเวลาของควันตัมเท่ากับ q หน่วย แต่ละโปรเซสที่อยู่ในคิวจะมีเวลาเฉลี่ยของการคอยไม่นานไปกว่า (n–1) x q หน่วย ก่อนที่จะได้รับการเข้าไปใช้ซีพียูอีกครั้ง • เช่น ถ้ามีโปรเซส 5 โปรเซส และระยะเวลาควันตัมคือ 20 วินาที แต่ละโปรเซสจะต้องคอยในคิวโดยเฉลี่ยประมาณไม่เกิน 80 วินาที ไม่เกินก็เพราะว่าการคอยอาจจะน้อยกว่านี้ ถ้าหากว่ามีโปรเซสใด ๆ สามารถทำงานเสร็จโดยใช้เวลาน้อยกว่าเวลาควันตัมนั่นเอง
อัลกอริทึมของการจัดเวลา (Scheduling Algorithms) • การจัดเวลาแบบวนรอบ (RR : Round-Robin Scheduling) • ประสิทธิภาพของการวนรอบขึ้นอยู่กับการกำหนดขนาดของควันตัม • ถ้าขนาดของควันตัมใหญ่หรือนานเกินไป ประสิทธิภาพของการวนรอบก็จะใกล้เคียงกับแบบมาก่อนได้ก่อน • แต่ถ้าขนาดของควันตัมเล็กมากเกินไป ทรูพุต (throughput) ของระบบก็จะช้าลง เนื่องจากการนำเอาโปรเซสเข้าและออกจากการครอบครองซีพียู จะต้องเสียเวลาบางส่วนในการทำ Dispatcher • ถ้าขนาดของควันตัมเล็กใกล้เคียงกับเวลาของ Dispatcher เวลาของระบบรวมก็จะหมดไปกับการเอาโปรเซสเข้าและออก (Context Switch) นั่นเอง
การจัดเวลาแบบวนรอบ (Round Robin)
การบ้าน โปรเซส เวลาที่ใช้ ลำดับความสำคัญ P1 8 2 P2 1 1 P3 2 2 P4 1 3 P5 3 1 หาเวลาคอยเฉลี่ยแบบ FCFS, SJF, Priority และ RR (เวลาควันตัม=2)
อัลกอริทึมของการจัดเวลา (Scheduling Algorithms) • การจัดเวลาแบบคิวหลายระดับ (Multilevel Queue Scheduling) • เป็นการจัดเวลาของซีพียูอีกแบบหนึ่งสำหรับระบบที่สามารถแบ่งระดับชั้นของงานได้อย่างชัดเจน • งานที่เป็นฟอร์กราวนด์ (Foreground) หรืออินเตอร์แอ็กทีฟ (Interactive) กับงานที่เป็นแบ็คกราวนด์ (Background) หรือแบ็ตช์ (Batch) • งานทั้งสองแบบนี้ต้องการเวลาตอบสนอง (Response time)ที่แตกต่างกัน ซึ่งสามารถใช้ระบบการจัดเวลาที่แตกต่างกันได้
อัลกอริทึมของการจัดเวลา (Scheduling Algorithms) • การจัดเวลาแบบคิวหลายระดับ (Multilevel Queue Scheduling) • ใช้วิธีแบ่งคิวออกเป็นหลาย ๆ ระดับโดยที่แต่ละระดับหมายถึงระดับโปรเซสที่มีความสำคัญแตกต่างกัน • การแบ่งระดับความสำคัญของโปรเซสนั้น สามารถแบ่งได้หลายลักษณะ เช่นแบ่งตามขนาดโปรเซส, จำนวนหน่วยความจำที่ต้องใช้หรือจำนวนอินพุต/เอาต์พุตเป็นต้น • แต่ละคิวยังสามารถใช้หลักการจัดเวลาที่แตกต่างกันได้ด้วย เช่น งานที่เป็นฟอร์กราวนด์ก็อาจใช้การจัดตารางแบบวนรอบส่วนงานที่เป็นแบบแบ็คกราวนด์ก็อาจใช้แบบมาก่อนได้ก่อน ก็ได้
การจัดเวลาแบบคิวหลายระดับการจัดเวลาแบบคิวหลายระดับ
อัลกอริทึมของการจัดเวลา (Scheduling Algorithms) • การจัดเวลาแบบคิวหลายระดับ (Multilevel Queue Scheduling) • แต่ละคิวจะมีความสำคัญเหนือกว่าคิวที่อยู่ด้านล่างถัดลงไปเสมอ • โปรเซสที่คอยอยู่ในคิวที่มีความสำคัญต่ำจะมีโอกาสได้ออกมาใช้ซีพียูก็ต่อเมื่อคิวที่มีความสำคัญสูงกว่าไม่มีโปรเซสที่ต้องทำเหลืออยู่เท่านั้น • หรือในขณะที่โปรเซสที่มีลำดับความสำคัญกำลังครอบครองซีพียู แล้วมีโปรเซสที่มีลำดับความสำคัญสูงกว่าเข้ามาคอยอยู่ในคิวที่สูงกว่า โปรเซสนี้ก็จะถูกนำออกมาจากซีพียูทันที
อัลกอริทึมของการจัดเวลา (Scheduling Algorithms) • การจัดเวลาแบบคิวหลายระดับ (Multilevel Queue Scheduling) • เพื่อป้องกันไม่ให้โปรเซสที่อยู่ในคิวต่ำ ต้องคอยอยู่นานเกินไป หรืออาจจะไม่มีโอกาสได้เข้าไปใช้ซีพียูเลย เพราะว่าในคิวบน ๆ ไม่เคยว่างเลย • ต้องมีการกำหนดสัดส่วนเวลาให้กับแต่ละคิวในการทำงานเข้าไปใช้ซีพียู เช่น การกำหนดให้เวลา 80 เปอร์เซ็นต์เป็นของโปรเซสที่เป็นฟอร์กราวนด์ และอีก 20 เปอร์เซ็นต์เป็นของงานแบ็คกราวนด์ เป็นต้น
อัลกอริทึมของการจัดเวลา (Scheduling Algorithms) • การจัดเวลาแบบคิวหลายระดับ (Multilevel Queue Scheduling) • การทำงานแบบการจัดลำดับความสำคัญแบบเปลี่ยนแปลงได้นั้นอาจมีชื่อเรียกอีกอย่างได้ว่าเป็นการทำงานแบบ Multilevel Feedback Queue Scheduling เพราะว่าโปรเซสในแต่ละคิว สามารถมีการเลื่อนชั้นระดับความสำคัญขึ้นหรือลงได้ • อาจจะต้องเสียเวลาเพิ่มอีกนิดหน่อยในการคำนวณหาระดับความสำคัญใหม่ให้กับโปรเซส
อัลกอริทึมของการจัดเวลา (Scheduling Algorithms) • การจัดเวลาแบบคิวหลายระดับ (Multilevel Queue Scheduling) • ส่วนมากจะแบ่งระดับความสำคัญตามระยะเวลาของเวลาซีพียูเช่นเมื่อซีพียูทำงานนานขึ้นก็อาจจะถูกลดชั้นลงมาสู่คิวที่มีลำดับความสำคัญต่ำได้ ซึ่งจะทำให้โปรเซสที่มีการใช้ซีพียูน้อยแต่มีอินพุต/เอาต์พุต หรืออินเทอร์แอ็กทีฟมาก ๆ มีโอกาสเข้าไปอยู่ในคิวที่มีความสำคัญมากได้ • วิธีนี้ยังเป็นการป้องกันไม่ให้มีโปรเซสที่มีความสำคัญน้อยถูกดองอยู่ในคิว เพราะโปรเซสที่อยู่ในคิวที่ต่ำก็สามารถเลื่อนขึ้นไปสู่คิวที่สูงขึ้นถ้าคอยอยู่นานเกินไป
การจัดเวลาแบบคิวหลายระดับการจัดเวลาแบบคิวหลายระดับ
อัลกอริทึมของการจัดเวลา (Scheduling Algorithms) • การจัดเวลาแบบคิวหลายระดับ (Multilevel Queue Scheduling) • จำนวนของคิว • วิธีของการจัดเวลาของแต่ละคิว • หลักเกณฑ์ในการตัดสินใจเพิ่มความสำคัญของโปรเซส • หลักเกณฑ์ในการตัดสินใจลดความสำคัญของโปรเซส • หลักเกณฑ์ในการตัดสินใจนำเอาโปรเซสที่ต้องการครอบครองซีพียูมาเข้าในคิว