Preemptive Scheduling เป็นขั้นตอนการตั้งเวลา CPU ที่ทำงานโดยแยกการจัดสรรเวลาของ CPU เป็นการโต้ตอบที่กำหนด
ในขณะที่ Non-Preemptive Scheduling เป็นกระบวนการจัดตารางเวลาของ CPU ซึ่งวงจรจะใช้สินทรัพย์ (เวลาของ CPU) และคงไว้จนกว่าการโต้ตอบจะสิ้นสุดลงหรือถูกผลักไปยังการถือครองทางตอนเหนือ
มีค่าใช้จ่ายที่เกี่ยวข้องกับกระบวนการ Preemptive ในขณะที่อยู่ในกระบวนการ Non-Preemptive จะไม่มีค่าใช้จ่าย
ประเด็นที่สำคัญ
- การจัดกำหนดการล่วงหน้าช่วยให้ระบบปฏิบัติการบังคับขัดจังหวะกระบวนการที่กำลังทำงานอยู่ได้ ในขณะที่การจัดกำหนดการแบบไม่ยึดถือล่วงหน้าต้องการให้กระบวนการละทิ้งการควบคุมโดยสมัครใจ
- การจัดกำหนดการล่วงหน้าให้เวลาตอบสนองและการใช้ทรัพยากรที่ดีกว่าการจัดกำหนดการที่ไม่ยึดถือล่วงหน้า
- การจัดกำหนดการแบบไม่ยึดถือล่วงหน้านั้นง่ายกว่า แต่อาจส่งผลให้ประสิทธิภาพของระบบมีประสิทธิภาพน้อยกว่าการจัดกำหนดการแบบยึดเสียก่อน
การกำหนดเวลาล่วงหน้าเทียบกับการไม่ยึดถือล่วงหน้า
การจัดกำหนดการล่วงหน้าช่วยให้งานที่มีลำดับความสำคัญสูงกว่าสามารถขัดจังหวะงานที่มีลำดับความสำคัญต่ำกว่าได้ ในขณะที่การจัดกำหนดการที่ไม่ยึดถือล่วงหน้าจะไม่ขัดจังหวะ ซึ่งใช้ในระบบเรียลไทม์ ในขณะที่การจัดกำหนดการแบบไม่ยึดล่วงหน้าจะง่ายกว่าและคาดเดาได้ง่ายกว่า แต่อาจส่งผลให้เวลารอนานขึ้นสำหรับงานบางอย่าง
การจัดกำหนดการล่วงหน้านั้นเป็นกลยุทธ์ที่จัดสรรการดำเนินงานตามความต้องการของตน
มันถูกใช้เมื่อก วงจร เปลี่ยนจากสถานะที่กำลังรันเป็นสถานะที่เตรียมไว้ หรือการคงไว้จากสถานะที่เตรียมไว้ ในการจัดกำหนดการล่วงหน้า การดำเนินการสามารถถูกขัดจังหวะได้อย่างง่ายดาย
ใน Non-Preemptive Scheduling CPU ถูกกำหนดให้กับการโต้ตอบเฉพาะ การดำเนินการที่กำหนดให้กับ CPU จะต้องเสร็จสิ้นจึงจะไปยังการดำเนินการถัดไปได้
เทคนิคเดียวที่สามารถนำไปใช้กับขั้นตอนฮาร์ดแวร์ต่างๆ การจัดกำหนดการแบบไม่ยึดล่วงหน้าเกิดขึ้นเมื่อผู้ปฏิบัติงานเข้าสู่สถานะสแตนด์บายหรือสิ้นสุด
ตารางเปรียบเทียบ
พารามิเตอร์ของการเปรียบเทียบ | การจัดกำหนดการชั่วคราว | การจัดกำหนดการแบบไม่ยึดเอาเสียก่อน |
---|---|---|
ความยืดหยุ่น | มันมีความยืดหยุ่น | มันไม่ยืดหยุ่น |
ราคา | มันเกี่ยวข้องกับต้นทุน | มันไม่เกี่ยวข้องกับต้นทุน |
ขั้นตอนวิธี | มีอัลกอริธึมการสลับค่าโสหุ้ย | ไม่มีอัลกอริธึมดังกล่าวสำหรับการสลับค่าโสหุ้ย |
หยุดชะงัก | กระบวนการนี้สามารถถูกขัดจังหวะได้อย่างง่ายดาย | กระบวนการนี้ไม่สามารถขัดจังหวะได้ |
การใช้งาน CPU | มีประสิทธิภาพมากกว่า | มีประสิทธิภาพน้อยกว่า |
การจัดกำหนดการล่วงหน้าคืออะไร?
เป็นหน้าที่ของตัวกำหนดเวลา CPU ในการกระจายวงจรไปยัง CPU ณ จุดใดก็ตามที่ CPU อยู่ในสถานะไม่ทำงาน ตัวกำหนดเวลา CPU เลือกรอบจากบรรทัดที่เตรียมไว้และกำหนดการโต้ตอบให้กับ CPU
ในการวางแผนประเภทนี้ สินทรัพย์ (CPU Cycle) ได้รับการกำหนดให้ดำเนินการตามระยะเวลาที่จำกัด การดำเนินการสามารถถูกขัดจังหวะได้เมื่อมีการดำเนินการหรือดำเนินการ
ในการวางแผนล่วงหน้า ในกรณีที่วงจรที่มีความต้องการสูงปรากฏขึ้นในรายการที่เตรียมไว้ การดำเนินการที่มีความต้องการต่ำจะถูกหยุด และให้เสร็จสิ้นการดำเนินการที่มีความต้องการสูง
สมมติว่าหากวงจรที่มีความต้องการที่สำคัญที่สุดปรากฏขึ้น การดำเนินการนี้จะไม่หยุดจนกว่าการดำเนินการทั้งหมดจะเสร็จสิ้น
แทนที่จะทำอะไร มันจะขัดขวางวงจรและทำให้กระบวนการคงที่ และจะเริ่มการดำเนินการสำหรับกระบวนการนั้นซึ่งมีลำดับความสำคัญสูง
ซึ่งจะทำให้วงจรเสร็จสิ้นซึ่งมีลำดับความสำคัญสูงกว่ารอบอื่น และเมื่อการดำเนินการสิ้นสุดลง ก็จะเริ่มรอบถัดไป
ดังนั้นตามบรรทัดเหล่านี้ ทุกการดำเนินการที่อยู่ในบรรทัดที่เข้าถึงได้จะได้รับโอกาสที่เหมาะสมในการรัน
การจัดกำหนดการแบบไม่ยึดล่วงหน้าคืออะไร?
การดำเนินการที่เกิดขึ้นเมื่อกระบวนการสิ้นสุดหรือเปลี่ยนแปลงจากการดำเนินการต่อเนื่องเป็นการรอสถานะการทำงานของ CPU ประเภทนี้เรียกว่า Non-Preemptive Scheduling
การจัดกำหนดการชนิดนี้จะถูกนำไปใช้เมื่อการดำเนินงานเสร็จสิ้นจากสถานะหนึ่งไปยังอีกสถานะหนึ่ง
ในกระบวนการประเภทนี้จะไม่มีฟังก์ชันขัดขวางการดำเนินการเหมือนแบบ Preemptive ดังนั้นสิ่งที่เกิดขึ้นคือเมื่อกระบวนการเริ่มต้นขึ้นก็จะเสร็จสิ้นโดยไม่มีการหยุดชะงักใดๆ
เนื่องจากใน Non-Preemptive Scheduling นั้นไม่มีฟังก์ชันที่จะขัดจังหวะการดำเนินการในระหว่างนั้น เนื่องจากต้องรอเมื่อการดำเนินการแรกเสร็จสิ้น
ทุกสิ่งที่พิจารณาแล้วจะคงอยู่จนกว่าวงจรจะสิ้นสุดการดำเนินการ และเมื่อสิ้นสุดแล้ว ก็จะถูกโอนไปยังการดำเนินการอื่น
กลยุทธ์เดียวที่สามารถใช้ได้กับขั้นตอนฮาร์ดแวร์ที่แตกต่างกัน นั่นเป็นเพราะว่าต้องการอุปกรณ์เฉพาะ เช่น การจัดตารางเวลาข้อควรระวัง
ใน Non-Preemptive Scheduling ไม่มีเช่นนั้น ขั้นตอนวิธี สำหรับการสลับการดำเนินการโอเวอร์เฮดเนื่องจาก CPU ต้องรอจนกว่าจะถ่ายโอนการดำเนินการครั้งต่อไป
เนื่องจากไม่สามารถขัดจังหวะได้ จึงทำให้ Non-preemptive Scheduling มีความยืดหยุ่นเมื่อเปรียบเทียบกับ Preemptive Scheduling
ความแตกต่างหลักระหว่างการกำหนดเวลาแบบยึดถือและไม่ยึดถือ ในระบบปฏิบัติการ
- ในการจัดกำหนดการล่วงหน้า กระบวนการสามารถถูกขัดจังหวะได้อย่างง่ายดาย ในขณะที่ในการจัดกำหนดการแบบไม่ยึดล่วงหน้า วงจรที่กำลังดำเนินอยู่จะต้องเสร็จสิ้นก่อนจึงจะย้ายไปยังรอบถัดไป
- ในการจัดกำหนดการล่วงหน้า กระบวนการมีค่าใช้จ่ายเนื่องจากต้องจัดกำหนดการการดำเนินงานหลายรายการ ในขณะที่การจัดกำหนดการแบบไม่ยึดถือล่วงหน้า ไม่มีสิ่งใดเช่นนั้น เนื่องจากไม่มีฟังก์ชันใดๆ สำหรับการหยุดชะงักระหว่างกระบวนการ
- การจัดกำหนดการล่วงหน้ามีความยืดหยุ่น (กล่าวคือ สามารถเปลี่ยนแปลงได้ง่าย) โดยธรรมชาติ เมื่อเปรียบเทียบกับการจัดกำหนดการแบบไม่ยึดถือล่วงหน้า ซึ่งไม่ได้เป็นเช่นนั้น
- ในการจัดกำหนดการล่วงหน้า กระบวนการที่มีลำดับความสำคัญสูงกว่าจะได้รับก่อน ในขณะที่ในกรณีของการจัดกำหนดการแบบไม่ยึดถือล่วงหน้า การดำเนินการที่กำลังดำเนินอยู่จะต้องเสร็จสิ้นเพื่อย้ายไปยังขั้นตอนถัดไป
- Preemptive Scheduling มีความคุ้มค่าในการดำเนินการดำเนินการที่คุณต้องจ่าย ในขณะที่ในกรณีของ Non-Preemptive Scheduling จะไม่มีต้นทุนใดๆ ทั้งสิ้น
- https://hal.inria.fr/inria-00073732/
- http://clweb.csa.iisc.ernet.in/sarojini/rts/periodid-sporadic.pdf
อัพเดตล่าสุด : 13 กรกฎาคม 2023
Sandeep Bhandari สำเร็จการศึกษาระดับปริญญาตรี สาขาวิศวกรรมคอมพิวเตอร์จาก Thapar University (2006) เขามีประสบการณ์ 20 ปีในสาขาเทคโนโลยี เขามีความสนใจในด้านเทคนิคต่างๆ รวมถึงระบบฐานข้อมูล เครือข่ายคอมพิวเตอร์ และการเขียนโปรแกรม คุณสามารถอ่านเพิ่มเติมเกี่ยวกับเขาได้จากเขา หน้าไบโอ.