แนะนำ, 2022

ตัวเลือกของบรรณาธิการ

ความแตกต่างระหว่างการยึดเอาเสียก่อนและไม่กำหนดการในระบบปฏิบัติการ

เป็นความรับผิดชอบของตัวกำหนดตารางเวลาของ CPU ในการจัดสรรกระบวนการให้กับ CPU ทุกครั้งที่ CPU อยู่ในสถานะไม่ได้ใช้งาน ตัวกำหนดตารางเวลา CPU เลือกกระบวนการจากคิวที่พร้อมและจัดสรรกระบวนการให้กับ CPU การจัดกำหนดการที่เกิดขึ้นเมื่อกระบวนการสลับจากสถานะการทำงานเป็นสถานะพร้อมหรือจากสถานะรอเป็นสถานะพร้อมเรียกว่า Preemptive Scheduling ในมือการตั้งเวลาที่เกิดขึ้นเมื่อกระบวนการยุติหรือสลับจากการทำงานเพื่อรอสถานะของการตั้งเวลา CPU ชนิดนี้เรียกว่า Non-Preemptive Scheduling ความแตกต่างพื้นฐานระหว่างการกำหนดเวลาแบบยึดเอาเสียก่อนและไม่ยึดเอาเสียก่อนอยู่ในชื่อของตัวเอง นั่นคือการกำหนดเวลาไว้ล่วงหน้าสามารถจองไว้ล่วงหน้าได้ กระบวนการสามารถกำหนด ในการกำหนดเวลาที่ไม่ต้องเสียภาษีกระบวนการไม่สามารถกำหนดเวลาได้

ให้เราคุยกันถึงความแตกต่างระหว่างทั้งแบบ 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

ในขณะเดียวกัน P3 กำลังดำเนินการกระบวนการ P1 มาถึง ณ เวลาที่ 2 ตอนนี้เวลาที่เหลือสำหรับ P3 (3 มิลลิวินาที) น้อยกว่าเวลาที่กระบวนการ P1 ใช้ (4 มิลลิวินาที) และ P2 (5 มิลลิวินาที) ดังนั้น P3 จึงได้รับอนุญาตให้ดำเนินการต่อ ในขณะที่ P3 กำลังดำเนินการกระบวนการ P0 มาถึงเวลา 3 ตอนนี้เวลาที่เหลือสำหรับ P3 (2 มิลลิวินาที) เท่ากับเวลาที่ P0 ต้องการ (2 มิลลิวินาที) ดังนั้น P3 จะดำเนินต่อไปและหลังจาก P3 ยุติการทำงานของ CPU จะถูกจัดสรรให้กับ P0 เนื่องจากมีระยะเวลาถ่ายต่อเนื่องน้อยกว่าตัวอื่น ๆ หลังจาก P0 ยุติลง CPU จะถูกจัดสรรให้กับ P1 และจากนั้นเป็น P2

ความหมายของการจัดตารางเวลาที่ไม่ต้องเสียภาษี

Non-preemptive Scheduling คือสิ่งที่สามารถนำไปใช้ในสถานการณ์ที่เมื่อกระบวนการ สิ้นสุดลง หรือกระบวนการเปลี่ยนจากการ ทำงาน เป็น สถานะรอ ใน Non-Preemptive Scheduling เมื่อทรัพยากร (CPU) ถูกจัดสรรให้กับกระบวนการกระบวนการจะเก็บ CPU ไว้จนกว่าจะถูกยกเลิกหรือถึงสถานะรอ

ซึ่งแตกต่างจากการตั้งเวลาแบบ preemptive การจัดตารางเวลาแบบไม่ยึดเอาเสียก่อนจะไม่ขัดขวางกระบวนการที่ใช้งาน CPU ในระหว่างการดำเนินการ แต่จะรอให้กระบวนการทำให้ซีพียูระเบิดสมบูรณ์และสามารถจัดสรร CPU ให้กับกระบวนการอื่นได้

ในการกำหนดตารางเวลาที่ไม่ต้องห้ามหากกระบวนการที่มี CPU burst time ที่ยาวนานกำลังดำเนินการกระบวนการอื่นจะต้องรอเป็นเวลานานซึ่งจะเพิ่มเวลารอเฉลี่ยของกระบวนการในคิวที่พร้อมใช้งาน อย่างไรก็ตามการจัดตารางเวลาที่ไม่ได้รับการยกเว้นไม่มีค่าใช้จ่ายใด ๆ ในการเปลี่ยนกระบวนการจากคิวที่พร้อมเป็นซีพียู แต่มันทำให้การกำหนดเวลาที่เข้มงวดเนื่องจากกระบวนการในการดำเนินการไม่ได้ถูกจองล่วงหน้าสำหรับกระบวนการที่มีลำดับความสำคัญสูง

ให้เราแก้ตัวอย่างการตั้งเวลาด้านบนด้วยวิธีที่ไม่ต้องเสียภาษี เมื่อเริ่มต้นกระบวนการ P2 จะมาถึงที่เวลา 0 ดังนั้น CPU จะถูกจัดสรรให้กับกระบวนการ P2 จะใช้เวลา 6 มิลลิวินาทีในการดำเนินการ ในระหว่างกระบวนการทั้งหมดเช่น P0, P1, P3 มาถึงคิวพร้อม แต่ทุกอย่างจะรอจนกว่าโพรเซส P2 จะเสร็จสิ้นเวลาที่ CPU แตก จากนั้นกระบวนการที่มาถึงหลังจาก P2 คือ P3 จะจัดสรรซีพียูจนกว่าจะเสร็จสิ้นตามเวลาที่กำหนด ในทำนองเดียวกัน P1 จะเรียกใช้งานและ CPU จะได้รับในภายหลังเพื่อประมวลผล P0

ความแตกต่างที่สำคัญระหว่างการตั้งเวลาแบบ Preemptive และ Non-Preemptive

  1. ความแตกต่างพื้นฐานระหว่างการกำหนดเวลาแบบ preemptive และ non-preemptive คือในการกำหนดเวลาแบบ preemptive CPU จะถูกจัดสรรให้กับกระบวนการสำหรับช่วงเวลาที่ จำกัด ขณะที่อยู่ในการกำหนดตารางเวลาที่ไม่ต้องเสียค่าสิทธิ CPU จะถูกจัดสรรให้กับกระบวนการจนกว่าจะ สิ้นสุด หรือเปลี่ยนเป็น สถานะรอ
  2. กระบวนการดำเนินการในการกำหนดเวลาแบบ preemptive ถูก ขัดจังหวะ ในช่วงกลางของการดำเนินการในขณะที่กระบวนการดำเนินการในการกำหนดเวลาแบบ ไม่ ยึดเอาเสียก่อนจะ ไม่ถูกขัดจังหวะ ในช่วงกลางของการดำเนินการ
  3. Preemptive Scheduling มี ค่าใช้จ่าย ในการเปลี่ยนกระบวนการจากสถานะพร้อมเป็นสถานะทำงาน, vise-verse และการบำรุงรักษาคิวที่พร้อมใช้งาน ในทางตรงกันข้ามการกำหนดเวลาที่ ไม่ต้องเสียภาษีไม่มีค่าใช้จ่าย ในการเปลี่ยนกระบวนการจากสถานะการทำงานเป็นสถานะพร้อม
  4. ในการกำหนดเวลาไว้ล่วงหน้าหากกระบวนการที่มีลำดับความสำคัญสูงมาถึงคิวที่พร้อมใช้งานบ่อยกระบวนการที่มีลำดับความสำคัญต่ำจะต้องรอนานและอาจต้องอดอาหาร ในทางตรงข้ามในการกำหนดตารางเวลาที่ไม่ต้องเสียภาษีหาก CPU ถูกจัดสรรให้กับกระบวนการที่มีเวลาในการถ่ายโอนข้อมูลที่มากขึ้น
  5. การกำหนดเวลาไว้ล่วงหน้าค่อนข้าง ยืดหยุ่น เนื่องจากกระบวนการที่สำคัญได้รับอนุญาตให้เข้าถึง CPU เมื่อมาถึงคิวที่พร้อมไม่ว่ากระบวนการใดที่กำลังดำเนินการอยู่ในปัจจุบัน การกำหนดตารางเวลาที่ไม่ต้องเสียภาษีนั้นจะ เข้มงวด ราวกับว่ากระบวนการที่สำคัญเข้าสู่คิวที่พร้อมใช้งานกระบวนการที่ใช้ CPU จะไม่ถูกรบกวน
  6. Preemptive Scheduling นั้นเชื่อมโยงกับต้นทุนเนื่องจากต้องรักษาความถูกต้องของข้อมูลที่ใช้ร่วมกันซึ่งไม่ใช่กรณีที่มีการกำหนดตารางเวลาที่ห้ามไว้ล่วงหน้า

สรุป:

ไม่ใช่ว่าการกำหนดตารางเวลาแบบ preemptive ดีกว่าการกำหนดเวลาแบบไม่มีการจองล่วงหน้าหรือ vise-verse ทั้งหมดขึ้นอยู่กับวิธีการจัดตารางเวลาลดเวลาการรอเฉลี่ยของกระบวนการให้น้อยที่สุดและเพิ่มการใช้ประโยชน์ CPU ให้สูงสุด

Top