- Đọc/Ghi ngày, tháng, năm
f/ Thời gian cịn lại tiến trình cần để hồn tất
Cĩ thể giảm thiểu thời gian chờ đợi trung bình của các tiến trình bằng cách cho các tiến trình cần ít thời gian nhất để hồn tất đƣợc thực hiện trƣớc. Tuy nhiên đáng tiếc là rất hiếm khi biết đƣợc tiến trình cần bao nhiêu thời gian nữa để kết thúc xử lý.
Khi thực hiện điều phối, cần quyết định thời điểm chuyển đổi CPU giữa các tiến trình, hệ điều hành cĩ thể dựa vào các nguyên lý sau:
3.2.3 Các nguyên lý điều phối
3.2.3.1 Điều phối độc quyền (preemptive):
Tiến trình khi nhận đƣợc CPU sẽ đƣợc độc chiếm CPU đến khi hồn tất xử lý hoặc tự nguyện giải phĩng CPU. Các giải thuật độc quyền thƣờng đơn giản và dễ cài đặt nhƣng khơng thích hợp với các hệ thống nhiều ngƣời dùng, vì nếu cho phép một tiến trình cĩ quyền xử lý bao lâu tùy ý, tiến trình này cĩ thể giữ CPU một thời gian khơng xác định, cĩ thể ngăn cản những tiến trình cịn lại trong hệ thống cĩ một cơ hội để xử lý. Điều phối độc quyền cũng cĩ thể xảy ra tình trạng các tác vụ cần thời gian xử lý ngắn phải chờ tác vụ xử lý với thời gian rất dài hồn tất.
3.2.3.2 Điều phối khơng độc quyền (nopreemptive):
Khi một tiến trình nhận đƣợc CPU, nĩ vẫn đƣợc sử dụng CPU đến khi hồn tất hoặc tự nguyện giải phĩng CPU, nhƣng nếu xuất hiện một tiến trình khác cĩ độ ƣu tiên cao hơn thì hệ điều hành sẽ cho tiến trình cĩ độ ƣu tiên cao hơn dành quyền sử dụng CPU của tiến trình ban đầu.
Các thuật tốn điều phối khơng độc quyền tránh đƣợc tình trạng một tiến trình độc chiếm CPU, nhƣng việc tạm dừng một tiến trình cĩ thể dẫn đến các mâu thuẫn trong truy xuất, địi hỏi phải sử dụng một phƣơng pháp đồng bộ hĩa thích hợp để giải quyết.
Đối với các hệ thống tƣơng tác, các hệ thời gian thực (real time), cần điều phối khơng độc quyền để các tiến trình quan trọng cĩ cơ hội hồi đáp kịp thời. Tuy nhiên thực hiện điều phối khơng độc quyền địi hỏi những cơ chế phức tạp trong việc phân định độ ƣu tiên, và phát sinh thêm chi phí khi chuyển đổi CPU qua lại giữa các tiến trình. Vấn đề đặt ra cho hệ điều hành là thời điểm nào cần thực hiện điều phối.
+ Thời điểm thực hiện điều phối
Hệ điều hành thực hiện việc điều phối tiến trình khi cĩ một trong các tình huống sau:
a/ Tiến trình chuyển từ trạng thái running sang trạng thái blocked: ví dụ chờ một thao tác nhập xuất hay chờ một tiến trình con kết thúc…
b/ Tiến trình chuyển từ trạng thái running sang trạng thái ready: ví dụ xảy ra một ngắt.
c/ Tiến trình chuyển từ trạng thái blocked sang trạng thái ready: ví dụ một thao tác nhập/xuất hồn tất.
d/ Tiến trình kết thúc.
e/ Tiến trình cĩ độ ƣu tiên cao hơn xuất hiện: chỉ áp dụng đối với điều phối khơng độc quyền
3.2.4 Tổ chức điều phối
3.2.4.1 Các danh sách điều phối
Để thực hiện điều phối, hệ điều hành sử dụng ba loại danh sách là: danh sách tác vụ (job list), danh sách sẵn sàng (ready list), danh sách chờ đợi (waiting list).
Khi một tiến trình đƣợc tạo, PCB của tiến trình sẽ đƣợc chèn vào danh sách tác vụ (job list). Khi bộ nhớ đủ chỗ, một tiến trình trong danh sách tác vụ đƣợc chọn, nạp từ đĩa vào bộ nhớ và PCB của tiến trình đĩ đƣợc chuyển sang danh sách sẵn sàng (ready list). Bộ điều phối sẽ chọn một tiến trình trong danh sách sẵn sàng và cấp CPU cho tiến trình đĩ. Tiến trình đƣợc cấp CPU sẽ thi hành, và sẽ chuyển sang danh sách chờ đợi (waiting list) khi xảy ra các sự kiện ví dụ nhƣ đợi một thao tác nhập/xuất hồn tất hoặc yêu cầu tài nguyên mà chƣa đƣợc thỏa mãn hoặc đƣợc yêu cầu tạm dừng ...
Tiến trình đang thi hành cĩ thể bị bắt buộc tạm dừng xử lý do một ngắt xảy ra, khi đĩ tiến trình đƣợc đƣa trở lại vào danh sách sẵn sàng để chờ đƣợc cấp CPU cho lƣợt tiếp theo.
Hệ điều hành chỉ sử dụng một danh sách tác vụ, một danh sách sẵn sàng nhƣng mỗi một tài nguyên (thiết bị ngoại vi, file,…) cĩ một danh sách chờ đợi riêng bao gồm các tiến trình đang chờ đƣợc cấp phát tài nguyên đĩ.
Hình 3.16: khi cĩ yêu cầu tài nguyên mà chƣa đƣợc đáp ứng, tiến trình đƣợc đƣa vào hàng đợi tài nguyên.
3.2.4.2 Các loại điều phối