Round Robin Scheduling ในการเขียนโปรแกรม C



บทความนี้จะให้ความรู้โดยละเอียดและครอบคลุมเกี่ยวกับวิธีใช้ Round Robin Scheduling ในการเขียนโปรแกรม C

ในบทความนี้เราจะเรียนรู้เกี่ยวกับอัลกอริทึมการตั้งเวลาที่เรียกว่าอัลกอริธึมการตั้งเวลาแบบ round-robin, round-robin คืออะไร? เขียนโปรแกรมยังไง? เป็นต้นให้เราเริ่ม

Round Robin Scheduling คืออะไร?

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





การตั้งเวลา Round Robin

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



ROUND ROBIN SCHEDULING ALGORITHM

  • อันดับแรกเรามีคิวที่จัดเรียงกระบวนการตามลำดับมาก่อนได้ก่อน
  • ค่าควอนตัมถูกจัดสรรเพื่อดำเนินการแต่ละกระบวนการ
  • กระบวนการแรกจะดำเนินการจนกว่าจะสิ้นสุดค่าควอนตัม หลังจากนี้การขัดจังหวะจะถูกสร้างขึ้นและสถานะจะถูกบันทึก
  • จากนั้นซีพียูจะย้ายไปยังกระบวนการถัดไปและทำตามวิธีเดียวกัน
  • ขั้นตอนเดียวกันจะทำซ้ำจนกว่ากระบวนการทั้งหมดจะสิ้นสุดลง

พิจารณารหัสตัวอย่าง

#include int main () {int i, limit, total = 0, x, counter = 0, time_quantum int wait_time = 0, turnaround_time = 0, arrival_time [10], burst_time [10], temp [10] float average_wait_time, average_turnaround_time printf ('nEnter จำนวนกระบวนการทั้งหมด: t') scanf ('% d', & ขีด จำกัด ) x = ขีด จำกัด สำหรับ (i = 0 i0) {temp [i] = temp [i] - time_quantum total = total + time_quantum} if (temp [i] == 0 && counter == 1) {x-- printf ('nProcess [% d] tt% dtt % dttt% d ', i + 1, burst_time [i], total - arrival_time [i], total - arrival_time [i] - burst_time [i]) wait_time = wait_time + total - arrival_time [i] - burst_time [i] turnaround_time = turnaround_time + total - arrival_time [i] counter = 0} if (i == limit - 1) {i = 0} else if (arrival_time [i + 1]<= total) { i++ } else { i = 0 } } average_wait_time = wait_time * 1.0 / limit average_turnaround_time = turnaround_time * 1.0 / limit printf('nnAverage Waiting Time:t%f', average_wait_time) printf('nAvg Turnaround Time:t%fn', average_turnaround_time) return 0 }

เอาท์พุท:

คำอธิบาย:

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

ส่วนหลักในที่นี้คือการคำนวณเวลาหมุนเวียนและเวลารอคอย เวลาหมุนเวียนคำนวณโดยการบวกเวลาทั้งหมดที่ใช้และลบเวลาที่มาถึง

รายการที่เชื่อมโยงในโปรแกรม c

เวลาในการรอจะคำนวณโดยการลบเวลาที่มาถึงและเวลาต่อเนื่องออกจากทั้งหมดและบวก t0 เวลารอ นี่คือวิธีการจัดกำหนดการแบบ Round-robin



ข้อดี:

  • ค่าใช้จ่ายต่ำสำหรับการตัดสินใจ
  • ต่างจากอัลกอริทึมอื่น ๆ คือให้ความสำคัญเท่าเทียมกันกับกระบวนการทั้งหมด
  • ความอดอยากไม่ค่อยเกิดขึ้นในกระบวนการนี้

ข้อเสีย:

  • ประสิทธิภาพของระบบจะลดลงหากค่าควอนตัมต่ำเนื่องจากการสลับเกิดขึ้นบ่อยครั้ง
  • ระบบอาจไม่ตอบสนองหากค่าควอนตัมสูง

ด้วยเหตุนี้เราจึงมาถึงจุดสิ้นสุดของบทความนี้

ฉันหวังว่าคุณจะพบข้อมูลนี้และเป็นประโยชน์โปรดติดตามบทช่วยสอนเพิ่มเติมในหัวข้อที่คล้ายกัน คุณสามารถตรวจสอบโปรแกรมการฝึกอบรมของเราได้o รับความรู้เชิงลึกเกี่ยวกับ jQuery พร้อมกับแอพพลิเคชั่นต่างๆที่คุณทำได้ สำหรับการฝึกอบรมออนไลน์สดพร้อมการสนับสนุนตลอด 24 ชั่วโมงทุกวันและการเข้าถึงตลอดชีวิตติดตั้งโค้ดด้านบนด้วยสตริงและการปรับเปลี่ยนที่แตกต่างกัน ตอนนี้เรามีความเข้าใจเป็นอย่างดีเกี่ยวกับแนวคิดหลักทั้งหมดที่เกี่ยวข้องกับตัวชี้

มีคำถามสำหรับเรา? พูดถึงพวกเขาในส่วนความคิดเห็นของบล็อกนี้แล้วเราจะติดต่อกลับไป