อัลกอริทึมการกำหนดเวลา Round Robin พร้อมตัวอย่าง

⚡ สรุปอย่างชาญฉลาด

การจัดตารางเวลาแบบ Round-Robin เป็นอัลกอริธึม CPU แบบ preemptive ที่เก่าแก่และง่ายที่สุด โดยแต่ละกระบวนการที่พร้อมใช้งานจะทำงานในช่วงเวลาที่กำหนดไว้ในคิวแบบวนรอบ ซึ่งช่วยให้มั่นใจได้ว่าการทำงานแบบมัลติทาสก์จะเป็นไปอย่างยุติธรรมและปราศจากปัญหาการรอคอย

  • 🔄 ความหมาย: แต่ละงานที่พร้อมทำงานจะถูกประมวลผลตามลำดับในช่วงเวลาที่กำหนดไว้
  • ⏱️ ควอนตัมเวลา: ซีพียูจะสลับกระบวนการทำงานหลังจากช่วงเวลาคงที่ ซึ่งเรียกว่าช่วงเวลาควอนตัม
  • 🇧🇷 ความเป็นธรรม: ทุกกระบวนการจะได้รับเวลาใช้งาน CPU อย่างเท่าเทียมกัน ป้องกันปัญหาการขาดแคลนทรัพยากร
  • 🧮 การป้องกันล่วงหน้า: กระบวนการที่ถูกขัดจังหวะจะย้ายไปอยู่ท้ายคิว
  • ข้อดี: การจัดสรรที่เป็นธรรม ไม่มีผลกระทบจากขบวนรถ และเวลาตอบสนองที่คาดการณ์ได้
  • ⚠️ ข้อเสีย: ประสิทธิภาพขึ้นอยู่กับช่วงเวลา และเพิ่มภาระงานจากการสลับบริบท

อัลกอริทึมการกำหนดเวลา Round Robin

Round-Robin Scheduling คืออะไร?

ชื่อของอัลกอริธึมนี้มาจากหลักการแบบ Round-robin ซึ่งแต่ละคนจะได้รับส่วนแบ่งเท่ากันในบางสิ่งบางอย่างตามลำดับ เป็นอัลกอริธึมการตั้งเวลาที่เก่าแก่ที่สุดและง่ายที่สุด ซึ่งส่วนใหญ่ใช้สำหรับการทำงานหลายอย่างพร้อมกัน

ในการจัดตารางงานแบบ Round-robin งานที่พร้อมทำงานแต่ละงานจะทำงานทีละงานในคิวแบบวนรอบในช่วงเวลาที่จำกัด อัลกอริทึมนี้ยังช่วยให้การทำงานของกระบวนการต่างๆ ปราศจากปัญหาการรอคอย (starvation) อีกด้วย

ลักษณะของการจัดตารางเวลาแบบ Round-Robin

ต่อไปนี้เป็นคุณลักษณะที่สำคัญของ Round-Robin Scheduling:

  • Round robin เป็นอัลกอริทึมแบบตัดหน้า (pre-emptive algorithm)
  • ซีพียูจะเปลี่ยนไปยังกระบวนการถัดไปหลังจากช่วงเวลาที่กำหนดไว้ ซึ่งเรียกว่าช่วงเวลาควอนตัม/ช่วงเวลาแบ่งส่วน (time quantum/time slice)
  • กระบวนการที่ถูกจองล่วงหน้าจะถูกเพิ่มไปยังจุดสิ้นสุดของคิว
  • Round robin เป็นโมเดลแบบผสมผสานที่ทำงานโดยอาศัยสัญญาณนาฬิกา
  • ช่วงเวลาที่ใช้ในการประมวลผลควรมีค่าต่ำสุด ซึ่งเป็นค่าที่กำหนดไว้สำหรับงานเฉพาะที่ต้องประมวลผล อย่างไรก็ตาม ค่านี้อาจแตกต่างกันไปในแต่ละระบบปฏิบัติการ
  • เป็นอัลกอริทึมแบบเรียลไทม์ที่ตอบสนองต่อเหตุการณ์ภายในระยะเวลาที่กำหนด
  • อัลกอริทึมแบบ Round Robin เป็นหนึ่งในอัลกอริทึมที่เก่าแก่ที่สุด ยุติธรรมที่สุด และง่ายที่สุด
  • เป็นวิธีการจัดตารางเวลาที่ใช้กันอย่างแพร่หลายในระบบปฏิบัติการแบบดั้งเดิม

ตัวอย่างการจัดกำหนดการแบบ Round-robin

พิจารณาสามกระบวนการต่อไปนี้:

คิวกระบวนการ ระเบิดเวลา
P1 4
P2 3
P3 5

การจัดตารางเวลาแบบ Round-robin

ขั้นตอน 1) การดำเนินการเริ่มต้นด้วยกระบวนการ P1 ซึ่งมีเวลาระเบิด 4 ในที่นี้ ทุกกระบวนการจะดำเนินการเป็นเวลา 2 วินาที P2 และ P3 ยังอยู่ในคิวรอ

การจัดตารางเวลาแบบ Round-robin

ขั้นตอน 2) เมื่อเวลา = 2, P1 จะถูกเพิ่มเข้าไปที่ท้ายคิว และ P2 จะเริ่มทำงาน

การจัดตารางเวลาแบบ Round-robin

ขั้นตอน 3) เมื่อเวลา = 4, P2 ถูกขัดจังหวะและถูกเพิ่มเข้าไปที่ท้ายคิว P3 เริ่มทำงาน

การจัดตารางเวลาแบบ Round-robin

ขั้นตอน 4) เมื่อเวลา = 6, P3 ถูกขัดจังหวะและถูกเพิ่มเข้าไปที่ท้ายคิว P1 เริ่มทำงาน

การจัดตารางเวลาแบบ Round-robin

ขั้นตอน 5) เมื่อเวลา t = 8, P1 มีเวลาประมวลผลสูงสุด 4 หน่วย การประมวลผลเสร็จสิ้นแล้ว P2 เริ่มการประมวลผล

การจัดตารางเวลาแบบ Round-robin

ขั้นตอน 6) P2 มีระยะเวลาการทำงานสูงสุด 3 หน่วย มันได้ทำงานไปแล้ว 2 ช่วงเวลา ที่เวลา = 9 การทำงาน P2 เสร็จสิ้น จากนั้น P3 จะเริ่มทำงานจนกว่าจะเสร็จสิ้น

การจัดตารางเวลาแบบ Round-robin

ขั้นตอน 7) เรามาคำนวณเวลาการรอเฉลี่ยสำหรับตัวอย่างข้างต้นกัน

Wait time
P1 = 0 + 4 = 4
P2 = 2 + 4 = 6
P3 = 4 + 3 = 7

ข้อดีของการจัดตารางงานแบบวนรอบ (Round-robin Scheduling)

ต่อไปนี้คือข้อดี/ประโยชน์ของวิธีการจัดตารางงานแบบหมุนเวียน:

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

ข้อเสียของการจัดตารางเวลาแบบ Round-robin

ต่อไปนี้คือข้อเสียของการใช้การจัดตารางเวลาแบบ Round-robin:

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

เวลาแฝงกรณีที่เลวร้ายที่สุด

คำนี้ใช้กับเวลาสูงสุดที่ใช้ในการปฏิบัติงานทั้งหมด

  • dt = หมายถึงเวลาที่ตรวจพบเมื่อมีการเพิ่มงานลงในรายการ
  • st = หมายถึงเวลาในการเปลี่ยนจากงานหนึ่งไปอีกงานหนึ่ง
  • et = หมายถึงเวลาในการดำเนินการของงาน

สูตร:

Tworst = {(dti+ sti + eti ), + (dti+ sti + eti )2 +...+ (dti+ sti + eti )N., + (dti+ sti + eti  + eti) N} + tISR
tISR = sum of all execution times

คำถามที่พบบ่อย

เวลาควอนตัม หรือช่วงเวลาการประมวลผล คือเวลา CPU ที่กำหนดไว้สำหรับแต่ละกระบวนการก่อนที่จะถูกขัดจังหวะ หากมากเกินไปจะทำงานเหมือนแบบมาก่อนได้ก่อน (FCFS) หากน้อยเกินไปจะทำให้เกิดภาระการสลับบริบทที่สูงขึ้น

FCFS จะประมวลผลแต่ละกระบวนการจนเสร็จสมบูรณ์ตามลำดับการมาถึงและไม่สามารถแทรกแซงได้ ในขณะที่ Round Robin สามารถแทรกแซงได้ โดยจะจัดสรรเวลาคงที่ให้กับแต่ละกระบวนการและวนไปตามคิว ซึ่งจะช่วยปรับปรุงเวลาตอบสนองและป้องกันไม่ให้งานที่ใช้เวลานานไปขัดขวางงานอื่น

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

ปัญญาประดิษฐ์ (AI) และการเรียนรู้ของเครื่อง (Machine Learning) สามารถคาดการณ์พฤติกรรมของกระบวนการและรูปแบบภาระงานเพื่อปรับแต่งการตัดสินใจในการจัดตารางเวลาแบบเรียลไทม์ แทนที่จะใช้นโยบายคงที่ ระบบสามารถปรับลำดับความสำคัญและช่วงเวลาได้อย่างไดนามิก ซึ่งจะช่วยเพิ่มประสิทธิภาพการใช้งาน CPU ปริมาณงาน และเวลาตอบสนอง

ใช่แล้ว โมเดล AI สามารถวิเคราะห์ช่วงเวลาการประมวลผลในอดีตและภาระงานของระบบเพื่อแนะนำช่วงเวลาการประมวลผลที่เหมาะสมที่สุด และปรับเปลี่ยนตามการเปลี่ยนแปลงของสภาวะต่างๆ ซึ่งจะช่วยปรับสมดุลระหว่างค่าใช้จ่ายในการสลับบริบทกับเวลาตอบสนองได้ดีกว่าการใช้ค่าคงที่เพียงค่าเดียว

สรุปโพสต์นี้ด้วย: