1 / 29

Operating System

Operating System. บทที่ 5 การจัดตารางการทำงานของหน่วยประมวลผลกลาง (CPU SCHEDUING). ช่วงประมวลผล / ช่วงรับส่งข้อมูล (CPU-I/O burst cycle).

hana
Télécharger la présentation

Operating System

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. Operating System บทที่ 5 การจัดตารางการทำงานของหน่วยประมวลผลกลาง (CPU SCHEDUING)

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

  3. การสลับลำดับของช่วงประมวลผล (CPU burst)และช่วงรับส่งข้อมูล (I/O burst)

  4. ตัวจัดตารางการทำงานของหน่วยประมวลผลกลาง(CPU Scheduler) • เมื่อหน่วยประมวลผลกลางว่างลง ระบบก็จะเลือกกระบวนการจากแถวพร้อม (Ready Queue) เพื่อให้ทำงานในหน่วยประมวลผลกลางต่อไป โดยใช้ตัวจัดตารางระยะสั้น (short-term scheduler) (หรือตัวจัดตารางการทำงานของหน่วยประมวลผล (CPU scheduler))

  5. การจัดตารางแบบให้แทรกกลางคัน(Preemptive Scheduling) • ในการจัดตารางหน่วยประมวลผลกลาง ระบบจะต้องตัดสินใจ หรือ เลือก เมื่อมีเหตุการณ์หนึ่งเกิดขึ้น คือ • เมื่อกระบวนการเปลี่ยนสถานะจาก กำลังทำงาน (running) ไปเป็นกำลังรอคอย (waiting) • เมื่อกระบวนการเปลี่ยนสถานะ จาก กำลังทำงาน (running) ไปเป็นสถานะพร้อม (ready) • เมื่อกระบวนการเปลี่ยนสถานะ จาก กำลังรอคอย (waiting) ไปเป็นสถานะพร้อม (ready) • เมื่อกระบวนการสิ้นสุด

  6. การจัดตารางแบบให้แทรกกลางคัน(Preemptive Scheduling) • ถ้าการจัดตารางการทำงานเกิดขึ้นได้เฉพาะเหตุการณ์ 1 และ 4 เท่านั้นแล้ว เราเรียกการจัดตารางนี้ว่าเป็น “แบบไม่ให้แทรกกลางคัน” (Nonpreemptive) นอกนั้นถือเป็น แบบให้แทรกกลางคัน(Preemptive)

  7. ตัวส่งต่อ(Dispatcher) • ตัวส่งต่อ (Dispatcher) เป็นโปรแกรมที่ย้ายการควบคุมไปยังกระบวนการใหม่ (ที่ถูกเลือกโดยตัวจัดตารางระยะสั้น) โดยมีขั้นตอนดังนี้ • เปลี่ยนงาน (switching context) • เปลี่ยนไปเป็นช่วงผู้ใช้ (user mode) • ย้ายการควบคุมไปที่บรรทัดคำสั่งในโปรแกรมผู้ใช้ เพื่อ restart โปรแกรมนั้น

  8. เกณฑ์การจัดตาราง (Scheduling Criteria) • ประสิทธิผลการใช้หน่วยประมวลผลกลาง (CPU Utilization))เราต้องพยายามทำให้หน่วยประมวลผลกลางถูกใช้งานตลอดเวลา • อัตราปริมาณงาน (Throughput) คือ จำนวนกระบวนการที่ทำงานเสร็จสมบูรณ์ต่อหน่วยเวลา • วงรอบการทำงาน (Turnaround time) คือ เวลาที่กระบวนการหนึ่ง ๆ ต้องเสียไปสำหรับการทำงานทั้งหมด • เวลารอคอย (Waiting time) คือ ระยะเวลาที่แต่ละกระบวนการจะต้องรอคอยอยู่ในแถวพร้อม • เวลาตอบสนอง (Response time) คือระยะเวลาตั้งแต่ที่ผู้ใช้ส่งงานให้ระบบ จนถึงเวลาที่ผลลัพธ์แรกปรากฏแก่ผู้ใช้

  9. การจัดตารางการทำงานแบบมาก่อน – ได้ก่อน(First–Come, First-Served Scheduling / FCFS)

  10. การจัดตารางการทำงานแบบมาก่อน – ได้ก่อน(First–Come, First-Served Scheduling / FCFS) • ถ้ากระบวนการที่เข้าสู่ระบบมีลำดับดังนั้นคือ P1, P2, P3 และใช้แบบมาก่อน – ได้ก่อน เราสามารถแสดงผลโดย Gantt chart ได้ดังนี้ • P1 P2 P3 • 0 24 27 30 • จะพบว่าเวลาในการรอคอยของกระบวนการ P1, P2, P3 มีค่าเท่ากับ 0 , 24 , 27 มิลลิวินาทีตามลำดับ ดังนั้น เวลารอคอยโดยเฉลี่ยทีได้คือ (0 + 24 + 27) / 3 = 17 มิลลิวินาที

  11. การจัดตารางการทำงานแบบมาก่อน – ได้ก่อน(First–Come, First-Served Scheduling / FCFS) • แต่ถ้ากระบวนการที่เข้าสู่ระบบมีลำดับใหม่เป็น P2, P3 และ P1 เราจะได้แผนภาพ Gantt chart ดังนี้ P2 P3 P1 0 3 6 30 • ทำให้เวลารอคอยโดยเฉลี่ยที่ได้คือ (6 + 0 + 3) / 3 = 3 มิลลิวินาที

  12. การจัดตารางการทำงานแบบมาก่อน – ได้ก่อน(First–Come, First-Served Scheduling / FCFS) • เวลารอคอยโดยเฉลี่ยของกระบวนการที่ทำงานภายใต้วิธีนี้ มักจะมีค่าค่อนข้างมาก และถ้าช่วงเวลาการทำงานมีการเปลี่ยนแปลงมาก ก็จะทำให้ค่าเวลารอคอยโดยเฉลี่ยเปลี่ยนแปลงมากตามไปด้วย • การทำงานของวิธีการจัดตารางแบบมาก่อน – ได้ก่อนนี้ เป็นการทำงานที่ไม่สามารถแทรกกลางคันได้

  13. การจัดตารางการทำงานแบบงานสั้นที่สุดได้ก่อน(Shortest–Job-First Scheduling / SJF)

  14. การจัดตารางการทำงานแบบงานสั้นที่สุดได้ก่อน(Shortest–Job-First Scheduling / SJF) • P4 P1 P3 P2 • 0 3 9 16 24 เวลาการรอคอยของ P1 = 3 ms , P2 = 16 ms , P3 = 9 ms , P4 = 0 ms ดังนั้นการรอคอยเฉลี่ย = (3+16+9+0) / 4 = 7 ms ถ้าเราใช้ FCFS เวลาการรอคอยเฉลี่ยจะ = [(0)+(6)+(8 + 6) +(7 + 8 + 6)] / 4 = 10.25 ms

  15. การจัดตารางการทำงานแบบงานสั้นที่สุดได้ก่อน(Shortest–Job-First Scheduling / SJF) • วิธี SJF นี้อาจทำเป็นแบบให้แทรกกลางคัน (preemptive) หรือ ห้ามแทรกกลางคัน (nonpreemptive) ก็ได้ เมื่อกระบวนการใหม่เข้ามาในแถวคอย ขณะที่กระบวนการหนึ่งกำลังทำงานอยู่ ถ้ากระบวนการใหม่มีเวลาที่จะต้องทำงานสั้นกว่า เวลาที่เหลือ ของกระบวนการที่กำลังทำงาน • ในกรณีให้แทรกกลางคันได้ กระบวนการใหม่สามารถแทรกเข้าไปทำงานแทน (กระบวนการที่กำลังทำงานอยู่) ได้ • แต่ถ้าห้ามแทรกกลางคัน กระบวนการใหม่ จะต้องรอจนกว่ากระบวนการเดิมเสร็จเสียก่อน

  16. การจัดตารางการทำงานแบบงานสั้นที่สุดได้ก่อน(Shortest–Job-First Scheduling / SJF) • การจัดตารางการทำงานแบบสั้นที่สุดได้ก่อน โดยให้แทรกกลางคันได้ บางครั้งเรียกว่า • แบบเวลาที่เหลือสั้นที่สุดก่อน (shortest-remaining-time-first) • ตัวอย่างเช่น

  17. การจัดตารางการทำงานแบบงานสั้นที่สุดได้ก่อน(Shortest–Job-First Scheduling / SJF) • ถ้าใช้วิธี SJF แบบให้แทรกกลางคันได้ ผลจะเป็นดังตาราง Gantt chart ดังนี้ • 0 1 5 10 17 26

  18. การจัดตารางการทำงานแบบงานสั้นที่สุดได้ก่อน(Shortest–Job-First Scheduling / SJF) • กระบวนการ P1 เริ่มที่เวลา 0 เพราะมีเพียงกระบวนการเดียว P2 มาถึงที่เวลา 1, P1 ยังเหลือเวลาอีก 7 มิลลิวินาที มากกว่าเวลาของ P2 (4 มิลลิวินาที) ดังนั้น P2 แทรกกลางคัน P1 • เวลารอคอยเฉลี่ย = ((10-1) + (1-1) +(17-2) + (5-3)) / 4 = 26 / 4 = 6.5 มิลลิวินาที • ถ้าห้ามแทรกกลางคัน เวลารอคอยเฉลี่ยจะเป็น ((0) + (8-1) + (17-2) + (12-3)) / 4 = 7.75 มิลลิวินาที

  19. การจัดตารางการทำงานแบบศักดิ์สูงได้ก่อน (Priority Scheduling) • เลขน้อยกว่ามีศักดิ์สูงกว่า

  20. การจัดตารางการทำงานแบบศักดิ์สูงได้ก่อน (Priority Scheduling) 0 1 6 16 18 19 เวลารอคอยเฉลี่ย คือ [(6+0+16+18+1)]/5 = 8.2 มิลลิวินาที การจัดตารางแบบศักดิ์สูงได้ก่อนสามารถแทรกกลางคันหรือห้ามแทรกกลางคันก็ได้ เมื่อกระบวนการมาถึงแถวพร้อม ศักดิ์ของมันจะถูกนำมาเปรียบเทียบกับศักดิ์ของกระบวนการที่กำลังทำงานอยู่ การจัดตารางศักดิ์สูงได้ก่อนแบบสามารถแทรกกลางคันจะแทรกกลางคัน ถ้าศักดิ์ของกระบวนการที่มาใหม่สูงกว่า แต่แบบห้ามแทรกกลางคันจะนำกระบวนการใหม่ไปไว้ที่หัวแถวของแถวพร้อมแทน

  21. การจัดตารางการทำงานแบบศักดิ์สูงได้ก่อน (Priority Scheduling) • ปัญหาที่สำคัญของการจัดตารางแบบศักดิ์สูงได้ก่อนนี้ คือ ปัญหาการแช่เย็น (Starvation) หรือ การรอคอยชั่วนิรันดร์ (indefinite blocking) ในระบบคอมพิวเตอร์ที่มีภาระงานหนัก กระบวนการที่มีศักดิ์สูง อาจเข้ามาในระบบเรื่อย ๆ จนเป็นเหตุให้ กระบวนการที่มีศักดิ์ต่ำไม่มีโอกาสได้ใช้หน่วยประมวลผลเลย

  22. การจัดตารางการทำงานแบบศักดิ์สูงได้ก่อน (Priority Scheduling) • การแก้ปัญหาดังกล่าวข้างต้น อาจกระทำได้โดยวิธีการเพิ่มศักดิ์ทีละน้อย ๆ ให้กับกระบวนการที่รออยู่นานแล้วในระบบ วิธีการดังกล่าวเรียกว่า การเพิ่มศักดิ์ (Aging) เราอาจเพิ่มศักดิ์กระบวนการที่รออยู่ขึ้นทีละ 1 เมื่อเวลาผ่านไปทุก ๆ 15 นาที จนในที่สุดกระบวนการที่รออยู่นานแล้ว จะมีศักดิ์สูงที่สุดในระบบทำให้สามารถทำงานได้

  23. การจัดตารางการทำงานแบบเวียนเทียน (Round-Robin Scheduling / RR)

  24. การจัดตารางการทำงานแบบเวียนเทียน (Round-Robin Scheduling / RR) • เราอาจแสดงตารางการทำงานของกระบวนการทั้ง 3 ได้ดังนี้ 0 4 7 10 14 18 22 26 30 ซึ่งเวลารอคอยโดยเฉลี่ยที่ได้มีค่าเท่ากับ [(10-4)+4+7]/3 = 5.66มิลลิวินาที

  25. การประเมินอัลกอริทึม (Algorithm Evaluation) • ขั้นแรกจำเป็นต้องกำหนดคุณสมบัติก่อน ว่าต้องการคุณสมบัติใดมีค่าเท่าใด เช่น • ให้ได้ประสิทธิผลการใช้หน่วยประมวลผลสูงสุดที่เวลาตอบสนองนานที่สุด ไม่เกิน 1 วินาที • ให้มีอัตรางาน (throughput) เสร็จสูงที่สุด โดยที่ วงรอบการทำงาน (turnaround time) (โดยเฉลี่ย) เป็นสัดส่วนโดยตรงกับการประมวลผลจริง

  26. การกำหนดโมเดล(Deterministic Modeling)

  27. วิธีมาก่อน-ได้ก่อน (FCFS) 0 10 39 42 49 61 • เวลารอคอยเฉลี่ย = (0+10+39+42+49) / 5 = 28 มิลลิวินาที

  28. วิธีสั้นที่สุดได้ก่อน(SJF)วิธีสั้นที่สุดได้ก่อน(SJF) 0 3 10 20 32 61 • เวลารอคอยเฉลี่ย = (10+32+0+3+20) / 5 = 13 มิลลิวินาที

  29. วิธีเวียนเทียน (RR) (ส่วนแบ่งเวลา = 10 มิลลิวินาที) 0 10 20 23 30 40 50 52 61 • เวลารอคอยเฉลี่ย = (0+32+20+23+40) / 5 = 23 มิลลิวินาที

More Related