Ch06th

12,628
-1

Published on

Operating System
ระบบปฏิบัติการคอมพิวเตอร์
by Nuttha Otanasap (ณัฏฐ์ โอธนาทรัพย์)
Computer Science Dept.,
South-east Asia University
Bangkok 10160 Thailand
email: auisuke@gmail.com
website:auisuke
auisuke.blogspot.com
Hi5:auisuke.hi5.com
Copyrights 2009 SE Asia University All Rights Reserved

Published in: Technology
2 Comments
11 Likes
Statistics
Notes
No Downloads
Views
Total Views
12,628
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
0
Comments
2
Likes
11
Embeds 0
No embeds

No notes for slide
  • บทที่ 6 การจัดลำดับงานของหน่วยประมวลผลกลาง CPU Scheduling แนวคิดพื้นฐาน Basic Concepts หลักการการจัดลำดับงาน Scheduling Criteria วิธีการจัดลำดับงาน Scheduling Algorithms การจัดลำดับงานของมัลติโปรเซสเซอร์ หรือหน่วยประมวลผลแบบหลายตัว Multiple-Processor Scheduling การจัดลำดับงานแบบเรียลไทม์ Real-Time Scheduling การจัดลำดับงานของเธรด Thread Scheduling ตัวอย่างระบบปฏิบัติการ Operating Systems Examples การจัดลำดับงานของเธรดในจาวา Java Thread Scheduling การประเมินวิธีการ Algorithm Evaluation
  • Ch06th

    1. 1. บทที่ 6 การจัดลำดับงานของหน่วยประมวลผลกลาง CPU Scheduling <ul><li>แนวคิดพื้นฐาน Basic Concepts </li></ul><ul><li>หลักการการจัดลำดับงาน Scheduling Criteria </li></ul><ul><li>วิธีการจัดลำดับงาน Scheduling Algorithms </li></ul><ul><li>การจัดลำดับงานของมัลติโปรเซสเซอร์ หรือหน่วยประมวลผลแบบหลายตัว Multiple-Processor Scheduling </li></ul><ul><li>การจัดลำดับงานแบบเรียลไทม์ Real-Time Scheduling </li></ul><ul><li>การจัดลำดับงานของเธรด Thread Scheduling </li></ul><ul><li>ตัวอย่างระบบปฏิบัติการ Operating Systems Examples </li></ul><ul><li>การจัดลำดับงานของเธรดในจาวา Java Thread Scheduling </li></ul><ul><li>การประเมินวิธีการ Algorithm Evaluation </li></ul>
    2. 2. แนวคิดพื้นฐาน Basic Concepts <ul><li>การใช้งานหน่วยประมวลผลที่มีประสิทธิภาพสูงสุดคือการทำงานแบบมัลติโปรแกรม หรือหลายโปรแกรมพร้อมกัน </li></ul><ul><li>รอบการจัดการ หน่วยประมวลผล อินพุทเอ้าท์พุท หมายถึงการเอ็กซ์ซีคิวท์โปรเซสประกอบด้วยวงรอบของ การเอ็กซ์ซีคิวท์ของหน่วยประมวลผลและการรอคอยของอินพุทเอ้าท์พุท </li></ul><ul><li>การกระจายการดำเนินการหน่วยประมวลผล </li></ul>
    3. 3. Alternating Sequence of CPU And I/O Bursts
    4. 4. Histogram of CPU-burst Times
    5. 5. ตัวจัดลำดับการทำงานของหน่วยประมวลผลกลาง CPU Scheduler <ul><li>เป็นผู้เลือกว่าโปรเซสใดในหน่วยความจำที่พร้อมจะเข้าทำการเอ็กซ์ซีคิวท์ และเข้าใช้งานหน่วยประมวลผลกลาง </li></ul><ul><li>การตัดสินใจในการจัดลำดับการทำงานหน่วยประมวลผลกลางก่อนหลัง เกิดขึ้นเมื่อโปรเซสมีเหตุการณ์ต่างๆ เกิดขึ้นดังต่อไปนี้ </li></ul><ul><li>เกิดเมื่อเกิดการเปลี่ยนแปลงสถานะจากกำลังทำงานไปสู่สถานะการรอคอย </li></ul><ul><li>เกิดเมื่อเกิดการเปลี่ยนแปลงสถานะจากกำลังทำงานไปสู่สถานะพร้อมที่จะเข้าทำงาน </li></ul><ul><li>เกิดเมื่อเกิดการเปลี่ยนแปลงสถานะจากรอคอยไปสู่สถานะพร้อม </li></ul><ul><li>เกิดเมื่อโปรเซสสิ้นสุดการทำงาน </li></ul><ul><ul><li>ทั้งนี้การจัดลำดับการทำงานดังกล่าวตั้งแต่ 1 ถึง 4 เป็นแบบ nonpreemptive หรือไม่คำนึงถึงลำดับความสำคัญของโปรเซส </li></ul></ul><ul><ul><li>ในขระที่การจัดลำดับการทำงานในรูปแบบอื่นๆ เป็นไปแบบ preemptive หรือคำนึงถึงความสำคัญของโปรเซส </li></ul></ul>
    6. 6. ตัวควบคุมการทำงานของระบบ ( ดีสแพทเชอร์ ) Dispatcher <ul><li>โมดูลของดีสแพทเชอร์มีหน้าที่ในการควบคุมการทำงานของหน่วยประมวลผลกลาง เพื่อเลือกโปรเซส ในการทำงานจากตัวจัดลำดับการทำงานระยะสั้น โดยการทำสิ่งต่อไปนี้ </li></ul><ul><ul><li>สลับสภาพแวดล้อมในการทำงาน </li></ul></ul><ul><ul><li>สลับการทำงานไปสู่โหมดผู้ใช้งาน </li></ul></ul><ul><ul><li>กระโดดไปสู่พื้นที่ที่ถูกต้องในการทำงานของโปรแกรมที่ผู้ใช้งานนั้นๆ เพื่อการเรียกโปรแกรมนั้นกลับมาทำงานอีกครั้ง </li></ul></ul><ul><li>Dispatch latency หมายถึง ช่วงเวลาที่ถูกใช้ไปเพื่อการทำงานของดีสแพทเชอร์ ในการหยุดการทำงานของโปรเซสและทำให้อีกโปรเซสหนึ่งเริ่มทำงาน </li></ul>
    7. 7. หลักการในการจัดลำดับการทำงาน Scheduling Criteria <ul><li>การใช้งานหน่วยประมวลผลกลางให้เกิดประโยชน์สูงสุด CPU utilization หมายถึงการทำให้หน่วยประผลกลางถูกทำงาน หรือใช้งานให้มากที่สุด </li></ul><ul><li>ผลสัมฤทธิ์ Throughput หมายถึง จำนวนโปรเซสที่สามารถทำงานเสร็จสิ้นหรือทำการเอ็กซ์ซีคิวท์ได้เสร็จสิ้น ต่อหนึ่งหน่วยเวลา </li></ul><ul><li>เวลาวนรอบ Turnaround time หมายถึงจำนวนเวาทั้งสิ้นที่แต่ละโปรเซสใช้ในการประมวลผล </li></ul><ul><li>เวลารอคอย Waiting time หมายถึงจำนวนเวลาทั้งสิ้นที่โปรเซสต้องรอคอยอยู่ในคิวที่พร้อมจะเข้าทำงาน </li></ul><ul><li>เวลาในการตอบสนอง Response time หมายถึงเวลาทั้งสิ้นที่ใช้ไปนับตั้งแต่คำสั่งร้องขอเกิดขึ้นจนกระทั่งเกิดการตอบสนองต่อคำสั่งร้องขอนั้น ทั้งนี้ไม่ใช้หมายถึงเอ้าพุทหรือผลลัพท์ที่ได้จากการประมวลผล ( ในสภาพแวดล้อมการทำงานแบบแบ่งสรรเวลา ) </li></ul>
    8. 8. หลักการในการทำให้เกิดประสิทธิภาพสูงสุด Optimization Criteria <ul><li>ใช้งานหน่วยประมวลผลให้เต็มประสิทธิภาพมากที่สุด Max CPU utilization </li></ul><ul><li>ทำให้เกิดผลสัมฤทธิ์ในการทำงานสูงสุด Max throughput </li></ul><ul><li>ลดระยะเวลาการวนรอบให้น้อยที่สุด Min turnaround time </li></ul><ul><li>ลดระยะเวลาการรอคอยให้น้อยที่สุด Min waiting time </li></ul><ul><li>ลดระยะเวลาในการตอบสนองให้น้อยที่สุด Min response time </li></ul>
    9. 9. การจัดลำดับการทำงานแบบมาก่อนให้บริการก่อน First-Come, First-Served (FCFS) Scheduling <ul><li>Process Burst Time </li></ul><ul><li>P 1 24 </li></ul><ul><li> P 2 3 </li></ul><ul><li> P 3 3 </li></ul><ul><li>Suppose that the processes arrive in the order: P 1 , P 2 , P 3 The Gantt Chart for the schedule is: </li></ul><ul><li>Waiting time for P 1 = 0; P 2 = 24; P 3 = 27 </li></ul><ul><li>Average waiting time: (0 + 24 + 27)/3 = 17 </li></ul>P 1 P 2 P 3 24 27 30 0
    10. 10. FCFS Scheduling (Cont.) <ul><li>กำหนดให้ลำดับการทำงานของแต่ละโปรเซสเกิดขึ้นดังต่อไปนี้ </li></ul><ul><li>Suppose that the processes arrive in the order </li></ul><ul><li> P 2 , P 3 , P 1 </li></ul><ul><li>The Gantt chart for the schedule is: </li></ul><ul><li>Waiting time for P 1 = 6 ; P 2 = 0 ; P 3 = 3 </li></ul><ul><li>Average waiting time: (6 + 0 + 3)/3 = 3 </li></ul><ul><li>Much better than previous case </li></ul><ul><li>Convoy effect short process behind long process </li></ul>P 1 P 3 P 2 6 3 30 0
    11. 11. การจัดลำดับการทำงานแบบงานใดใช้เวลาในการทำงานสั้นที่สุดให้งานนั้นทำก่อน Shortest-Job-First (SJR) Scheduling <ul><li>ด้วยแต่ละโปรเซสใช้เวลาในการทำงานแตกต่างกัน การจัดลำดับโปรเซสโดยพิจารณาจากระยะเวลาที่สั้นที่สุด ในการจัดลำดับการทำงาน </li></ul><ul><li>แบ่งออกเป็นสองแบบคือ </li></ul><ul><ul><li>Nonpreemptive คือการทำงานที่หน่วยประมวลผลจะให้โปรเซสทำงานจนเสร็จสิ้นโดยไม่คำนึงถึงระดับความสำคัญ </li></ul></ul><ul><ul><li>Preemptive คือการทำงานที่พิจรณาถึงระดับความสำคัญ เมื่อเกิดโปรเซสขึ้นใหม่ที่ใช้ระยะเวลาในการทำงานสั้นกว่าโปรเซสเดิมที่กำลังทำงานอยู่ หน่วยประมวลผลจะให้โปรเซสใหม่ที่เกิดขึ้นแม้ว่าจะเกิดขึ้นภายหลังเข้าทำงานก่อน และให้โปรเซสเดิมที่ต้องใช้เวลาในการทำงานนานกว่าหยุดการทำงานโดยชั่วคราว </li></ul></ul><ul><li>การทำงานด้วยวิธีนี้ SJF จึงสามารถช่วยลดระยะเวลาในการรอคอยของแต่ละโปรเซสโดยรวมเฉลี่ยลดลง </li></ul>
    12. 12. <ul><li>Process Arrival Time Burst Time </li></ul><ul><li>P 1 0.0 7 </li></ul><ul><li> P 2 2.0 4 </li></ul><ul><li> P 3 4.0 1 </li></ul><ul><li> P 4 5.0 4 </li></ul><ul><li>SJF (non-preemptive) </li></ul><ul><li>Average waiting time = (0 + 6 + 3 + 7)/4 - 4 </li></ul>Example of Non-Preemptive SJF P 1 P 3 P 2 7 3 16 0 P 4 8 12
    13. 13. Example of Preemptive SJF <ul><li>Process Arrival Time Burst Time </li></ul><ul><li>P 1 0.0 7 </li></ul><ul><li> P 2 2.0 4 </li></ul><ul><li> P 3 4.0 1 </li></ul><ul><li> P 4 5.0 4 </li></ul><ul><li>SJF (preemptive) </li></ul><ul><li>Average waiting time = (9 + 1 + 0 +2)/4 - 3 </li></ul>P 1 P 3 P 2 4 2 11 0 P 4 5 7 P 2 P 1 16
    14. 14. การกำหนดขนาดของการทำงานโปรเซสถัดไป Determining Length of Next CPU Burst <ul><li>สามารถประมาณการได้เฉพาะขนาด </li></ul><ul><li>สามารถดำเนินการให้ลุล่วงด้วยขนาดของระยะเวลาการทำงานของโปรเซสก่อนหน้า โดยการใช้ค่าเฉลี่ยเอ็กซ์โปแนนเชียล </li></ul>
    15. 15. Prediction of the Length of the Next CPU Burst
    16. 16. Examples of Exponential Averaging <ul><li> =0 </li></ul><ul><ul><li> n+1 =  n </li></ul></ul><ul><ul><li>Recent history does not count </li></ul></ul><ul><li> =1 </li></ul><ul><ul><li> n+1 = t n </li></ul></ul><ul><ul><li>Only the actual last CPU burst counts </li></ul></ul><ul><li>If we expand the formula, we get: </li></ul><ul><ul><ul><li> n+1 =  t n +( 1 -  )  t n - 1 + … </li></ul></ul></ul><ul><ul><ul><li>+(1 -  ) j  t n - 1 + … </li></ul></ul></ul><ul><ul><ul><li>+(1 -  ) n=1 t n  0 </li></ul></ul></ul><ul><li>Since both  and (1 -  ) are less than or equal to 1, each successive term has less weight than its predecessor </li></ul>
    17. 17. การจัดลำดับการทำงานแบบคำนึงถึงระดับความสำคัญ Priority Scheduling <ul><li>จำนวนของระดับความสำคัญ ( จำนวนเต็ม integer ) จะสัมพันธ์กับแต่ละโปรเซส </li></ul><ul><li>โปรเซสที่เข้าใช้งานหน่วยประมวลผลจะต้องมีระดับความสำคัญสูงสุด ( ค่าน้อยสุด มีระดับความสำคัญสูงสุด ) </li></ul><ul><ul><li>แบบพรีเอ็มทีฟ Preemptive </li></ul></ul><ul><ul><li>แบบนอนพรีเอ็มทีฟ nonpreemptive </li></ul></ul><ul><li>SJF หมายถึง การจัดลำดับการทำงานแบบคำนึงถึงระดับความสำคัญ เมื่อระดับความสำคัญเกิดจากการคาดการณ์ ระยะเวลาที่ใช้ในการประมวลผลของโปรเซสถัดไป </li></ul><ul><li>ปัญหาคือ โปรเซสที่ระดับความสำคัญต่ำสุดอาจไม่ได้รับการประมวลผลหรือไม่ถูกเอ็กซ์ซีคิวท์เลย ( สตาร์เวชั่น Starvation ) </li></ul><ul><li>การแก้ไข โดยกำหนดให้เวลาที่สูญเสียในการรอคอยจะไปเพิ่มระดับความสำคัญของโปรเซสนั้นให้เพิ่มมากขึ้น ( เอจจิ้ง Aging ) </li></ul>
    18. 18. ราวโรบิน ( Round Robin RR) <ul><li>กำหนดให้แต่ละโปรเซสได้รับเวลาในการประมวลผลหรือเวลาที่สามารถเข้าใช้หน่วยประมวลผล ระยะสั้นๆ เท่าๆ กัน เรียกว่าเวลาควอนตัม โดยทั่วไปประมาณ 10 – 100 มิลลิวินาที เมื่อแต่ละโปรเซสใช้เวลาที่ตนเองได้รับหมดไป โปรเซสนั้นก็จะต้องหยุดทำงานและถูกย้ายกลับเข้าไปอยู่ยังลำดับสุดท้ายของคิวเพื่อการรอคอยเข้าทำงานอีกครั้ง เพื่อให้โปรเซสในลำดับแรกสุดของคิวเข้าใช้งานหน่วยประมวลผลหรือเข้าทำงานตามเวลาที่โปรเซสนั้นได้รับวนเป็นรอบเช่นนี้ </li></ul><ul><li>โดยที่จำนวนโปรเซส n จำนวนในคิวพร้อม และเวลาควอนตัมเท่ากับ q แต่ละโปรเซสจะได้เวลาเพื่อการเข้าใช้งานหน่วยประมวลผลเป็น 1/n ของเวลาที่หน่วยประมวลผลสามารถประมวลผลในหนึ่งช่วงเวลา ดังนั้นจึงไม่มีโปรเซสใดที่จะต้องรอนานเกินกว่า ( n-1)q หน่วยเวลา </li></ul><ul><li>ประสิทธิภาพ </li></ul><ul><ul><li>Q มีขนาดใหญ่ ใช้ FIFO </li></ul></ul><ul><ul><li>Q มีขนาดเล็ก q จะต้องมีขนาดใหญ่เพียงพอที่จะสามารถรองรับการสลับสภาพแวดล้อม ทั้งนี้ย่อมเสียเวลาเพิ่มมากขึ้นด้วยในการทำการสลับการทำงาน </li></ul></ul>
    19. 19. Example of RR with Time Quantum = 20 <ul><li>Process Burst Time </li></ul><ul><li>P 1 53 </li></ul><ul><li> P 2 17 </li></ul><ul><li> P 3 68 </li></ul><ul><li> P 4 24 </li></ul><ul><li>The Gantt chart is: </li></ul><ul><li>โดยปกติ ค่าเฉลี่ยระยะเวลาในการวนรอบจะสูงกว่า SJF แต่ดีกว่า การตอบสนอง </li></ul><ul><li>Typically, higher average turnaround than SJF, but better response </li></ul>P 1 P 2 P 3 P 4 P 1 P 3 P 4 P 1 P 3 P 3 0 20 37 57 77 97 117 121 134 154 162
    20. 20. เวลาควอนตัม กับเวลาในการสลับสภาพแวดล้อม Time Quantum and Context Switch Time
    21. 21. เวลาในการวนรอบแปรผันตามเวลาควอนตัม Turnaround Time Varies With The Time Quantum
    22. 22. คิวแบบหลายระดับ Multilevel Queue <ul><li>คิวพร้อมจะถูกแบ่งออกเป็นคิวย่อยๆ หลายคิว โดยที่ </li></ul><ul><ul><li>ฟอร์กราวด์ ( อินเตอร์แอ็กทีฟ ) foreground (interactive) </li></ul></ul><ul><ul><li>แบคก์กราวด์ ( แบทช์ ) background (batch) </li></ul></ul><ul><li>แต่ละคิวมีอัลกอริธึมในการจัดลำดับการทำงานเป็นของตนเอง </li></ul><ul><li>ฟอร์กราวด์ RR foreground – RR </li></ul><ul><li>แบคก์กราวด์ FCFS background – FCFS </li></ul><ul><li>การจัดลำดับการทำงานจะต้องดำเนินการระหว่างคิว </li></ul><ul><ul><li>การกำหนดระดับความสำคัญของการจัดลำดับการทำงานแบบคงที่ อาจเกิด สตาร์เวชั่น </li></ul></ul><ul><ul><li>การแบ่งย่อยเวลา Time slice แต่ละคิวจะทราบถึงเวลารวมของการประมวลผลของหน่วยประมวลผลด้วยการจัดลำดับการทำงานระหว่างโปรเซส อาทิเช่น 80% ใช้กับโฟร์กราวด์ใน RR </li></ul></ul><ul><li>20% ใช้กับแบคกราวด์ ใน FCFS </li></ul>
    23. 23. การจัดลำดับการทำงานของคิวแบบหลายระดับ Multilevel Queue Scheduling
    24. 24. คิวของผลตอบกลับแบบหลายระดับ Multilevel Feedback Queue <ul><li>โปรเซสสามาถเคลื่อนย้ายระหว่างคิวต่างๆ กัน ( สามารถใช้วิธีนี้ได้ในวิธีเอจจิ้ง ) </li></ul><ul><li>ตัวจัดลำดับการทำงานของคิวของผลตอบกลับแบบหลายระดับถูกกำหนดโดยพารามิเตอร์ต่างๆ ดังต่อไปนี้ </li></ul><ul><ul><li>จำนวนของคิว </li></ul></ul><ul><ul><li>อัลกอริธึมในการจัดลำดับการทำงานของแต่ละคิว </li></ul></ul><ul><ul><li>ระเบียบวิธีที่ใช้ในการดำเนินการเมื่อทำการเพิ่มระดับโปรเซส </li></ul></ul><ul><ul><li>ระเบียบวิธีที่ใช้ในการดำเนินการเมื่อทำการลดระดับโปรเซส </li></ul></ul><ul><ul><li>ระเบียบวิธีที่ใช้ในการดำเนินการเพื่อทำการจัดคิวของโปรเซสเมื่อโปรเซสนั้นต้องการงานบริการ </li></ul></ul>
    25. 25. ตัวอย่างของคิวของผลตอบกลับแบบหลายระดับ Example of Multilevel Feedback Queue <ul><li>Three queues: </li></ul><ul><ul><li>Q 0 – time quantum 8 milliseconds </li></ul></ul><ul><ul><li>Q 1 – time quantum 16 milliseconds </li></ul></ul><ul><ul><li>Q 2 – FCFS </li></ul></ul><ul><li>การจัดลำดับการทำงาน Scheduling </li></ul><ul><li>เมื่อเกิดงานใหม่ขึ้นเข้าไปอยู่ในคิว q0 ด้วยการทำงานแบบ FCFS เมื่อโปรเซสนั้นถึงลำดับที่สามารถเข้าใช้งานหน่วยประมวลผล งานนั้นจะได้รับเวลาในการทำงาน 8 มิลลิวินาที หากงานั้นไม่สามารถดำเนินการให้เสร็จสิ้นภายในระยะเวลา 8 มิลลิวินาที งานนั้นจะถูกเคลื่อนย้ายไปยัง q1 </li></ul><ul><li>ใน q1 งานั้นจะถูกจัดการด้วย FCFS อีกครั้งและได้รับเวลาในการทำงานเพิ่มขึ้นอีก 16 มิลลิวินาที และหากยังคงไม่สามารถดำเนินการให้เสร็จสิ้นอีก ก็จะถูกทำการเพิ่มระดับความสำคัญและเคลื่อนย้ายเข้าสู่ คิว q2 ต่อไป </li></ul>
    26. 26. Multilevel Feedback Queues
    27. 27. การจัดลำดับการทำงานแบบหน่วยประมวลผลหลายหน่วย Multiple-Processor Scheduling <ul><li>การจัดลำดับการทำงานให้แก่หน่วยประมวลแบบหลายหน่วยจะมีความสลับซับซ้อนเมื่อหน่วยประมวลผลหลายตัวพร้อมที่จะทำงานพร้อมๆ กัน </li></ul><ul><li>หน่วยประมวลผลที่มีคุณสมบัติเหมือนกัน Homogeneous processors ในระบบหน่วยประมวลผลหลายหน่วย </li></ul><ul><li>การจัดสรรภาระให้เท่าเทียมกัน Load sharing </li></ul><ul><li>หน่วยประมวลผลหลายหน่วยแบบคุณสมบัติต่างกัน Asymmetric multiprocessing จะมีเพียงหน่วยประมวลผลเพียงหน่วยเดียวเท่านั้นที่สามารถเข้าถึงโครงสร้างข้อมูลของระบบ เพื่อบรรเทาความต้องการการใช้ข้อมูลร่วมพร้อมๆ กัน </li></ul>
    28. 28. การจัดลำดับการทำงานแบบเรียลไทม์ Real-Time Scheduling <ul><li>ระบบเรียลไทม์แบบเข้มงวด Hard real-time systems จำเป็นจะต้องให้งานที่จำเป็นสามารถทำงานให้เสร็จสิ้นภายในเวลาที่กำหนดแน่นอน </li></ul><ul><li>ระบบเรียลไทม์แบบไม่เข้มงวด Soft real-time computing จำเป็นต้องให้โปรเซสที่จำเป็นได้รับการจัดระดับความสำคัญสูงกว่าโปรเซสอื่นที่จำเป็นน้อยกว่า </li></ul>
    29. 29. Dispatch Latency
    30. 30. การประเมินอัลกอริธึม Algorithm Evaluation <ul><li>Deterministic modeling – takes a particular predetermined workload and defines the performance of each algorithm for that workload </li></ul><ul><li>Queueing models </li></ul><ul><li>Implementation </li></ul>
    31. 31. แบบจำลองการประเมินตัวจัดลำดับการทำงานของหน่วยประมวลผล Evaluation of CPU Schedulers by Simulation
    32. 32. การจัดลำดับการทำงานของโซลาริส 2 Solaris 2 Scheduling
    33. 33. ค่าระดับความสำคัญของวินโดวส์เอ็กซ์พี Windows XP Priorities
    34. 34. การจัดลำดับการทำงานของ ลีนุกซ์ Linux Scheduling <ul><li>อัลกอริธึมสองแบบ : การแบ่งสรรเวลา และเรียลไทม์ </li></ul><ul><li>การแบ่งสรรเวลา Time-sharing </li></ul><ul><ul><li>การพิจารณาระดับความสำคัญจากความน่าเชื่อถือ โดยโปรเซสที่มีความน่าเชื่อถือมากที่สุดจะได้รับการจัดลำดับให้เข้าทำงานเป็นโปรเซสถัดมา </li></ul></ul><ul><ul><ul><li>- ความน่าเชื่อถือจะถูกหักออกเมื่อเกิดการขัดจังหวะของตัวจับเวลา </li></ul></ul></ul><ul><ul><ul><li>- เมื่อความน่าเชื่อถือมีค่าเป็นศูนย์ โปรเซสอื่นๆ ก็จะเป็นผู้ถูกเลือก </li></ul></ul></ul><ul><ul><ul><li>- เมื่อทุกๆ โปรเซสมีความน่าเชื่อถือเป็นศูนย์ จะเกิดการปรับความน่าเชื่อถือให้กลับมีค่าดังเดิม </li></ul></ul></ul><ul><ul><ul><li>- โดยพิจารณาจากปัจจัยต่างๆ คือ ระดับความสำคัญและประวัติในการประมวลผล </li></ul></ul></ul>
    35. 35. การจัดลำดับการทำงานของ ลีนุกซ์ Linux Scheduling <ul><li>อัลกอริธึมสองแบบ : การแบ่งสรรเวลา และเรียลไทม์ </li></ul><ul><li>เรียลไทม์ Real-time </li></ul><ul><ul><li>เรียลไทม์แบบไม่เข้มงวด Soft real-time </li></ul></ul><ul><ul><li>พิจารณาตาม Posix.1b แบ่งเป็น สองคลาส </li></ul></ul><ul><ul><ul><li>FCFS และ RR </li></ul></ul></ul><ul><ul><ul><li>โปรเซสที่มีระดับความสำคัญสูงสุดย่อมได้รับสิทธิในการทำงานก่อน </li></ul></ul></ul>
    36. 36. การจัดลำดับการทำงานของเธรด Thread Scheduling <ul><li>การจัดลำดับการทำงานแบบโลคอล Local Scheduling การที่เธรดไลบรารีตัดสินได้อย่างไรว่าเธรดใดควรนำไปไว้ยัง LWP ที่พร้อมทำงาน </li></ul><ul><li>การจัดลำดับการทำงานแบบโกลบอล Global Scheduling การที่เคอร์แนลตัดสินได้อย่างไรว่าเธรดของเคอร์แนลใดจะต้องเป็นเธรดที่ต้องทำงานในลำดับถัดไป </li></ul>
    37. 37. การจัดลำดับการทำงานของเธรดในภาษาจาวา Java Thread Scheduling <ul><li>JVM ใช้การจัดการแบบอัลกอริธึมที่คำนึงถึงระดับความสำคัญหรือ Preemptive </li></ul><ul><li>คิวแบบ FIFO ถูกใช้เมื่อเกิดเธรดหลายเธรดที่มีระดับความสำคัญเท่ากัน </li></ul>
    38. 38. Java Thread Scheduling (cont) <ul><li>JVM จะจัดลำดับการทำงานของเธรดเมื่อ </li></ul><ul><li>1 เมื่อเธรดที่ทำงานอยู่ในขณะนั้นออกจากสถานะที่สามารถทำงาน </li></ul><ul><li>2 เธรดที่มีระดับความสำคัญสูงสุด เปลี่ยนแปลงเข้าสู่สถานะที่สามารถทำงาน </li></ul><ul><li>หมายเหตุ JVM ไม่สามารถทราบได้ว่าเธรดนั้นเป็นเธรดแบบถูกแบ่งย่อยเวลาหรือไม่ </li></ul>
    39. 39. การแบ่งย่อยเวลา Time-Slicing <ul><li>เมื่อ JVM ไม่สามารถแน่ใจได้ว่า เป็นแบบแบ่งย่อยเวลาหรือไม่ เมทธอด yield() จึงอาจถูกเรียกใช้งาน </li></ul><ul><li>while (true) { </li></ul><ul><li>// perform CPU-intensive task </li></ul><ul><li>. . . </li></ul><ul><li>Thread.yield(); </li></ul><ul><li>} </li></ul><ul><li>Yield จะทำการควบคุมเธรดอื่นๆ ที่มีระดับความสำคัญเท่ากัน </li></ul>
    40. 40. ระดับความสัคญของเธรด Thread Priorities <ul><li>Priority Comment </li></ul><ul><li>Thread.MIN_PRIORITY Minimum Thread Priority </li></ul><ul><li>Thread.MAX_PRIORITY Maximum Thread Priority </li></ul><ul><li>Thread.NORM_PRIORITY Default Thread Priority </li></ul><ul><li>การกำหนดระดับความสำคัญอาจใช้ เมทธอด setPriority() </li></ul><ul><li>setPriority(Thread.NORM_PRIORITY + 2); </li></ul>

    ×