Điều phối tiến trình (process scheduling) là một chức năng của hệ điều hành giúp quản lý việc phân bổ các tài nguyên của hệ thống chẳng hạn như CPU, bộ nhớ và các thiết bị nhập xuất để thực thi các tiến trình.

Điều phối tiến trình giúp chuyển đổi các trạng thái (Process States) của tiến trình.

Scheduling Queues

Có ba loại hàng đợi tương ứng với các trạng thái của tiến trình.

  1. Job queue (hay process queue) - lưu trữ tất cả các tiến trình của hệ thống.
  2. Ready queue - lưu các tiến trình đang ở trạng thái ready.
  3. Device queue - lưu các tiến trình đang ở trạng thái blocked.

Types of Scheduling

Có ba loại điều phối tiến trình:

  • Long term (dài hạn): xác định xem tiến trình nào từ job queue được phép vào hệ thống. Mục tiêu chính là để cân bằng giữa các loại công việc, chẳng hạn như tính toán, nhập xuất, … và cho phép triển khai đa chương (Multiprogramming).
  • Medium term (trung hạn): quản lý việc swapping của các tiến trình. Nói cách khác, nó xác định xem tiến trình nào được đưa vào (swap in) hoặc đưa ra khỏi (swap out) bộ nhớ chính.
  • Short term (ngắn hạn): có nhiệm vụ xác định xem tiến trình nào từ ready queue sẽ được thực thi tiếp theo và thời gian sử dụng CPU của tiến trình, còn được gọi là điều phối CPU (CPU Scheduling).

Mỗi loại điều phối sẽ có một scheduler tương ứng.

How Scheduling Works

Mô tả chi tiết các quá trình chuyển đổi:

  • Khi một tiến trình được khởi tạo, nó sẽ có trạng thái là new.
  • Khi tiến trình được thừa nhận bởi long term scheduler, medium term scheduler sẽ nạp nó từ bộ nhớ ngoài lên bộ nhớ chính rồi đặt trạng thái ready cho nó.
  • Khi tiến trình được chọn để thực thi, hệ thống sẽ tiến hành chuyển đổi ngữ cảnh (Context Switch) để nạp ngữ cảnh của tiến trình lên bộ xử lý và đặt trạng thái tiến trình là running. Khi đó, bộ xử lý sẽ bắt đầu thực thi các câu lệnh có trong tiến trình.
  • Nếu tiến trình phải chờ để nhận một tài nguyên nào đó (ví dụ như chờ người dùng nhập dữ liệu hoặc chờ mở một tập tin nào đó), tiến trình sẽ được chuyển sang trạng thái blocked. Cho đến khi tiến trình không phải chờ một tài nguyên nào nữa thì chúng sẽ được chuyển sang trạng thái ready.
  • Khi tiến trình được thực thi xong hoặc bị kết thúc bởi hệ điều hành, nó sẽ chuyển qua trạng thái terminated và chờ hệ thống thu hồi tài nguyên.

Resources