← กลับไปยังบทความทั้งหมด

การจัดตารางเวลาในระบบคอมพิวเตอร์ หลักการและประเภทของ Scheduler

สรุปใจความสำคัญ

  • การจัดตารางเวลาทำให้คอมพิวเตอร์สามารถทำงานหลายอย่างพร้อมกัน (Multitasking) ได้แม้จะมี CPU เพียงตัวเดียว
  • ตัวจัดตารางเวลาระยะยาวควบคุมระดับของ Multiprogramming โดยการเลือกส่วนผสมของโปรเซส I/O-bound และ CPU-bound
  • กระบวนการ Swapping ที่ดำเนินการโดย Medium-term Scheduler ช่วยจัดการหน่วยความจำหลักเมื่อมีทรัพยากรจำกัด

ในทางคอมพิวเตอร์ การจัดตารางเวลา (Scheduling) คือกระบวนการกำหนดทรัพยากรเพื่อใช้ในการทำงานของงานต่างๆ โดยทรัพยากรเหล่านี้อาจเป็นหน่วยประมวลผล (CPU), ลิงก์เครือข่าย หรือการ์ดขยายต่างๆ ส่วนงานที่ถูกจัดตารางอาจเป็นเธรด (Threads), โปรเซส (Processes) หรือกระแสข้อมูล (Data flows) โดยมีกลไกที่เรียกว่า ตัวจัดตารางเวลา (Scheduler) เป็นผู้ดำเนินการ

เป้าหมายของการจัดตารางเวลา

ตัวจัดตารางเวลามักถูกออกแบบมาเพื่อให้บรรลุเป้าหมายอย่างใดอย่างหนึ่งหรือหลายอย่าง ดังนี้:

  • การเพิ่มประสิทธิภาพการทำงาน (Maximizing Throughput): การทำให้จำนวนงานที่เสร็จสิ้นต่อหน่วยเวลาสูงที่สุด
  • การลดเวลาการรอคอย (Minimizing Wait Time): ลดระยะเวลาตั้งแต่ที่งานพร้อมทำงานจนถึงจุดที่เริ่มประมวลผลครั้งแรก
  • การลดเวลาการตอบสนอง (Minimizing Latency/Response Time): ลดเวลาตั้งแต่ที่งานพร้อมจนถึงเวลาที่ระบบตอบสนองหรือส่งผลลัพธ์แรกให้ผู้ใช้
  • การเพิ่มความยุติธรรม (Maximizing Fairness): การจัดสรรเวลา CPU ให้กับแต่ละโปรเซสอย่างเท่าเทียมกัน หรือตามลำดับความสำคัญและปริมาณงาน

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

ประเภทของตัวจัดตารางเวลาในระบบปฏิบัติการ

ตัวจัดตารางเวลาเป็นโมดูลหนึ่งของระบบปฏิบัติการที่ทำหน้าที่เลือกงานถัดไปที่จะรับเข้าสู่ระบบและเลือกโปรเซสถัดไปที่จะให้ทำงาน โดยทั่วไปแบ่งออกเป็น 3 ประเภทหลัก:

1. ตัวจัดตารางเวลาระยะยาว (Long-term Scheduler)

หรือเรียกว่า Admission Scheduler ทำหน้าที่ตัดสินใจว่างานหรือโปรเซสใดควรจะถูกรับเข้าสู่คิวพร้อม (Ready Queue) ในหน่วยความจำหลัก ซึ่งเป็นตัวกำหนดระดับของการทำงานพร้อมกัน (Degree of Multiprogramming) และจัดการความสมดุลระหว่างโปรเซสที่เน้นการใช้ I/O (I/O-bound) และโปรเซสที่เน้นการใช้ CPU (CPU-bound) เพื่อให้ระบบมีประสิทธิภาพสูงสุด

2. ตัวจัดตารางเวลาระยะกลาง (Medium-term Scheduler)

ทำหน้าที่ย้ายโปรเซสออกจากหน่วยความจำหลักไปยังหน่วยความจำสำรอง (เช่น ฮาร์ดดิสก์) หรือย้ายกลับเข้ามา ซึ่งเรียกว่ากระบวนการ Swapping เพื่อคืนพื้นที่หน่วยความจำหลักให้โปรเซสอื่น โดยอาจเลือกย้ายโปรเซสที่ไม่มีความเคลื่อนไหวเป็นเวลานานหรือโปรเซสที่มีลำดับความสำคัญต่ำออกไปก่อน

3. ตัวจัดตารางเวลาระยะสั้น (Short-term Scheduler)

เป็นตัวจัดตารางเวลาที่ทำงานบ่อยที่สุด โดยทำหน้าที่เลือกโปรเซสจากคิวพร้อมเพื่อนำไปประมวลผลโดย CPU ในทันที

รูปแบบการทำงานของ Process Scheduler

ตัวจัดตารางเวลาโปรเซสสามารถแบ่งออกเป็นสองรูปแบบหลักตามความสามารถในการขัดจังหวะ:

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

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

Scheduler คืออะไร?

Scheduler คือกลไกในระบบปฏิบัติการที่ทำหน้าที่จัดสรรทรัพยากร เช่น CPU หรือเครือข่าย ให้กับงานหรือโปรเซสต่างๆ เพื่อให้ระบบทำงานได้อย่างมีประสิทธิภาพ

ความแตกต่างระหว่าง I/O-bound และ CPU-bound process คืออะไร?

I/O-bound process คือโปรเซสที่ใช้เวลาส่วนใหญ่ไปกับการรอการรับส่งข้อมูล (I/O) ในขณะที่ CPU-bound process คือโปรเซสที่ใช้เวลาส่วนใหญ่ในการคำนวณด้วย CPU

Preemptive และ Cooperative scheduling แตกต่างกันอย่างไร?

Preemptive scheduling สามารถขัดจังหวะและหยุดโปรเซสที่กำลังทำงานอยู่ได้ทันที ในขณะที่ Cooperative scheduling ต้องรอให้โปรเซสทำงานเสร็จหรือสละสิทธิ์การใช้ CPU เอง