ความแตกต่างระหว่าง Preemptive และ Non-Preemptive Scheduling ในระบบปฏิบัติการ ความแตกต่างระหว่าง

Anonim

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

งาน

และเป็นงานของ Scheduler เพื่อรันและจัดการงานเหล่านี้เมื่อจำเป็นต้องใช้ตัวจัดกำหนดการเลือกงานที่จะถูกเอาออกและกำหนดให้กับ CPU เพื่อประมวลผลตามข้อตกลง ใช้รูปแบบการตั้งเวลาที่ใช้

Scheduler รู้ว่างานใดมีความสำคัญอย่างไร? Scheduler จำเป็นต้องใช้กระบวนการคัดเลือกที่เป็นธรรมและมีประสิทธิภาพโดยคำนึงถึงตัวแปรบัญชีคำขอประมวลผลแบบไดนามิกและใช้ประโยชน์สูงสุดจากรอบการทำงานของ CPU

งานสามารถอยู่ในสถานะ 2 สถานะในขณะประมวลผล:

ใน

CPU Burst

ที่ CPU กำลังคำนวณการประมวลผลงาน (ช่วงเวลาสำหรับ CPU Burst จะแตกต่างกันไปตามแต่ละงานและ โปรแกรมไปยังโปรแกรม)

  1. ใน เอาท์พุท / เอาต์พุต (I / O) Burst กำลังรอข้อมูลที่จะรับหรือส่งจากระบบ
  2. เมื่อ CPU ไม่ได้ใช้งาน Scheduler จะอ่าน Ready queue และเลือกงานถัดไปที่จะรัน จากนั้นจะเป็น
Dispatcher

ซึ่งจะช่วยให้การควบคุมงานที่เลือกของ CPU นั้นจำเป็นต้องใช้งานได้เร็ว! เวลาที่พนักงาน Dispatcher เรียกว่า Dispatch Latency มีโครงสร้างที่แตกต่างกันและพารามิเตอร์ที่กำหนดเองเพื่อกำหนด Ready คิว รวมทั้งวิธีการต่างๆที่สามารถใช้เพื่อจัดการความซับซ้อนของกระบวนการจัดตารางเวลา โดยทั่วไปจะเกี่ยวกับการเพิ่มประสิทธิภาพและเพิ่มประสิทธิภาพการใช้ CPU, throughput ฯลฯ

Scheduler ต้องตัดสินใจในขั้นตอนใดขั้นตอนหนึ่งดังต่อไปนี้: เมื่องานเปลี่ยนจาก กำลังทำงาน

ไปยัง

รอรัฐ

  1. (ตัวอย่างเช่นกำลังรอในระหว่างการร้องขอ I / O) เมื่องานเปลี่ยนจาก กำลังเรียกใช้ ถึง พร้อม
  2. (ตัวอย่างเช่นการตอบสนองต่อการขัดจังหวะ) เมื่องานเปลี่ยนจาก รอ ถึง พร้อม
  3. (ตัวอย่างเช่นการร้องขอ I / O เสร็จสิ้น) เมื่อ งาน ต้องเลือกงานใหม่ถ้าเกิดขั้นที่ 1 หรือ 4 เพื่อให้แน่ใจว่า CPU ใช้งานได้เต็มที่และในทั้ง 2 และ 3 ขั้นตอนงานสามารถทำงานต่อได้หรือใช้งานใหม่ เลือก หลังจากทำความเข้าใจกับการประมวลผลงานแล้วลองดูรูปแบบการตั้งเวลาสองแบบที่เกี่ยวข้องกับการขัดจังหวะของ CPU
  4. ทั้งสองแบบมีคุณสมบัติคล้ายคลึงกันกับงานสถานะงานลำดับและลำดับความสำคัญ (แบบคงที่หรือแบบไดนามิก): การจัดตารางงานแบบไม่รอช้า

คือเมื่องานทำงานจนกว่าจะหยุดทำงาน (สมัครใจ) หรือเสร็จสิ้น Windows®มี Scheduling Non-Preemptive ถึง Windows 3. x หลังจากนั้นเปลี่ยนเป็น Preemptive จาก Windows 95

Preemptive Scheduling

คือตำแหน่งที่สามารถหยุดงานโดยการขัดจังหวะโดย CPU โดยไม่เหมือนที่ Non-Preemptive ทำงานจนกว่าจะออกการควบคุมของ CPU

  • การจัดตารางงานที่ไม่สามารถป้องกันได้ งานภายในระบบ Non-Preemptive จะทำงานจนกว่าจะเสร็จสมบูรณ์
  • ตัวจัดกำหนดการจะตรวจสอบสถานะของงานทั้งหมดและกำหนดการงานลำดับความสำคัญสูงสุดลำดับถัดไปโดยมีสถานะ พร้อม

ด้วย Non-Preemptive Scheduling เมื่องานมีการกำหนดให้กับ CPU แล้วจะไม่สามารถนำออกไปแม้ว่าภารกิจสั้น ๆ จะต้องรอให้งานอีกต่อไปเสร็จสิ้น

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

รูปแบบการตั้งเวลานี้จะทำให้งานสามารถถูกขัดจังหวะได้ - ตรงกันข้ามกับการจัดตารางงานแบบ Non-Preemptive ที่มีแนวทาง "run-to-completion"

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

งานที่มีลำดับความสำคัญสูงสุดในสถานะ

พร้อม

จะถูกเรียกใช้เพื่อให้สามารถตอบสนองต่อเหตุการณ์แบบเรียลไทม์ได้อย่างรวดเร็ว

ข้อเสียบางประการเกี่ยวกับ Preemptive Scheduling เกี่ยวข้องกับการเพิ่มค่าโสหุ้ยเกี่ยวกับทรัพยากรเมื่อใช้การขัดจังหวะและปัญหาอาจเกิดขึ้นกับการแบ่งปันข้อมูลสองงานเนื่องจากอาจมีการขัดจังหวะระหว่างการอัปเดตโครงสร้างข้อมูลที่ใช้ร่วมกันและอาจส่งผลต่อความสมบูรณ์ของข้อมูล

ในทางกลับกันการปฏิบัติงานเพื่อให้สามารถหยุดงานเพื่อจัดการงานอื่นที่อาจเป็นเรื่องสำคัญ ในสรุป สามารถกำหนดความแปรปรวนและการพึ่งพาได้หลายอย่างในนโยบายต่างๆเช่นใช้ "Round Robin Policy [i]" ที่

ทุกงาน (มีลำดับความสำคัญเท่ากัน) ทำงานเพียงครั้งเดียวและจากนั้น วางไว้ที่ตอนท้ายของคิวสำหรับรอบถัดไป

ระยะเวลาที่สั้นที่สุด

,

ระยะเวลาสั้นสุดที่เหลือ เป็นต้น การวิเคราะห์ข้อมูลย้อนหลังสามารถให้ข้อมูลเกี่ยวกับลักษณะต่างๆเช่นอัตราการทำงานใหม่ ๆ ที่มาถึง CPU และ I / O Bursts ฯลฯ ดังนั้นการกระจายความน่าจะเป็นไปได้จึงสามารถคำนวณลักษณะเวลาในการรอคอยของงาน ผู้ดูแลระบบด้วยข้อมูลที่เกี่ยวข้องเพื่อกำหนดรูปแบบการตั้งเวลา