การจัดตารางเวลาในระบบคอมพิวเตอร์ หลักการและประเภทของ 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 เอง