ให้เราคุยกันถึงความแตกต่างระหว่างทั้งแบบ Preemptive และ Non-Preemptive Scheduling โดยสังเขปด้วยความช่วยเหลือของตารางเปรียบเทียบที่แสดงด้านล่าง
แผนภูมิเปรียบเทียบ
พื้นฐานสำหรับการเปรียบเทียบ | กำหนดเวลาไว้ล่วงหน้า | การกำหนดตารางเวลาที่ไม่ต้องเสียภาษี |
---|---|---|
ขั้นพื้นฐาน | ทรัพยากรถูกจัดสรรให้กับกระบวนการในระยะเวลาที่ จำกัด | เมื่อจัดสรรทรัพยากรให้กับกระบวนการแล้วกระบวนการจะเก็บมันไว้จนกว่ามันจะเสร็จสิ้นระยะเวลาการแตกออกมาหรือเปลี่ยนเป็นสถานะรอ |
ขัดจังหวะ | กระบวนการสามารถถูกขัดจังหวะในระหว่าง | กระบวนการไม่สามารถถูกขัดจังหวะจนกว่าจะสิ้นสุดหรือเปลี่ยนเป็นสถานะรอ |
ความอดอยาก | หากกระบวนการที่มีลำดับความสำคัญสูงมาถึงคิวที่พร้อมใช้งานบ่อยกระบวนการที่มีลำดับความสำคัญต่ำอาจไม่เพียงพอ | หากกระบวนการที่ใช้เวลานานต่อเนื่องในการเรียกใช้ CPU กระบวนการอื่นที่มีเวลาในการแตกของ CPU น้อยลงอาจทำให้อดอาหารได้ |
เหนือศีรษะ | การกำหนดตารางล่วงหน้ามีค่าโสหุ้ยการจัดกำหนดการกระบวนการ | การกำหนดเวลาที่ไม่ต้องเสียภาษีไม่มีค่าใช้จ่าย |
มีความยืดหยุ่น | การกำหนดเวลาล่วงหน้ามีความยืดหยุ่น | การกำหนดเวลาที่ไม่ต้องเสียภาษีนั้นเข้มงวด |
ราคา | การกำหนดเวลาล่วงหน้าเป็นสิ่งที่เกี่ยวข้องกับต้นทุน | การกำหนดเวลาที่ไม่ต้องเสียภาษีไม่ได้เชื่อมโยงกับต้นทุน |
คำจำกัดความของการกำหนดตารางเวลาไว้ล่วงหน้า
การกำหนดเวลาล่วงหน้าเป็นสิ่งที่สามารถทำได้ในสถานการณ์เมื่อกระบวนการสลับจาก สถานะการทำงานเป็นสถานะ พร้อม หรือจาก สถานะ รอเป็น สถานะ พร้อม ที่นี่ทรัพยากร (รอบ CPU) ถูกจัดสรรให้กับกระบวนการในระยะเวลาที่ จำกัด จากนั้นถูกนำออกไปและกระบวนการจะถูกนำกลับมาอยู่ในคิวพร้อมอีกครั้งหากยังมีเวลาในการระเบิดของ CPU ที่เหลืออยู่ กระบวนการยังคงอยู่ในคิวพร้อมจนกว่าจะมีโอกาสดำเนินการต่อไป
หากกระบวนการที่มีลำดับความสำคัญสูงมาถึงในคิวที่พร้อมใช้งานไม่จำเป็นต้องรอให้กระบวนการปัจจุบันดำเนินการจนเสร็จสิ้น แต่กระบวนการปัจจุบันจะถูกขัดจังหวะในช่วงกลางของการดำเนินการและจะอยู่ในคิวพร้อมจนกว่ากระบวนการที่มีลำดับความสำคัญสูงจะใช้รอบ CPU ด้วยวิธีนี้แต่ละกระบวนการในคิวที่พร้อมรับเวลาในการรัน CPU มันทำให้การกำหนดเวลายึดเอาเสียได้ แต่เพิ่มค่าใช้จ่ายในการเปลี่ยนกระบวนการจากสถานะการทำงานไปเป็นสถานะพร้อมและ vise-verse
อัลกอริธึมที่ใช้กับการกำหนดตารางเวลาไว้ล่วงหน้าคือ Round Robin งานที่สั้นที่สุดก่อน (SJF) และการจัดตารางเวลาลำดับความสำคัญอาจหรืออาจไม่ได้มาภายใต้การจัดตารางการยึดเอาเสียก่อน
ให้เรานำตัวอย่างของ Preemptive Scheduling มาดูในภาพด้านล่าง เรามีสี่กระบวนการ P0, P1, P2, P3 P2 จะมาถึงในเวลา 0 ดังนั้น CPU จะถูกจัดสรรให้กับกระบวนการ P2 เนื่องจากไม่มีกระบวนการอื่นในคิว ในขณะเดียวกัน P2 กำลังดำเนินการ P3 มาถึงเวลา 1 ตอนนี้เวลาที่เหลืออยู่สำหรับกระบวนการ P2 (5 มิลลิวินาที) ซึ่งมากกว่าเวลาที่กำหนดโดย P3 (4 มิลลิวินาที) ดังนั้น CPU จะถูกจัดสรรให้กับโปรเซสเซอร์ P3
ความหมายของการจัดตารางเวลาที่ไม่ต้องเสียภาษี
Non-preemptive Scheduling คือสิ่งที่สามารถนำไปใช้ในสถานการณ์ที่เมื่อกระบวนการ สิ้นสุดลง หรือกระบวนการเปลี่ยนจากการ ทำงาน เป็น สถานะรอ ใน Non-Preemptive Scheduling เมื่อทรัพยากร (CPU) ถูกจัดสรรให้กับกระบวนการกระบวนการจะเก็บ CPU ไว้จนกว่าจะถูกยกเลิกหรือถึงสถานะรอ
ซึ่งแตกต่างจากการตั้งเวลาแบบ preemptive การจัดตารางเวลาแบบไม่ยึดเอาเสียก่อนจะไม่ขัดขวางกระบวนการที่ใช้งาน CPU ในระหว่างการดำเนินการ แต่จะรอให้กระบวนการทำให้ซีพียูระเบิดสมบูรณ์และสามารถจัดสรร CPU ให้กับกระบวนการอื่นได้
ในการกำหนดตารางเวลาที่ไม่ต้องห้ามหากกระบวนการที่มี CPU burst time ที่ยาวนานกำลังดำเนินการกระบวนการอื่นจะต้องรอเป็นเวลานานซึ่งจะเพิ่มเวลารอเฉลี่ยของกระบวนการในคิวที่พร้อมใช้งาน อย่างไรก็ตามการจัดตารางเวลาที่ไม่ได้รับการยกเว้นไม่มีค่าใช้จ่ายใด ๆ ในการเปลี่ยนกระบวนการจากคิวที่พร้อมเป็นซีพียู แต่มันทำให้การกำหนดเวลาที่เข้มงวดเนื่องจากกระบวนการในการดำเนินการไม่ได้ถูกจองล่วงหน้าสำหรับกระบวนการที่มีลำดับความสำคัญสูง
ความแตกต่างที่สำคัญระหว่างการตั้งเวลาแบบ Preemptive และ Non-Preemptive
- ความแตกต่างพื้นฐานระหว่างการกำหนดเวลาแบบ preemptive และ non-preemptive คือในการกำหนดเวลาแบบ preemptive CPU จะถูกจัดสรรให้กับกระบวนการสำหรับช่วงเวลาที่ จำกัด ขณะที่อยู่ในการกำหนดตารางเวลาที่ไม่ต้องเสียค่าสิทธิ CPU จะถูกจัดสรรให้กับกระบวนการจนกว่าจะ สิ้นสุด หรือเปลี่ยนเป็น สถานะรอ
- กระบวนการดำเนินการในการกำหนดเวลาแบบ preemptive ถูก ขัดจังหวะ ในช่วงกลางของการดำเนินการในขณะที่กระบวนการดำเนินการในการกำหนดเวลาแบบ ไม่ ยึดเอาเสียก่อนจะ ไม่ถูกขัดจังหวะ ในช่วงกลางของการดำเนินการ
- Preemptive Scheduling มี ค่าใช้จ่าย ในการเปลี่ยนกระบวนการจากสถานะพร้อมเป็นสถานะทำงาน, vise-verse และการบำรุงรักษาคิวที่พร้อมใช้งาน ในทางตรงกันข้ามการกำหนดเวลาที่ ไม่ต้องเสียภาษีไม่มีค่าใช้จ่าย ในการเปลี่ยนกระบวนการจากสถานะการทำงานเป็นสถานะพร้อม
- ในการกำหนดเวลาไว้ล่วงหน้าหากกระบวนการที่มีลำดับความสำคัญสูงมาถึงคิวที่พร้อมใช้งานบ่อยกระบวนการที่มีลำดับความสำคัญต่ำจะต้องรอนานและอาจต้องอดอาหาร ในทางตรงข้ามในการกำหนดตารางเวลาที่ไม่ต้องเสียภาษีหาก CPU ถูกจัดสรรให้กับกระบวนการที่มีเวลาในการถ่ายโอนข้อมูลที่มากขึ้น
- การกำหนดเวลาไว้ล่วงหน้าค่อนข้าง ยืดหยุ่น เนื่องจากกระบวนการที่สำคัญได้รับอนุญาตให้เข้าถึง CPU เมื่อมาถึงคิวที่พร้อมไม่ว่ากระบวนการใดที่กำลังดำเนินการอยู่ในปัจจุบัน การกำหนดตารางเวลาที่ไม่ต้องเสียภาษีนั้นจะ เข้มงวด ราวกับว่ากระบวนการที่สำคัญเข้าสู่คิวที่พร้อมใช้งานกระบวนการที่ใช้ CPU จะไม่ถูกรบกวน
- Preemptive Scheduling นั้นเชื่อมโยงกับต้นทุนเนื่องจากต้องรักษาความถูกต้องของข้อมูลที่ใช้ร่วมกันซึ่งไม่ใช่กรณีที่มีการกำหนดตารางเวลาที่ห้ามไว้ล่วงหน้า
สรุป:
ไม่ใช่ว่าการกำหนดตารางเวลาแบบ preemptive ดีกว่าการกำหนดเวลาแบบไม่มีการจองล่วงหน้าหรือ vise-verse ทั้งหมดขึ้นอยู่กับวิธีการจัดตารางเวลาลดเวลาการรอเฉลี่ยของกระบวนการให้น้อยที่สุดและเพิ่มการใช้ประโยชน์ CPU ให้สูงสุด