Các mục tiêu lập lịch trong một hệ điều hành cổ điển
Trong một hệ thống đa nhiệm, lập lịch có hai chức năng chính:
Tối đa sử dụng bộ xử lý, có nghĩa là tỉ lệ giữa thời gian hoạt động và thời gian nhàn dỗi. Theo lý thuyết thì tỉ lệ này nằm trong khoảng 0 – 100%; còn trong thực tế thì tỉ lệ quan sát được thường nằm trong khoảng 40 – 95%.
Giảm thiểu thời gian phản hồi của tác vụ, có nghĩa là thời gian gữa thời gian “nạp” và khi kết thúc thực thi. Tốt nhất thì thời gian phản hồi bằng thời gian thực thi, khi một tác vụ được lựa chọn nó được thực thi ngay lập tức và không bị tước quyền.
Việc hoàn thành cả hai chức năng có thể được đánh giá trực tiếp bửi tính toái tỉ lệ xử lý và thời gian phản hồi trung bình, nhưng các tiêu chuẩn đánh giá khác cũng được sử dụng. Một số tiêu chuẩn được mô tả ở dưới:
Đánh giá thời gian đợi của tác vụ, có nghĩa là thời gian sử dụng ở trạng thái sẵn sàng
Đánh giá số đầu vào bộ xử lý, có nghĩa là số lượng trung bình tác vụ hoàn thành trong một khoảng thời gian nào đó.
Chính sách lập lịch quyết định tác vụ sẵn sàng nào được chọn. chúng ta sẽ mô tả một số chính sách chính thường được sử dụng trong các hệ điều hành cổ điển.
Chính sách lập lịch first come first served: chính sách này phục vụ yêu cầu cũ nhất mà không tước quyền, thứ tự cấp phát bộ xử lý là thứ tự tác vụ đến (được giải phóng). Các tác vụ với thời gian tính toán ngắn có thể bị bất lợi khi một tác vụ có thời gian tính toán dài thực thi trước đó.
Chính sách lập lịch thời gian ngắn nhất trước: chính sách này nhằm sửa lỗi của chính sách ở trên. Bộ xử lý được cấp phát cho tác vụ có thời gian tính toán ngắn nhất và không tước quyền. Thuật toán này là thuật toán lập lịch non- preemtive và nó giảm thiểu thời gian thực thi trung bình, nhưng bất lợi cho các tác vụ có thời gian thực thi dài. Nó đòi hỏi phải tính toán ước lượng thời gian thực thi của một tác vụ, và thông tin này thường ít gặp. Một phiên bản có tước quyền của chính sách này được gọi là “pending computation time first” (thời gian tính toán pending đầu tiên: tác vụ được chọn trả lại bộ xử lý khi một tác vụ có thời gian pending ngắn hơn sẵn sàng.
Chính sách lập lịch round-robin (luân chuyển): một lát thời gian, có thể là cố định, ví dụ như giữa 10 và 100 ms, là một lượng cấp phát bộ xử lý. Bộ xử lý được cấp phát lần lượt cho các tác vụ sẵn sàng trong một khoảng thời gian nào đó không vượt quá lượng thời gian cho phép (quantum). Nếu như tác vụ kết thúc tính toán trước khi kết thúc lượng thời gian thì nó giải phóng bộ xử lý và tác vụ sẵn sàng tiếp theo được chọn. Nếu tác vụ chưa hoàn thành tính toán trước khi lượng thời gian kết thúc thì nó bị trước quyền và trở thành tác vụ cuối cùng sẵn sàng trong tập tác vụ (hình 1.13). Một chính sách luân chuyển (round robin) được sử dụng phổ biến trong các hệ thống chia sẻ thời gian. Hiệu quả của nó phụ thuộc nhiều và kích thước lượng thời gian (quantum). Một lượng thời gian lớn tăng thời gian phản hồi, nhưng nếu như lượng thời gian này nhỏ thì tăng tính toán tác vụ và chi phí cần được tính đến.
Hình 1.13: ví dụ lập lịch luân chuyển
Chính sách lập lịch độ ưu tiên cố định: Một giá trị độ ưu tiên cố định được gán cho mỗi tác vụ và vào một thời điểm bất kỳ, một tác vụ được chọn luôn là tác vụ sẵn sàng có độ ưu tiên cao nhất (hình 1.14). Thuật toán này có thể được sử dụng có hoặc không có tước quyền ưu tiên. Yếu điểm của chính sách này là các tác vụ độ ưu tiên thấp có thể không bao giờ được thực thi. Một giải pháp là ‘lão hoá’ độ ưu tiên của các tác vụ sẵn sàng như phải đợi, có nghĩa là tăng độ ưu tiên như một hàm thời gian đợi. Vì thế mà độ ưu tiên của tác vụ biến đổi.
Hình 1.14 Ví dụ lâp lịch theo độ ưu tiên (chỉ số ưu tiên càng thấp thì độ ưu tiên của tác vụ càng cao.
Chính sách lập lịch độ ưu tiên đa cấp: trong các chính sách ở trên thì các tác vụ sẵn sàng chia sẻ một danh sách đợi đơn lẻ. Trong phương pháp này chúng ta sẽ định nghĩa nhiều danh sách sẵn sàng, mỗi danh sách tương đương với một cấp độ ưu tiên; điều này có thể dẫn tới việc xuất hiện n danh sách độ ưu tiên khác nhau có độ ưu tiên biến đổi từ 0 tới n-1. Trong một danh sách cho trước, tất cả các tác vụ có độ ưu tiên giống nhau và được thực hiện theo kiểu first come first served không tước quyền ưu tiên hay là round robin. Giá trị lượng thời gian có thể khác nhau từ một danh sách ưu tiên này tới một danh sách ưu tiên khác. Bộ lập lịch phục vụ tất cả các tác vụ trong danh sách 0, sau đó tất cả các tác vụ trong danh sanh 1 khi danh sách 0 trống… Hai biến thể khác nhau cho phép sự thay đổi các độ ưu tiên tác vụ:
Độ ưu tiên tác vụ không đổi. Vào cuối lượng thời gian (quantum), một tác vụ nếu vẫn sẵn sàng được đưa lại vào danh sách đợi tương ứng với giá trị độ ưu tiên.
Độ ưu tiên biến đổi động theo thời gian dịch vụ cung cấp cho tác vụ. Vì thế một tác vụ được chọn từ danh sách x và vẫn sẵn sàng vào cuối lượng thời gian thì sẽ không được đưa vào danh sách x mà đưa vào danh sách x+1 có độ ưu tiên thấp hơn… Chính sách này cố gắng giảm thiểu nguy cơ bị bỏ rơi các tác vụ độ ưu tiên thấp bằng cách hạ độ ưu tiên của các tác vụ có độ ưu tiên cao (hình 1.15).
Chú ý: Không có chính sách nào trong số các chính sách trên thoả mãn hai mục tiêu của lập lịch thời gian thực vì không có chính sách nào tích hợp độ khẩn cấp của tác vụ, nó được biểu diễn bởi thời hạn tương đối của mô hình các tác vụ thời gian thực.