Scheduling là một trong những cơ chế quan trọng nhất trong hệ điều hành, quyết định cách CPU được phân bổ cho các tiến trình. Hiểu rõ scheduling giúp nắm được cách hệ thống đạt hiệu suất cao và đảm bảo công bằng giữa các chương trình.

Scheduling là gì?

Scheduling, hay lập lịch CPU, là quá trình chọn lựa tiến trình tiếp theo để thực thi trên CPU. Khi có nhiều tiến trình cùng chờ, hệ điều hành phải quyết định thứ tự và thời gian chạy của từng tiến trình.

Các mục tiêu tối ưu

Một thuật toán lập lịch thường hướng tới các mục tiêu sau:

  • Thời gian chờ thấp: giảm thời gian tiến trình phải đợi.
  • Thời gian đáp ứng nhanh: cải thiện trải nghiệm người dùng.
  • Throughput cao: tăng số lượng tiến trình hoàn thành.
  • Công bằng: đảm bảo mọi tiến trình được phục vụ hợp lý.

Cách hoạt động

Các tiến trình được đặt trong các hàng đợi khác nhau như hàng đợi sẵn sàng hoặc hàng đợi chờ. Scheduling sẽ chọn tiến trình từ hàng đợi sẵn sàng để thực thi.

Việc chuyển đổi giữa các tiến trình gọi là context switch, có chi phí nhất định.

Các thuật toán phổ biến

  • FCFS: tiến trình đến trước chạy trước.
  • SJF: chọn tiến trình có thời gian chạy ngắn nhất.
  • Round Robin: chia thời gian CPU thành các quantum.
  • Priority: ưu tiên tiến trình quan trọng.

Lập lịch nâng cao

Các hệ thống hiện đại sử dụng thuật toán đa cấp như Multilevel Feedback Queue để thích nghi với hành vi tiến trình, kết hợp nhiều chiến lược khác nhau.

Vấn đề thực tế

Các vấn đề như starvation (tiến trình bị bỏ đói) hoặc overhead do context switch là những thách thức lớn. Các kỹ thuật như aging được sử dụng để giảm thiểu các vấn đề này.

Kết luận

Scheduling là trái tim của hệ điều hành đa nhiệm. Việc lựa chọn thuật toán phù hợp ảnh hưởng trực tiếp đến hiệu năng và trải nghiệm người dùng.