300 likes | 526 Vues
Operating System. บทที่ 5 การจัดตารางการทำงานของหน่วยประมวลผลกลาง (CPU SCHEDUING). ช่วงประมวลผล / ช่วงรับส่งข้อมูล (CPU-I/O burst cycle).
E N D
Operating System บทที่ 5 การจัดตารางการทำงานของหน่วยประมวลผลกลาง (CPU SCHEDUING)
ช่วงประมวลผล/ช่วงรับส่งข้อมูล(CPU-I/O burst cycle) • กระบวนการทั่วไปจะทำงานเป็นวงจรคือ ทำงาน (ในหน่วยประมวลผล) และ รอคอย (รอการรับส่งข้อมูล) สลับกันไป โดยเริ่มต้นที่ทำงานในหน่วยประมวลผลก่อนเรียกว่า ช่วงประมวลผล (CPU-burst) แล้วก็จะหยุดเพื่อทำงานในอุปกรณ์รับส่งข้อมูลเรียกว่า ช่วงรับส่งข้อมูล (I/O burst) • แล้วตามด้วยช่วงประมวลผลอีกสลับกันไปจนสุดท้ายจะเป็นช่วงประมวลผล และก็สิ้นสุดกระบวนการ ดังรูป
การสลับลำดับของช่วงประมวลผล (CPU burst)และช่วงรับส่งข้อมูล (I/O burst)
ตัวจัดตารางการทำงานของหน่วยประมวลผลกลาง(CPU Scheduler) • เมื่อหน่วยประมวลผลกลางว่างลง ระบบก็จะเลือกกระบวนการจากแถวพร้อม (Ready Queue) เพื่อให้ทำงานในหน่วยประมวลผลกลางต่อไป โดยใช้ตัวจัดตารางระยะสั้น (short-term scheduler) (หรือตัวจัดตารางการทำงานของหน่วยประมวลผล (CPU scheduler))
การจัดตารางแบบให้แทรกกลางคัน(Preemptive Scheduling) • ในการจัดตารางหน่วยประมวลผลกลาง ระบบจะต้องตัดสินใจ หรือ เลือก เมื่อมีเหตุการณ์หนึ่งเกิดขึ้น คือ • เมื่อกระบวนการเปลี่ยนสถานะจาก กำลังทำงาน (running) ไปเป็นกำลังรอคอย (waiting) • เมื่อกระบวนการเปลี่ยนสถานะ จาก กำลังทำงาน (running) ไปเป็นสถานะพร้อม (ready) • เมื่อกระบวนการเปลี่ยนสถานะ จาก กำลังรอคอย (waiting) ไปเป็นสถานะพร้อม (ready) • เมื่อกระบวนการสิ้นสุด
การจัดตารางแบบให้แทรกกลางคัน(Preemptive Scheduling) • ถ้าการจัดตารางการทำงานเกิดขึ้นได้เฉพาะเหตุการณ์ 1 และ 4 เท่านั้นแล้ว เราเรียกการจัดตารางนี้ว่าเป็น “แบบไม่ให้แทรกกลางคัน” (Nonpreemptive) นอกนั้นถือเป็น แบบให้แทรกกลางคัน(Preemptive)
ตัวส่งต่อ(Dispatcher) • ตัวส่งต่อ (Dispatcher) เป็นโปรแกรมที่ย้ายการควบคุมไปยังกระบวนการใหม่ (ที่ถูกเลือกโดยตัวจัดตารางระยะสั้น) โดยมีขั้นตอนดังนี้ • เปลี่ยนงาน (switching context) • เปลี่ยนไปเป็นช่วงผู้ใช้ (user mode) • ย้ายการควบคุมไปที่บรรทัดคำสั่งในโปรแกรมผู้ใช้ เพื่อ restart โปรแกรมนั้น
เกณฑ์การจัดตาราง (Scheduling Criteria) • ประสิทธิผลการใช้หน่วยประมวลผลกลาง (CPU Utilization))เราต้องพยายามทำให้หน่วยประมวลผลกลางถูกใช้งานตลอดเวลา • อัตราปริมาณงาน (Throughput) คือ จำนวนกระบวนการที่ทำงานเสร็จสมบูรณ์ต่อหน่วยเวลา • วงรอบการทำงาน (Turnaround time) คือ เวลาที่กระบวนการหนึ่ง ๆ ต้องเสียไปสำหรับการทำงานทั้งหมด • เวลารอคอย (Waiting time) คือ ระยะเวลาที่แต่ละกระบวนการจะต้องรอคอยอยู่ในแถวพร้อม • เวลาตอบสนอง (Response time) คือระยะเวลาตั้งแต่ที่ผู้ใช้ส่งงานให้ระบบ จนถึงเวลาที่ผลลัพธ์แรกปรากฏแก่ผู้ใช้
การจัดตารางการทำงานแบบมาก่อน – ได้ก่อน(First–Come, First-Served Scheduling / FCFS)
การจัดตารางการทำงานแบบมาก่อน – ได้ก่อน(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 มิลลิวินาที
การจัดตารางการทำงานแบบมาก่อน – ได้ก่อน(First–Come, First-Served Scheduling / FCFS) • แต่ถ้ากระบวนการที่เข้าสู่ระบบมีลำดับใหม่เป็น P2, P3 และ P1 เราจะได้แผนภาพ Gantt chart ดังนี้ P2 P3 P1 0 3 6 30 • ทำให้เวลารอคอยโดยเฉลี่ยที่ได้คือ (6 + 0 + 3) / 3 = 3 มิลลิวินาที
การจัดตารางการทำงานแบบมาก่อน – ได้ก่อน(First–Come, First-Served Scheduling / FCFS) • เวลารอคอยโดยเฉลี่ยของกระบวนการที่ทำงานภายใต้วิธีนี้ มักจะมีค่าค่อนข้างมาก และถ้าช่วงเวลาการทำงานมีการเปลี่ยนแปลงมาก ก็จะทำให้ค่าเวลารอคอยโดยเฉลี่ยเปลี่ยนแปลงมากตามไปด้วย • การทำงานของวิธีการจัดตารางแบบมาก่อน – ได้ก่อนนี้ เป็นการทำงานที่ไม่สามารถแทรกกลางคันได้
การจัดตารางการทำงานแบบงานสั้นที่สุดได้ก่อน(Shortest–Job-First Scheduling / SJF)
การจัดตารางการทำงานแบบงานสั้นที่สุดได้ก่อน(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
การจัดตารางการทำงานแบบงานสั้นที่สุดได้ก่อน(Shortest–Job-First Scheduling / SJF) • วิธี SJF นี้อาจทำเป็นแบบให้แทรกกลางคัน (preemptive) หรือ ห้ามแทรกกลางคัน (nonpreemptive) ก็ได้ เมื่อกระบวนการใหม่เข้ามาในแถวคอย ขณะที่กระบวนการหนึ่งกำลังทำงานอยู่ ถ้ากระบวนการใหม่มีเวลาที่จะต้องทำงานสั้นกว่า เวลาที่เหลือ ของกระบวนการที่กำลังทำงาน • ในกรณีให้แทรกกลางคันได้ กระบวนการใหม่สามารถแทรกเข้าไปทำงานแทน (กระบวนการที่กำลังทำงานอยู่) ได้ • แต่ถ้าห้ามแทรกกลางคัน กระบวนการใหม่ จะต้องรอจนกว่ากระบวนการเดิมเสร็จเสียก่อน
การจัดตารางการทำงานแบบงานสั้นที่สุดได้ก่อน(Shortest–Job-First Scheduling / SJF) • การจัดตารางการทำงานแบบสั้นที่สุดได้ก่อน โดยให้แทรกกลางคันได้ บางครั้งเรียกว่า • แบบเวลาที่เหลือสั้นที่สุดก่อน (shortest-remaining-time-first) • ตัวอย่างเช่น
การจัดตารางการทำงานแบบงานสั้นที่สุดได้ก่อน(Shortest–Job-First Scheduling / SJF) • ถ้าใช้วิธี SJF แบบให้แทรกกลางคันได้ ผลจะเป็นดังตาราง Gantt chart ดังนี้ • 0 1 5 10 17 26
การจัดตารางการทำงานแบบงานสั้นที่สุดได้ก่อน(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 มิลลิวินาที
การจัดตารางการทำงานแบบศักดิ์สูงได้ก่อน (Priority Scheduling) • เลขน้อยกว่ามีศักดิ์สูงกว่า
การจัดตารางการทำงานแบบศักดิ์สูงได้ก่อน (Priority Scheduling) 0 1 6 16 18 19 เวลารอคอยเฉลี่ย คือ [(6+0+16+18+1)]/5 = 8.2 มิลลิวินาที การจัดตารางแบบศักดิ์สูงได้ก่อนสามารถแทรกกลางคันหรือห้ามแทรกกลางคันก็ได้ เมื่อกระบวนการมาถึงแถวพร้อม ศักดิ์ของมันจะถูกนำมาเปรียบเทียบกับศักดิ์ของกระบวนการที่กำลังทำงานอยู่ การจัดตารางศักดิ์สูงได้ก่อนแบบสามารถแทรกกลางคันจะแทรกกลางคัน ถ้าศักดิ์ของกระบวนการที่มาใหม่สูงกว่า แต่แบบห้ามแทรกกลางคันจะนำกระบวนการใหม่ไปไว้ที่หัวแถวของแถวพร้อมแทน
การจัดตารางการทำงานแบบศักดิ์สูงได้ก่อน (Priority Scheduling) • ปัญหาที่สำคัญของการจัดตารางแบบศักดิ์สูงได้ก่อนนี้ คือ ปัญหาการแช่เย็น (Starvation) หรือ การรอคอยชั่วนิรันดร์ (indefinite blocking) ในระบบคอมพิวเตอร์ที่มีภาระงานหนัก กระบวนการที่มีศักดิ์สูง อาจเข้ามาในระบบเรื่อย ๆ จนเป็นเหตุให้ กระบวนการที่มีศักดิ์ต่ำไม่มีโอกาสได้ใช้หน่วยประมวลผลเลย
การจัดตารางการทำงานแบบศักดิ์สูงได้ก่อน (Priority Scheduling) • การแก้ปัญหาดังกล่าวข้างต้น อาจกระทำได้โดยวิธีการเพิ่มศักดิ์ทีละน้อย ๆ ให้กับกระบวนการที่รออยู่นานแล้วในระบบ วิธีการดังกล่าวเรียกว่า การเพิ่มศักดิ์ (Aging) เราอาจเพิ่มศักดิ์กระบวนการที่รออยู่ขึ้นทีละ 1 เมื่อเวลาผ่านไปทุก ๆ 15 นาที จนในที่สุดกระบวนการที่รออยู่นานแล้ว จะมีศักดิ์สูงที่สุดในระบบทำให้สามารถทำงานได้
การจัดตารางการทำงานแบบเวียนเทียน (Round-Robin Scheduling / RR)
การจัดตารางการทำงานแบบเวียนเทียน (Round-Robin Scheduling / RR) • เราอาจแสดงตารางการทำงานของกระบวนการทั้ง 3 ได้ดังนี้ 0 4 7 10 14 18 22 26 30 ซึ่งเวลารอคอยโดยเฉลี่ยที่ได้มีค่าเท่ากับ [(10-4)+4+7]/3 = 5.66มิลลิวินาที
การประเมินอัลกอริทึม (Algorithm Evaluation) • ขั้นแรกจำเป็นต้องกำหนดคุณสมบัติก่อน ว่าต้องการคุณสมบัติใดมีค่าเท่าใด เช่น • ให้ได้ประสิทธิผลการใช้หน่วยประมวลผลสูงสุดที่เวลาตอบสนองนานที่สุด ไม่เกิน 1 วินาที • ให้มีอัตรางาน (throughput) เสร็จสูงที่สุด โดยที่ วงรอบการทำงาน (turnaround time) (โดยเฉลี่ย) เป็นสัดส่วนโดยตรงกับการประมวลผลจริง
การกำหนดโมเดล(Deterministic Modeling)
วิธีมาก่อน-ได้ก่อน (FCFS) 0 10 39 42 49 61 • เวลารอคอยเฉลี่ย = (0+10+39+42+49) / 5 = 28 มิลลิวินาที
วิธีสั้นที่สุดได้ก่อน(SJF)วิธีสั้นที่สุดได้ก่อน(SJF) 0 3 10 20 32 61 • เวลารอคอยเฉลี่ย = (10+32+0+3+20) / 5 = 13 มิลลิวินาที
วิธีเวียนเทียน (RR) (ส่วนแบ่งเวลา = 10 มิลลิวินาที) 0 10 20 23 30 40 50 52 61 • เวลารอคอยเฉลี่ย = (0+32+20+23+40) / 5 = 23 มิลลิวินาที