1 / 71

การจัดเวลาซีพียู (CPU Scheduling)

การจัดเวลาซีพียู (CPU Scheduling). การจัดเวลาซีพียู (CPU Scheduling).

Download Presentation

การจัดเวลาซีพียู (CPU Scheduling)

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. การจัดเวลาซีพียู(CPU Scheduling)

  2. การจัดเวลาซีพียู (CPU Scheduling) การจัดเวลาซีพียู (CPU Scheduling) เป็นหลักการทำงานหนึ่งของโปรแกรมจัดการระบบที่มีความสามารถในการรันโปรแกรมหลาย ๆ โปรแกรมในเวลาเดียวกัน ซึ่งการแบ่งเวลาการเข้าใช้ซีพียูให้กับงานที่อาจถูกส่งเข้ามาหลาย ๆ งานพร้อม ๆ กัน ที่ซีพียูอาจมีจำนวนน้อยกว่าจำนวนโปรแกรม หรืออาจมีซีพียูเพียงตัวเดียว จะทำให้คอมพิวเตอร์สามารถทำงานได้ปริมาณงานที่มากขึ้นกว่าการที่ให้ซีพียูทำงานให้เสร็จทีละงาน

  3. หลักความต้องการพื้นฐานหลักความต้องการพื้นฐาน • จุดประสงค์ของการรันโปรแกรมหลายโปรแกรมคือ ความต้องการที่จะให้ซีพียูมีการทำงานตลอดเวลาเพื่อให้มีการใช้ซีพียูอย่างเต็มที่ และเต็มประสิทธิภาพ • สำหรับระบบคอมพิวเตอร์ที่มีซีพียูตัวเดียว ในเวลาใดเวลาหนึ่งซีพียูจะทำงานได้เพียงงานเดียวเท่านั้น ถ้ามีหลายโปรแกรมหรือหลายงาน งานที่เหลือก็ต้องคอยจนกว่าจะมีการจัดการให้เข้าไปใช้ซีพียู

  4. หลักความต้องการพื้นฐานหลักความต้องการพื้นฐาน • หลักการของการทำงานกับหลายโปรแกรมในขั้นพื้นฐานนั้นค่อนข้างจะไม่ซับซ้อน แต่ละโปรแกรมจะถูกรันจนกระทั่งถึงจุดที่มันต้องคอยอะไรซักอย่างเพื่อใช้ในการทำงานช่วงต่อไป ส่วนมากการคอยเหล่านี้เกี่ยวข้องกับอินพุต/เอาต์พุตนั่นเอง • ซีพียูจะหยุดการทำงานในระหว่างที่คอยอินพุต/เอาต์พุตนี้ ซึ่งการคอยเหล่านี้เป็นการเสียเวลาโดยเปล่าประโยชน์ เพราะซีพียูไม่ได้ทำงานเลย

  5. หลักความต้องการพื้นฐานหลักความต้องการพื้นฐาน • เมื่อใดก็ตามที่ซีพียูต้องคอย และยังมีโปรแกรมในหน่วยความจำหลายโปรแกรมที่คอยการใช้ซีพียูอยู่ เราก็จะจัดให้ซีพียูทำงานในโปรแกรมเหล่านี้ทันที • ระบบจะจัดการนำเอาโปรแกรมที่ต้องคอยอินพุต/เอาต์พุตออกไปก่อน เพื่อที่จะให้โปรแกรมอื่นที่คอยใช้ซีพียูนี้สามารถเข้ามาได้ • ถ้าทำงานในแบบนี้ไปเรื่อย ๆ ซีพียูก็จะได้มีงานทำเกือบตลอดเวลากับโปรแกรมหลาย ๆ โปรแกรมที่อยู่ในระบบ

  6. หลักความต้องการพื้นฐานหลักความต้องการพื้นฐาน • การจัดเวลาให้กับซีพียูแบบนี้ เป็นความต้องการพื้นฐานของระบบปฏิบัติการในคอมพิวเตอร์ • ซีพียูเองก็ถือได้ว่าเป็นทรัพยากรของระบบคอมพิวเตอร์ชนิดหนึ่งที่มีความสำคัญมากที่สุด • โดยตัวซีพียูนี่เอง ที่จะเป็นหลักของการสร้างระบบปฏิบัติการที่มีความสามารถในการรันหลายโปรแกรม

  7. ช่วงเวลาอินพุต/เอาต์พุต และช่วงเวลาซีพียู • ความสำคัญในการจัดเวลาซีพียูขึ้นอยู่กับคุณลักษณะของโปรเซส • การเอ็กซิคิวต์โปรเซสจะประกอบด้วย • เวลาที่ใช้ซีพียู (CPU Burst Cycle) • เวลาที่ต้องคอยอุปกรณ์อินพุต/เอาต์พุต (I/O Burst Cycle) • ในขณะที่มีการเอ็กซิคิวต์โปรเซส จะมีการสลับการทำงานระหว่าง 2 ช่วงเวลานี้เท่านั้น และจะเกิดไม่พร้อมกัน การเอ็กซิคิวต์มักจะเริ่มจากการใช้ซีพียู แล้วก็จะตามด้วยการคอยอินพุต/เอาต์พุต เมื่อจบการรอคอย ก็จะตามมาด้วยเวลาของซีพียู สลับกันไปเรื่อย ๆ จนกว่าจะจบการเอ็กซิคิวต์

  8. ตัวจัดการเวลาซีพียู (CPU Scheduler) • ตัวจัดการเวลาซีพียู (CPUScheduler) หรือตัวจัดการเวลาช่วงสั้น (short–term scheduler)จะเลือกโปรเซสที่อยู่ในหน่วยความจำที่พร้อมในการเอ็กซิคิวต์ที่สุด เพื่อให้ครอบครองเวลาซีพียูและทรัพยากรที่เกี่ยวข้องกับโปรเซสนั้น • คิวของโปรเซสในหน่วยความจำนั้นไม่จำเป็นที่ต้องเป็นแบบใดแบบหนึ่ง อย่างไรก็ตามโปรเซสทุกโปรเซสที่พร้อมใช้ซีพียู จะต้องมีโอกาสได้เข้าครอบครองเวลาซีพียูไม่เวลาใดก็เวลาหนึ่ง • การเข้าและออกจากการครอบครองเวลาซีพียูแต่ละครั้ง จำเป็นต้องมีการเก็บข้อมูลไว้เสมอว่าเข้ามาทำอะไร ต่อไปจะทำอะไร

  9. การให้สิทธิการจัดเวลา (Preemptive Scheduling) • เมื่อมีการเปลี่ยนสถานะของโปรเซสจากสถานะรัน --> สถานะรอเช่น ในสภาวะที่คอยอินพุต/เอาต์พุต หรือการคอยให้โปรเซสลูกเสร็จสิ้นไปก่อน • เมื่อมีการเปลี่ยนสถานะของโปรเซสจากสถานะรัน --> พร้อมเช่น เมื่อมีอินเทอร์รัพต์เกิดขึ้น • เมื่อมีการเปลี่ยนสถานะของโปรเซสจากสถานะรอ --> พร้อม เช่น เมื่ออินพุต/เอาต์พุตเสร็จสิ้นไปแล้ว • เมื่อโปรเซสเสร็จสิ้นไปแล้ว

  10. การให้สิทธิการจัดเวลา (Preemptive Scheduling) • ในสถานการณ์ที่ 1 และ 4 นั้นเป็นสถานการณ์ที่จะต้องมีการตัดสินใจทำอะไรอย่างใดอย่างหนึ่งโดยไม่สามารถหลีกเลี่ยงได้ เช่น ต้องเลือกโปรเซสใหม่เข้ามาเอ็กซิคิวต์ต่อไป เนื่องจากโปรเซสเดิมไม่ใช้ซีพียูอีกแล้ว • สำหรับสถานการณ์ที่ 2 และ 3 นั้น การตัดสินใจต้องอยู่บนพื้นฐานหรือกฎเกณฑ์ของแต่ละอัลกอริทึมที่ใช้ ซึ่งอาจทำให้มีการทำงานที่แตกต่างกันไป

  11. การให้สิทธิการจัดเวลา (Preemptive Scheduling) • การตัดสินใจที่เกิดขึ้นเนื่องจากสถานการณ์ 1 และ 4 การจัดเวลาซีพียูจะเป็นแบบไม่ให้สิทธิ์ก่อน (nonpreemptive) • ส่วนสถานการณ์ที่ 2 และ 3 จะเรียกว่าให้สิทธิ์ก่อน (preemptive) • การทำงานแบบไม่ให้สิทธิ์ก่อนนี้ โปรเซสจะครอบครองเวลาซีพียูไปจนกว่าจะเสร็จสิ้น หรือเปลี่ยนสถานะตัวเองเป็นสถานะคอย • เนื่องจากระบบปฏิบัติการนี้ไม่ต้องการในการใช้ฮาร์ดแวร์พิเศษ เช่น ไทม์เมอร์ (timer) ในการนับคาบเวลาสำหรับการให้โปรเซศใด ๆ ครอบครองเวลาซีพียู โปรเซสจึงสามารถครอบครองเวลาซีพียูได้จนกว่าจะหมดความต้องการ

  12. การให้สิทธิการจัดเวลา (Preemptive Scheduling) • ถ้าเป็นระบบมัลติยูเซอร์ (multiusers) การจัดเวลาแบบให้สิทธิก่อนจะเหมาะสมกว่า • การจัดเวลาแบบให้สิทธิก่อนนั้นต้องใช้ทรัพยากรพิเศษเข้าช่วยเยอะเพื่อแก้ปัญหาต่าง ๆ ที่หลีกเลี่ยงไม่ได้ • เช่น โปรเซส 2 โปรเซสที่ต้องใช้ข้อมูลร่วม (shared data) โปรเซสแรกอาจจะต้องหยุดรอในขณะที่อยู่ในระหว่างการอัปเดทข้อมูล เนื่องจากคาบเวลาของมันหมดลงพอดี แล้วโปรเซสที่สองก็เข้ามาแทน ซึ่งโปรเซสที่สองนี้อาจต้องการที่จะอ่านข้อมูลที่โปรเซสแรกยังแก้ไขไม่เรียบร้อย ทำให้เกิดปัญหา

  13. การให้สิทธิการจัดเวลา (Preemptive Scheduling) • การจัดเวลาแบบให้สิทธิก่อนนั้นมีผลกระทบต่อการออกแบบ Kernel ของระบบปฏิบัติการเป็นอย่างมาก เช่น ในระหว่างการเกิด system call นั้น Kernel อาจจะยังไม่ว่าง อาจจะกำลังทำงานในการจัดคิวโปรเซสอยู่ แล้วอะไรจะเกิดขึ้นถ้าหากว่า โปรเซสถูกทำให้หยุด และออกจากการครอบครองเวลาซีพียู • UNIX มีการแก้ปัญหาตรงจุดนี้โดยการให้ System call สิ้นสุดเอง หรือไม่ก็คอยจนกว่าจะมีการบล็อกการทำงานของอินพุต/เอาต์พุตเกิดขึ้น แล้วจึงมีการทำ คอนเท็กซ์สวิตช์ (Context Switch)

  14. การให้สิทธิการจัดเวลา (Preemptive Scheduling) • การออกแบบ Kernel จะได้ไม่มีความยุ่งยากมาก เพราะว่าตัว Kernel เอง จะไม่ไปจัดการโปรเซสอื่น ๆ ถ้าโครงสร้างข้อมูลของ Kernel ยังไม่อยู่ในสภาพที่สมบูรณ์ • แต่ปัญหาก็คือการทำงานของ Kernel แบบนี้ช้าเกินไป ทำให้ต้องมีการพัฒนาบางสิ่งบางอย่างเพิ่มเติมเข้ามาอีก

  15. Dispatcher • Dispatcher เป็นโมดูลที่ทำหน้าที่ควบคุมการครอบครองเวลาซีพียูของโปรเซส • ฟังก์ชันประกอบด้วย • การย้าย Context • การย้ายไป user mode • กระโดดไปยังตำแหน่งที่เหมาะสมของโปรแกรม เพื่อที่จะเริ่มรันโปรแกรมนั้นใหม่อีกครั้ง • ควรมีการทำงานที่เร็วที่สุดเท่าที่จะทำได้ เพราะทำงานทุกครั้งที่มีการย้ายโปรเซส ซึ่งเวลาที่ใช้ในการทำนี้เรียก Dispatch Latency

  16. ข้อพิจารณาในการจัดเวลาข้อพิจารณาในการจัดเวลา • อรรถประโยชน์ของซีพียู (CPU Utilization) : การใช้ประโยชน์จากซีพียูอย่างสูงสุด โดยทำให้ซีพียูมีงานทำมากที่สุดเท่าที่จะทำได้ ซีพียูควรจะถูกใช้อยู่ระหว่าง 40-90 % • ทรูพุต (Throughput) : จำนวนงานที่เสร็จต่อหน่วยเวลา • เวลาทั้งหมด (Turnaround Time) : คือช่วงเวลาทั้งหมดที่ใช้ในการทำงานใดงานหนึ่งตั้งแต่เริ่มต้นเข้าไปในระบบ จนงานถูกทำจนเสร็จเรียบร้อย (รวมเวลาที่รอเข้าหน่วยความจำ เวลาที่คอยอยู่ในคิว เวลาที่ใช้ซีพียู และเวลาของอินพุต/เอาต์พุต)

  17. ข้อพิจารณาในการจัดเวลาข้อพิจารณาในการจัดเวลา • เวลารอคอย (Waiting Time): ช่วงเวลาที่งานใดงานหนึ่งต้องรอการทำงานของตัวจัดเวลา โดยไม่รวมเวลาของการใช้ซีพียู และเวลาของการติดต่ออินพุต/เอาต์พุตส่วนใหญ่ก็คือเวลาที่งานต้องคอยอยู่ในคิว (Ready Queue) • เวลาตอบสนอง (Response Time) คือเวลาที่วัดระหว่างเวลาที่มีการร้องขอการกระทำใด ๆ ต่อระบบแล้วมีการตอบรับกลับออกมา (ความเร็วของเวลาตอบสนองจึงมักจะขึ้นอยู่กับอุปกรณ์อินพุต/เอาต์พุต)

  18. ข้อพิจารณาในการจัดเวลาข้อพิจารณาในการจัดเวลา • สิ่งที่ผู้ออกแบบระบบการจัดเวลาต้องการก็คือ การทำให้เวลาการทำงานสั้นที่สุดนั่นเอง • ในความเป็นจริงแล้ว อาการได้อย่างเสียอย่างมักจะต้องเกิดขึ้น • เราไม่สามารถที่จะได้ระบบที่สามารถทำให้มีการใช้ซีพียูได้สูงสุด โดยที่มีทรูพุตมากที่สุด มีเวลารวมเร็วที่สุด และได้เวลาตอบสนองเร็วที่สุดได้พร้อม ๆ • ดังนั้นการหาจุดพอดีจากค่าเฉลี่ยของคุณสมบัติแต่ละชนิดจึงมีความจำเป็น ซึ่งบางครั้งอาจจะต้องมีการกำหนดจุดที่ยอมรับได้ไว้ที่จุดใดจุดหนึ่ง ถ้าหากว่าไม่สามารถหาค่าเฉลี่ยได้

  19. อัลกอริทึมของการจัดเวลา (Scheduling Algorithms) • การจัดเวลาแบบมาก่อนได้ก่อน (FCFS : First-Come First-Served) • โปรเซสใดที่ร้องขอใช้ซีพียูก่อนก็จะได้รับการจัดสรรให้ครอบครองเวลาซีพียูก่อน • ผลเสียของอัลกอริทึ่มนี้คือค่าเฉลี่ยของการคอยในคิวแบบมาก่อนได้ก่อนนี้ค่อนข้างจะสูง

  20. การจัดเวลาแบบมาก่อนได้ก่อน (FCFS) (0+24+27) / 3 = 17 วินาที (0+3+6) / 3 = 3 วินาที

  21. อัลกอริทึมของการจัดเวลา (Scheduling Algorithms) • การจัดเวลาแบบงานสั้นทำก่อน(SJF : Short–Job–First Scheduling) • โปรเซสที่ต้องการคาบเวลาของเวลาซีพียูในเวลาถัดไปสั้นที่สุด จะได้รับเลือกให้เข้ามาครบครองซีพียูก่อน • ถ้ามีโปรเซสหลายตัวที่มีคาบเวลาของเวลาซีพียูของช่วงต่อไปเท่า ๆ กัน ก็จะใช้หลักการมาก่อนได้ก่อนมาใช้ในการคัดเลือก

  22. การจัดเวลาแบบงานสั้นทำก่อน (SJF) (0+3+9+16) / 4 = 7 วินาที FCFS = (0+6+8+7) / 4 = 10.25วินาที

  23. อัลกอริทึมของการจัดเวลา (Scheduling Algorithms) • การจัดเวลาแบบงานสั้นทำก่อน(SJF : Short–Job–First Scheduling) • ข้อยุ่งยากของวิธี SJF คือการวัดคาบเวลาของเวลาซีพียูถัดไปของแต่ละโปรเซสที่ร้องขอเวลาซีพียูเข้ามา • ในระบบการทำงานแบบแบ็ตซ์ เจ้าของโปรเซสจะต้องเป็นผู้บอกช่วงเวลาที่จำกัดของการใช้ซีพียูสำหรับโปรเซสให้กับระบบ เพื่อใช้อ้างอิงสำหรับการจัดลำดับดังกล่าว ซึ่งเจ้าของโปรเซสก็จะพยายามที่จะให้ค่าต่ำที่สุดเพื่อโอกาสในการเข้าไปใช้ซีพียูก่อนมีมากที่สุด • ถ้าคาบเวลาที่กำหนดไว้นี้มีค่าน้อยเกินไป ก็จะทำให้โปรแกรมนั้นไม่สามารถคำนวณสำเร็จได้ ซึ่งจะต้องเสียเวลามาเริ่มต้นใหม่อีก

  24. อัลกอริทึมของการจัดเวลา (Scheduling Algorithms) • การจัดเวลาแบบงานสั้นทำก่อน(SJF : Short–Job–First Scheduling) • มีปัญหาในการนำมาใช้ในการจัดเวลาช่วงสั้น (Short-termScheduling)เพราะว่าเราไม่มีทางจะรู้ได้ว่าความยาวของคาบเวลาการใช้ซีพียูในช่วงต่อไปของแต่ละโปรเซสเป็นเท่าใด วิธีการที่ใช้มักจะเป็นแค่การประมาณเอาเท่านั้น โดยประมาณจากระยะเวลาของเวลาซีพียูในคาบเวลาที่ผ่านมาด้วยการหาค่าเฉลี่ย

  25. อัลกอริทึมของการจัดเวลา (Scheduling Algorithms)

  26. อัลกอริทึมของการจัดเวลา (Scheduling Algorithms) • การจัดเวลาแบบงานสั้นทำก่อน(SJF : Short–Job–First Scheduling) • SJF สามารถเป็นได้ทั้งแบบให้สิทธิ์ก่อน หรือไม่ให้สิทธิ์ก่อน • การตัดสินใจจะเกิดขึ้นทุกครั้งเมื่อมีโปรเซสใหม่เข้ามาในคิวในขณะที่ยังมี โปรเซสอื่นใช้งานซีพียูอยู่ • โปรเซสใหม่อาจมีคาบเวลาของเวลาซีพียูสั้นกว่าเวลาที่เหลืออยู่ของเวลาซีพียูของโปรเซสที่กำลังใช้ซีพียู --> อัลกอริทึมที่เป็นแบบให้สิทธิ์ก่อนจะทำการหยุดงานที่กำลังใช้ซีพียูอยู่ • แบบไม่ให้สิทธิ์ก่อน --> ปล่อยให้งานนั้นใช้ซีพียูจนเสร็จสิ้นเวลาซีพียูของช่วงเวลานั้น บางครั้งการทำ SJF แบบให้สิทธิก่อน อาจมีชื่อเรียกว่า Shortest-Remaining-Time-First

  27. อัลกอริทึมของการจัดเวลา (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 วินาที

  28. อัลกอริทึมของการจัดเวลา (Scheduling Algorithms) • การจัดเวลาตามลำดับความสำคัญ(Priority Scheduling) • โปรเซสที่มีลำดับความสำคัญสูงที่สุดขจะทำงานก่อน แต่ถ้ามีงานที่มีลำดับความสำคัญเท่ากัน ก็จะมีการนำเอามาก่อนได้ก่อน (FCFS) มาใช้ • ลำดับความสำคัญ จะกำกับไว้ด้วยสัญลักษณ์ที่เปรียบเทียบกันได้ เช่น ตัวเลขจำนวนนับ เป็นต้น • ถ้าไม่มีข้อตกลงในการใช้ระบบการกำกับของความสำคัญเหล่านี้ อาจก่อให้เกิดความสับสนขึ้นได้

  29. การจัดเวลาตามลำดับสำคัญ (Priority) (0+1+6+16+18) / 5 = 41/5 = 8.2 วินาที

  30. อัลกอริทึมของการจัดเวลา (Scheduling Algorithms) • การจัดเวลาตามลำดับความสำคัญ(Priority Scheduling) • ปัญหาใหญ่ของการจัดเวลาซีพียูแบบนี้ก็คือโปรเซสที่มีลำดับความสำคัญต่ำอาจจะไม่มีโอกาสได้เข้าไปใช้ซีพียูเลย ถ้าหากว่ามีโปรเซสที่มีลำดับความสำคัญสูงกว่าอยู่เป็นจำนวนมาก • การแก้ปัญหาสถานการณ์นี้คือ การเพิ่มลำดับความสำคัญให้กับโปรเซสที่ยังไม่เสร็จเหล่านี้ตามระยะเวลาที่คอยอยู่ในคิว

  31. อัลกอริทึมของการจัดเวลา (Scheduling Algorithms) • การจัดเวลาตามลำดับความสำคัญ(Priority Scheduling) • เช่น สมมติว่าเรามีการออกแบบให้มีลำดับความสำคัญจาก 0-127 ขั้น เราอาจจะเพิ่มอัลกอริทึมพิเศษลงไปว่า ถ้าโปรเซสใดคอยครบ 15 นาที ก็ให้ลดตัวเลขลำดับขั้นลงทีละขั้น และจะลดลงไปเรื่อย ๆ ทุก ๆ 15 นาที ซึ่งการทำแบบนี้ แม้โปรเซสที่เข้ามาในระบบมีลำดับความสำคัญต่ำสุดที่ 127 ก็จะมีโอกาสเข้าไปใช้ซีพียูภายในเวลาไม่เกิน 32 ชั่วโมง เพราะในที่สุดโปรเซสนี้ก็จะมีลำดับความสำคัญเท่ากับ 0

  32. อัลกอริทึมของการจัดเวลา (Scheduling Algorithms) • การจัดเวลาแบบวนรอบ (RR : Round-Robin Scheduling) • คิดขึ้นมาเพื่อใช้กับระบบคอมพิวเตอร์แบบแบ่งเวลาโดยเฉพาะ โดยมีลักษณะการทำงานแบบมาก่อนได้ก่อน (FCFS) แต่ให้มีกรรมวิธีของให้สิทธิ์ก่อนรวมอยู่ด้วย แต่ละโปรเซสที่เข้ามาในระบบจะถูกจำกัดเวลาการเข้าไปใช้ซีพียูเท่า ๆ กัน ซึ่งช่วงเวลานี้จะเป็นช่วงเวลาสั้นเรียกว่า เวลาควันตัม(QuantumTime) • ระยะเวลาควันตัมนี้ มีความยาวระหว่าง 10 ถึง 100 มิลลิวินาที • คิวที่ใช้ก็เป็นแบบวงกลม (Circular Queue) • ตัวจัดเวลาจะมีการให้ซีพียูกับโปรเซสที่อยู่ในคิวแบบวนไปรอบ ๆ

  33. อัลกอริทึมของการจัดเวลา (Scheduling Algorithms) • การจัดเวลาแบบวนรอบ (RR : Round-Robin Scheduling) • ในแต่ละคาบเวลาจะมีความยาวของการได้รับซีพียูมากที่สุดคือ 1 ควันตัม ถ้าโปรเซสใดไม่สามารถกระทำได้สำเร็จภายใน 1 ควันตัมนี้ โปรเซสก็จะต้องถูกนำกลับไปไว้ในคิวเช่นเดิม • สถานภาพต่าง ๆ ของโปรเซสที่ยังทำไม่เสร็จก็จะถูกบันทึกไว้ เพื่อว่าเมื่อถึงโอกาสได้ครอบครองซีพียูอีก ก็จะได้เริ่มต้นรันต่อจากครั้งที่แล้วโดยไม่ต้องเริ่มใหม่ทั้งหมด

  34. อัลกอริทึมของการจัดเวลา (Scheduling Algorithms) • การจัดเวลาแบบวนรอบ (RR : Round-Robin Scheduling) • มีคิวที่พร้อมทำงาน (Ready Queue)เป็นแบบมาก่อนได้ก่อนไว้สำหรับเก็บโปรเซสต่าง ๆ โปรเซสที่เข้ามาใหม่จะถูกนำมาต่อไว้ที่หางของคิว ตัวจัดเวลาจะเลือกเอาโปรเซสที่อยู่ตรงหัวคิวออกมา แล้วกำหนดให้ไทม์เมอร์หยุดการให้เวลาซีพียูหลังจากนั้น 1 ควันตัม แล้วนำโปรเซสออกไปต่อที่หางคิว ถ้าหากว่าโปรแกรมยังไม่สิ้นสุดการทำงาน • โปรเซสที่เสร็จก่อนถึงเวลา 1 ควันตัม จะต้องให้สิ้นสุดและออกจากการครอบครองซีพียู เพื่อโปรเซสอื่นที่อยู่ตรงหัวคิวเข้ามาทำงานได้

  35. การจัดเวลาแบบวนรอบ (Round Robin) [(10-4)+4+7] / 3 = 17/3 = 5.66 วินาที

  36. อัลกอริทึมของการจัดเวลา (Scheduling Algorithms) • การจัดเวลาแบบวนรอบ (RR : Round-Robin Scheduling) • ถ้ามีโปรเซสอยู่ในคิวจำนวน n โปรเซส และระยะเวลาของควันตัมเท่ากับ q หน่วย แต่ละโปรเซสที่อยู่ในคิวจะมีเวลาเฉลี่ยของการคอยไม่นานไปกว่า (n–1) x q หน่วย ก่อนที่จะได้รับการเข้าไปใช้ซีพียูอีกครั้ง • เช่น ถ้ามีโปรเซส 5 โปรเซส และระยะเวลาควันตัมคือ 20 วินาที แต่ละโปรเซสจะต้องคอยในคิวโดยเฉลี่ยประมาณไม่เกิน 80 วินาที ไม่เกินก็เพราะว่าการคอยอาจจะน้อยกว่านี้ ถ้าหากว่ามีโปรเซสใด ๆ สามารถทำงานเสร็จโดยใช้เวลาน้อยกว่าเวลาควันตัมนั่นเอง

  37. อัลกอริทึมของการจัดเวลา (Scheduling Algorithms) • การจัดเวลาแบบวนรอบ (RR : Round-Robin Scheduling) • ประสิทธิภาพของการวนรอบขึ้นอยู่กับการกำหนดขนาดของควันตัม • ถ้าขนาดของควันตัมใหญ่หรือนานเกินไป ประสิทธิภาพของการวนรอบก็จะใกล้เคียงกับแบบมาก่อนได้ก่อน • แต่ถ้าขนาดของควันตัมเล็กมากเกินไป ทรูพุต (throughput) ของระบบก็จะช้าลง เนื่องจากการนำเอาโปรเซสเข้าและออกจากการครอบครองซีพียู จะต้องเสียเวลาบางส่วนในการทำ Dispatcher • ถ้าขนาดของควันตัมเล็กใกล้เคียงกับเวลาของ Dispatcher เวลาของระบบรวมก็จะหมดไปกับการเอาโปรเซสเข้าและออก (Context Switch) นั่นเอง

  38. การจัดเวลาแบบวนรอบ (Round Robin)

  39. การบ้าน โปรเซส เวลาที่ใช้ ลำดับความสำคัญ P1 8 2 P2 1 1 P3 2 2 P4 1 3 P5 3 1 หาเวลาคอยเฉลี่ยแบบ FCFS, SJF, Priority และ RR (เวลาควันตัม=2)

  40. อัลกอริทึมของการจัดเวลา (Scheduling Algorithms) • การจัดเวลาแบบคิวหลายระดับ (Multilevel Queue Scheduling) • เป็นการจัดเวลาของซีพียูอีกแบบหนึ่งสำหรับระบบที่สามารถแบ่งระดับชั้นของงานได้อย่างชัดเจน • งานที่เป็นฟอร์กราวนด์ (Foreground) หรืออินเตอร์แอ็กทีฟ (Interactive) กับงานที่เป็นแบ็คกราวนด์ (Background) หรือแบ็ตช์ (Batch) • งานทั้งสองแบบนี้ต้องการเวลาตอบสนอง (Response time)ที่แตกต่างกัน ซึ่งสามารถใช้ระบบการจัดเวลาที่แตกต่างกันได้

  41. อัลกอริทึมของการจัดเวลา (Scheduling Algorithms) • การจัดเวลาแบบคิวหลายระดับ (Multilevel Queue Scheduling) • ใช้วิธีแบ่งคิวออกเป็นหลาย ๆ ระดับโดยที่แต่ละระดับหมายถึงระดับโปรเซสที่มีความสำคัญแตกต่างกัน • การแบ่งระดับความสำคัญของโปรเซสนั้น สามารถแบ่งได้หลายลักษณะ เช่นแบ่งตามขนาดโปรเซส, จำนวนหน่วยความจำที่ต้องใช้หรือจำนวนอินพุต/เอาต์พุตเป็นต้น • แต่ละคิวยังสามารถใช้หลักการจัดเวลาที่แตกต่างกันได้ด้วย เช่น งานที่เป็นฟอร์กราวนด์ก็อาจใช้การจัดตารางแบบวนรอบส่วนงานที่เป็นแบบแบ็คกราวนด์ก็อาจใช้แบบมาก่อนได้ก่อน ก็ได้

  42. การจัดเวลาแบบคิวหลายระดับการจัดเวลาแบบคิวหลายระดับ

  43. อัลกอริทึมของการจัดเวลา (Scheduling Algorithms) • การจัดเวลาแบบคิวหลายระดับ (Multilevel Queue Scheduling) • แต่ละคิวจะมีความสำคัญเหนือกว่าคิวที่อยู่ด้านล่างถัดลงไปเสมอ • โปรเซสที่คอยอยู่ในคิวที่มีความสำคัญต่ำจะมีโอกาสได้ออกมาใช้ซีพียูก็ต่อเมื่อคิวที่มีความสำคัญสูงกว่าไม่มีโปรเซสที่ต้องทำเหลืออยู่เท่านั้น • หรือในขณะที่โปรเซสที่มีลำดับความสำคัญกำลังครอบครองซีพียู แล้วมีโปรเซสที่มีลำดับความสำคัญสูงกว่าเข้ามาคอยอยู่ในคิวที่สูงกว่า โปรเซสนี้ก็จะถูกนำออกมาจากซีพียูทันที

  44. อัลกอริทึมของการจัดเวลา (Scheduling Algorithms) • การจัดเวลาแบบคิวหลายระดับ (Multilevel Queue Scheduling) • เพื่อป้องกันไม่ให้โปรเซสที่อยู่ในคิวต่ำ ต้องคอยอยู่นานเกินไป หรืออาจจะไม่มีโอกาสได้เข้าไปใช้ซีพียูเลย เพราะว่าในคิวบน ๆ ไม่เคยว่างเลย • ต้องมีการกำหนดสัดส่วนเวลาให้กับแต่ละคิวในการทำงานเข้าไปใช้ซีพียู เช่น การกำหนดให้เวลา 80 เปอร์เซ็นต์เป็นของโปรเซสที่เป็นฟอร์กราวนด์ และอีก 20 เปอร์เซ็นต์เป็นของงานแบ็คกราวนด์ เป็นต้น

  45. อัลกอริทึมของการจัดเวลา (Scheduling Algorithms) • การจัดเวลาแบบคิวหลายระดับ (Multilevel Queue Scheduling) • การทำงานแบบการจัดลำดับความสำคัญแบบเปลี่ยนแปลงได้นั้นอาจมีชื่อเรียกอีกอย่างได้ว่าเป็นการทำงานแบบ Multilevel Feedback Queue Scheduling เพราะว่าโปรเซสในแต่ละคิว สามารถมีการเลื่อนชั้นระดับความสำคัญขึ้นหรือลงได้ • อาจจะต้องเสียเวลาเพิ่มอีกนิดหน่อยในการคำนวณหาระดับความสำคัญใหม่ให้กับโปรเซส

  46. อัลกอริทึมของการจัดเวลา (Scheduling Algorithms) • การจัดเวลาแบบคิวหลายระดับ (Multilevel Queue Scheduling) • ส่วนมากจะแบ่งระดับความสำคัญตามระยะเวลาของเวลาซีพียูเช่นเมื่อซีพียูทำงานนานขึ้นก็อาจจะถูกลดชั้นลงมาสู่คิวที่มีลำดับความสำคัญต่ำได้ ซึ่งจะทำให้โปรเซสที่มีการใช้ซีพียูน้อยแต่มีอินพุต/เอาต์พุต หรืออินเทอร์แอ็กทีฟมาก ๆ มีโอกาสเข้าไปอยู่ในคิวที่มีความสำคัญมากได้ • วิธีนี้ยังเป็นการป้องกันไม่ให้มีโปรเซสที่มีความสำคัญน้อยถูกดองอยู่ในคิว เพราะโปรเซสที่อยู่ในคิวที่ต่ำก็สามารถเลื่อนขึ้นไปสู่คิวที่สูงขึ้นถ้าคอยอยู่นานเกินไป

  47. การจัดเวลาแบบคิวหลายระดับการจัดเวลาแบบคิวหลายระดับ

  48. อัลกอริทึมของการจัดเวลา (Scheduling Algorithms) • การจัดเวลาแบบคิวหลายระดับ (Multilevel Queue Scheduling) • จำนวนของคิว • วิธีของการจัดเวลาของแต่ละคิว • หลักเกณฑ์ในการตัดสินใจเพิ่มความสำคัญของโปรเซส • หลักเกณฑ์ในการตัดสินใจลดความสำคัญของโปรเซส • หลักเกณฑ์ในการตัดสินใจนำเอาโปรเซสที่ต้องการครอบครองซีพียูมาเข้าในคิว

More Related