1 / 34

Chapter 3 : CPU Schedule

Chapter 3 : CPU Schedule. Computer Operating System ระบบปฏิบัติการคอมพิวเตอร์. วัตถุประสงค์. 2. 1. หลักความต้องการพื้นฐาน 2. ข้อพิจารณาในการจัดเวลา 3. อัลกอริธึมในการจัดเวลา ( Scheduling algorithm) 4. การจัดคิวแบบมัลติเพิลโปรเซสเซอร์ ( Multiple – Scheduling Processor)

phoebe
Download Presentation

Chapter 3 : CPU Schedule

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. Chapter 3 : CPU Schedule Computer Operating System ระบบปฏิบัติการคอมพิวเตอร์

  2. วัตถุประสงค์ 2 1. หลักความต้องการพื้นฐาน 2. ข้อพิจารณาในการจัดเวลา 3. อัลกอริธึมในการจัดเวลา (Scheduling algorithm) 4. การจัดคิวแบบมัลติเพิลโปรเซสเซอร์ (Multiple – Scheduling Processor) 5. การจัดเวลาแบบเรียลไทม์ (Real – Time Scheduling) 6. การเลือกอัลกอริธึมสำหรับการจัดเวลาซีพียู

  3. 1. หลักความต้องการพื้นฐาน 3 เป้าหมาย - ใช้งานซีพียูได้อย่างเต็มประสิทธิภาพ สิ่งที่ต้องคำนึง - ในระบบโปรเซสเซอร์เดียวซีพียูจะทำงานได้ครั้งละ 1 งาน - ถ้ามีหลายๆ งานจะต้องเกิดการรอ ระบบโปรแกรมเดียว - ไม่ซับซ้อน - ทำงานทีละโปรแกรมจนเสร็จกระบวนการ - ทำงานตัวเองจนเสร็จ หรือจนกระทั่งมีการรออะไรบางอย่าง เช่น I/O - การรอนี้ทำให้ซีพียูเกิดการว่างงาน อยู่เฉย (idle)

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

  5. 1. หลักความต้องการพื้นฐาน 5 http://elearning.krukat.com/wp-content/uploads/2013/05/system.jpg

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

  7. 1. หลักความต้องการพื้นฐาน 7 กระบวนการเอ็กซิคิวต์มีลักษณะการทำงานดังนี้ - เริ่มใช้ซีพียู - คอยอินพุต/เอาต์พุต สลับจนกว่าจะจบกระบวนการเอ็กซิคิวต์

  8. 1. หลักความต้องการพื้นฐาน 8 กระบวนการเอ็กซิคิวต์ Load store Add store Read from file เวลาซีพียู เวลาอินพุต/เอาต์พุต รออินพุต/เอาต์พุต Load store Add store Read from file เวลาซีพียู เวลาอินพุต/เอาต์พุต รออินพุต/เอาต์พุต Load store Add store Read from file เวลาซีพียู เวลาอินพุต/เอาต์พุต รออินพุต/เอาต์พุต

  9. 1. หลักความต้องการพื้นฐาน 9 ขั้นตอนการประมวลผลของ CPU • การเฟตช์(Fetch) เป็นกระบวนการที่หน่วยควบคุม (CU) ไปนำคำสั่งที่ต้องการใช้จากหน่วยความจำมาเพื่อการประมวลผลมาเก็บไว้ที่ Register • การแปลความหมาย(Decode) เป็นกระบวนการถอดรหัสหรือแปลความหมายคำสั่งต่างๆ เพื่อส่งไปยังหน่วยคำนวณและตรรกะเพื่อดำเนินการต่อไป • การเอ็กซ์คิวต์(Execute) เป็นกระบวนประมวลผลคำสั่งโดยหน่วยคำนวณและตรรกะ ซึ่งการประมวลผลจะประมวลผลทีละคำสั่ง • การจัดเก็บ(Store) เป็นกระบวนการจัดเก็บผลลัพธ์ที่ได้จากการประมวลผลและจัดเก็บไว้ในหน่วยความจำหรือรีจิสเตอร์

  10. 1. หลักความต้องการพื้นฐาน 10 ขั้นตอนการประมวลผลของ CPU http://202.28.94.55/members/513020890-6/K2.htm

  11. 1. หลักความต้องการพื้นฐาน 11 160 140 120 100 80 60 40 20 40 32 16 24 8 ช่วงเวลา (มิลลิวินาที)

  12. 1. หลักความต้องการพื้นฐาน 12 • 2. ตัวจัดการเวลาซีพียู(CPU Scheduler) • เลือกโปรเซสที่อยู่ในคิวเข้ามาใช้งานซีพียู • โปรเซสที่ถูกเลือกจะมีคุณสมบัติเหมาะสมที่สุด และพร้อมที่สุด • วิธีการเลือกอาจเป็น มาก่อนได้ก่อน (FIFO) แบบให้ความสำคัญ (priority) มาทีหลังได้ก่อน (FILO) แบบต้นไม้ (Tree) เป็นต้น • แต่ละโปรเซสจะมีพื้นที่หน่วยความจำในการเก็บข้อมูลไว้ เรียกว่า “บล็อกควบคุมโปรเซส (PCB : Process Control Block)”

  13. 1. หลักความต้องการพื้นฐาน 13 • 3. การให้สิทธิ์การจัดเวลา (Preemptive Scheduling) • การตัดสินใจของซีพียูในการเลือกเอ็กซีคิวโปรเซสใดๆ ขึ้นอยู่กับ • เมื่อมีการเปลี่ยนสถานะของโปรเซสจากสถานะรัน (run) เป็นสถานะคอย (wait) หรือสถานะ Block เช่น ในสภาวะที่มีการรอ I/O • เมื่อมีการเปลี่ยนสถานะของโปรเซสจากสถานะรัน (run) เป็นสถานะพร้อม (ready) เช่น เกิดอินเทอร์รัพท์ หมดเวลาควอนตัม • เมื่อมีการเปลี่ยนสถานะของโปรเซสจากสถานะคอย (wait) หรือ สถานะ Block เป็นสถานะพร้อม เช่น เมื่อได้รับ I/O เป็นที่เรียบร้อยแล้ว • เมื่อสิ้นสุดโปรแกรม

  14. 1. หลักความต้องการพื้นฐาน 14 4. Dispatcher Dispatcher เป็นโมดูลที่ที่ทำหน้าที่ในการครอบครองซีพียูของโปรเซส ซึ่งประกอบด้วย - การย้าย Context - การย้าย User mode - การกระโดดไปยังตำแหน่งที่เหมาะสมของโปรแกรม เพื่อจะเริ่มรันโปรแกรมนั้นอีกครั้ง Dispatcher ควรมีการทำงานที่เร็วที่สุดเท่าที่จะทำได้ เพราะต้องทำงานทุกครั้งที่มีการย้ายโปรเซส เวลาที่ถูกใช้ในกระบวนการนี้จะเรียกว่า “Dispatch Latency”

  15. 2. ข้อพิจารณาในการจัดเวลา 15 • หลักในการพิจารณาอัลกอริธึมการจัดเวลาของซีพียู • อรรถประโยชน์ของซีพียู(CPU utilization) คือคำนึงถึงการใช้งานซีพียู จริงๆ แล้วควรอยู่ในระหว่าง 40 - 90 % • ทรูพุต(throughput) เป็นการวัดจำนวนงานที่ทำเสร็จต่อหน่วยเวลา • เวลาทั้งหมด(turnaround time) เป็นเวลาที่คิดจากเริ่มต้นจนกระทั่งจบงานนั้นๆ • เวลาคอย(wait) เป็นเวลาที่คอยอยู่ในคิวเท่านั้น • เวลาตอบสนอง(response time) เป็นเวลาที่มีการร้องขอการกระทำใดๆ จนได้รับการตอบกลับมา • จากการพิจารณาในการจัดเวลาของซีพียู สิ่งที่ผู้ออกแบบระบบการจัดเวลาต้องการ • ก็คือ การทำให้เวลาการทำงานสั้นที่สุดนั่นเอง

  16. 3. อัลกอริธึมในการจัดเวลา 16 • การจัดเวลาแบบมาก่อนได้ก่อน (First-Come First-Served) • โปรเซสใดที่ร้องขอการใช้งานซีพียูก่อน ก็จะได้รับจัดสรรให้ครอบครองเวลาซีพียูก่อน • ข้อดี จัดการง่าย • ข้อเสีย ค่าเฉลี่ยของการคอยในคิวค่อนข้างสูง A B C D 0 24 29 39 42

  17. 3. อัลกอริธึมในการจัดเวลา 17 การจัดเวลาแบบมาก่อนได้ก่อน (First-Come First-Served) ค่าเฉลี่ยของการคอยของสถานการณ์นี้ หาได้จาก (0+24+29+39) / 4 =23 วินาที A B C D 0 24 29 39 42

  18. 3. อัลกอริธึมในการจัดเวลา 18 • การจัดเวลาแบบงานสั้นทำก่อน (SJF : Short Job First Scheduling) D A C B 0 3 9 16 24 C D A B 0 6 14 21 24 ค่าเฉลี่ยในการรอ ของ SJF= (0 + 3 + 9 + 16) / 4 = 7 ms ค่าเฉลี่ยในการรอ ของ FIFO = (0 + 6 +14 +21) / 4 = 10.25 ms

  19. 3. อัลกอริธึมในการจัดเวลา 19 - การทำ FCFS ตัวอย่างที่ จากโจทย์ จงหา 1. เวลาทั้งหมดที่ใช้ 2. ค่าเฉลี่ยในการรอ เวลาใช้ CPU เวลาเกิด

  20. 3. อัลกอริธึมในการจัดเวลา 20 ตัวอย่างที่ อัลกอริทึม FCFS วิธีทำ เวลาใช้ CPU เวลาเกิด Burst Time สูตรค่าเฉลี่ยในการรอ = (เวลาเริ่ม – เวลาเกิด)/จำนวนโปรเซส ค่าเฉลี่ยเวลาที่ใช้ = (เวลาสิ้นสุด – เวลาเกิด) /จำนวนโปรเซส P1 P2 P3 P4 ค่าเฉลี่ยในการรอ = (4+0+9+10)/4 = 5.75 ms ค่าเฉลี่ยเวลาที่ใช้ = (11+5+13+18)/4 = 11.75 ms

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

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

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

  24. 3. อัลกอริธึมในการจัดเวลา 24 - การทำ SJF แบบให้แทรกกลางคัน“Shortest-Remaining-Time-First” with Preemptive ตัวอย่างที่ Process Arrival Time (เวลาเกิด) Burst Time (เวลาใช้ CPU) 1.ให้ A เข้าระบบก่อนที่ Time=0 ดังนั้น Aจะได้ใช้ cpu ก่อน 2. ต่อมา time=1 B เข้าสู่ ready queue เนื่องจาก B มี cpu burst time=4และน้อยกว่าเวลาที่เหลือของ A ดังนั้น B จึงเข้าใช้งานแทน A และ A ต้องได้รับการจัดสรรเข้าสู่ cpu ใหม่ในรอบต่อไป 0 1 2 3 A B C D 8 4 9 5 0 1 5 10 17 26 A B D A C สูตร ค่าเฉลี่ยในการรอ =เวลาเริ่มงาน - เวลาเกิด ค่าเฉลี่ยในการรอ ของ SJF= (9 + 0 + 15 + 2) / 4 = 6.5 ms

  25. 3. อัลกอริธึมในการจัดเวลา 25 - การทำ SJF แบบให้แทรกกลางคัน“Shortest-Remaining-Time-First” สูตร ค่าเฉลี่ยในการรอ =เวลาเริ่มงาน - เวลาเกิด ค่าเฉลี่ยในการรอ ของ SJF= (9 + 0 + 15 + 2) / 4 = 6.5 ms

  26. 3. อัลกอริธึมในการจัดเวลา 26 - การทำ SJF แบบให้แทรกกลางคัน“Shortest-Remaining-Time-First” with Preemptive ตัวอย่างที่ จากโจทย์ จงหา 1. เวลาทั้งหมดที่ใช้ 2. ค่าเฉลี่ยในการรอ เวลาใช้ CPU เวลาเกิด

  27. 3. อัลกอริธึมในการจัดเวลา 27 ตัวอย่างที่ อัลกอริทึม SJF แบบ Preemptive วิธีทำ เวลาใช้ CPU เวลาเกิด Burst Time แบบให้แทรกกลางคัน สูตรค่าเฉลี่ยในการรอ = (เวลาเริ่ม – เวลาเกิด)/จำนวนโปรเซส ค่าเฉลี่ยเวลาที่ใช้ = (เวลาสิ้นสุด – เวลาเกิด) /จำนวนโปรเซส P1 P2 P3 P4 ค่าเฉลี่ยในการรอ = (8+0+2+10)/4 = 5 ms ค่าเฉลี่ยเวลาที่ใช้ = (15+5+6+18)/4 = 11 ms

  28. 3. อัลกอริธึมในการจัดเวลา 28 - การทำ SJF แบบไม่ให้แทรกกลางคัน“Shortest-Remaining-Time-First” with Non-Preemptive ตัวอย่างที่ จากโจทย์ จงหา 1. เวลาทั้งหมดที่ใช้ 2. ค่าเฉลี่ยในการรอ เวลาใช้ CPU เวลาเกิด

  29. 3. อัลกอริธึมในการจัดเวลา 29 ตัวอย่างที่ อัลกอริทึม SJF Non-Preemptive วิธีทำ เวลาใช้ CPU เวลาเกิด Burst Time แบบไม่ให้แทรกกลางคัน สูตรค่าเฉลี่ยในการรอ = (เวลาเริ่ม – เวลาเกิด)/จำนวนโปรเซส ค่าเฉลี่ยเวลาที่ใช้ = (เวลาสิ้นสุด – เวลาเกิด) /จำนวนโปรเซส P1 P2 P3 P4 ค่าเฉลี่ยในการรอ = (8+0+2+10)/4 = 5 ms ค่าเฉลี่ยเวลาที่ใช้ = (11+5+13+18)/4 = 11.75 ms Job สั้นทำก่อน

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

  31. 3. อัลกอริธึมในการจัดเวลา 31 • การจัดเวลาตามลำดับความสำคัญ (Priority Scheduling) A C D B E 0 1 6 16 18 19 A B C D E ค่าเฉลี่ยในการรอ = (6+0+16+18+1)/5 = 8 ms

  32. 3. อัลกอริธึมในการจัดเวลา 32 • การจัดเวลาตามลำดับความสำคัญ (Priority Scheduling) วิธีการ 1. ดู Priority สำคัญก่อนทำก่อนจนจบกระบวนการ 2. พิจารณาร่วมกับเวลาเกิด แล้วค่อยดู Priority สูตรค่าเฉลี่ยในการรอ = (เวลาเริ่ม – เวลาเกิด)/จำนวนโปรเซส ค่าเฉลี่ยเวลาที่ใช้ = (เวลาสิ้นสุด – เวลาเกิด) /จำนวนโปรเซส P1 P2 P3 P4 ค่าเฉลี่ยในการรอ = (16 + 0 + 2+ 3)/4 = 5.25 ms

  33. แบบฝึกหัด 33 จากโจทย์ กรณีกำหนด ค่า Arrival Time, Process Arrival and Time Burst Time จงจงหา ค่าเฉลี่ยเวลาในการคอย โดยใช้ อัลกอริทึมแบบ Non Preemptive SJF และ Preemptive จากตารางดังต่อไปนี้

  34. แบบฝึกหัด 34 จากโจทย์ กรณีกำหนด ค่า Arrival Time, Process Arrival and Time Burst Time จงหา ค่าเฉลี่ยเวลาในการคอย โดยใช้ อัลกอริทึมแบบ Non Preemptive SJF และ Preemptive จากตารางดังต่อไปนี้

More Related