CHƯƠNG 4: ĐIỀU PHỐI TIẾN TRÌNH
4.2. Tổ chức điều phối tiến trình
Để tổ chức điều phối tiến trình hệ điều hành sử dụng hai danh sách: Danh sách sẵn sàng (Ready list) dùng để chứa các tiến trình ở trạng thái sẵn sàng. Danh sách đợi (Waiting list) dùng để chứa các tiến trình đang đợi để được bổ sung vào danh sách sẵn sàng.
Chỉ có những tiến trình trong ready list mới được chọn để cấp processor. Các tiến trình bị chuyển về trạng thái blocked sẽ được bổ sung vào waiting list. Hệ thống chỉ có duy nhấtmột ready list, nhưng có thể tồn tại nhiều waiting list. Thông thường hệ điều hành thiết kế nhiều waiting list, mỗi waiting list dùng để chứa các tiến trình đang đợi được cấp phát một tài nguyên hay một sự kiện riêng biệt nào đó. Hình sau đây minh hoạ cho việc chuyển tiến trình giữa các danh sách:
Hình 9: Sơ đồ chuyển tiến trình vào các danh sách Trong đó:
1. Tiến trình trong hệ thống được cấp đầy đủ tài nguyên chỉ thiếu processor.
2. Tiến trình được bộ điều phối chọn ra để cấp processor để bắt đầu xử lý.
3. Tiến trình kết thúc xử lý và trả lại processor cho hệ điều hành.
4. Tiến trình hết thời gian được quyền sử dụng processor (time-out), bị bộ điều Processor
Waiting list 2 Waiting list 1 Ready list
32
phối tiến trình thu hồi lại processor.
5. Tiến trình bị khóa (blocked) do yêu cầu tài nguyên nhưng chưa được hệ điều hành cấp phát. Khi đó tiến trình được đưa vào danh sách các tiến trình đợi tài nguyên (waiting list 1).
6. Tiến trình bị khóa (blocked) do đang đợi một sự kiện nào đó xảy ra. Khi đó tiến trình được bộ điều phối đưa vào danh sách các tiến trình đợi tài nguyên (waiting list 2).
7. Tài nguyên mà tiến trình yêu cầu đã được hệ điều hành cấp phát. Khi đó tiến trình được bộ điều phối chuyển sang danh sách các tiến trình ở trạng thái sẵn sàng (ready list) để chờ được cấp processor để được hoạt động.
Sự kiện màtiến trình chờ đã xảy ra. Khi đó tiến trình được bộ điều phối chuyển sang danh sách các tiến trình ở trạng thái sẵn s ng (ready list) để chờ được cấpà processor.Các thuật toán điều phối tiến trình:
First Come First Served (FCFS):
Hình 10: Minh hoạ FCFS
- Đây là thuật toán đơn giản nhất. Tiến trình nào yêu cầu CPU trước sẽ được phục vụ trước.
- Ưu điểm: Đơn giản, dễ cài đặt.
33 - Nhược điểm:
+ Tiến trình có thời gian xử lý ngắn phải đợi tiến trình có thời gian xử lý dài.
+ Có thể xảy ra tình trạng độc chiếm CPU.
+ Không phù hợp với hệ thống tương tác người dùng.
Shortest Job First (SJF):
Hình 11: Minh hoạ SJF
- Thuật toán cho phép tiến trình có thời gian xử lý nhỏ nhất sẽ được xử lý trước.
Nếu có nhiều tiến trình cùng thời gian xử lý thì thực hiện theo thuật toán FCFS.
- Ưu điểm: Tối ưu thời gian chờ.
- Nhược điểm: Cần phải ước lượng thời gian cần CPU tiếp theo của các process.
Shortest Remain Time (SRT):
Trong thuật toán này, bộ phận điều phối tiến trình dựa vào độ ưu tiên của các tiến trình (dựa vào thời gian cần thiết để thực hiện nốt tiến trình) để tổ chức cấp processor cho tiến trình. Tiến trình được chọn để cấp processor là tiến trình có độ ưu tiên cao nhất, tại thời điểm hiện tại.
Ở đây hệ điều hành thường tổ chức gán độ ưu tiên cho tiến trình theo nguyên tắc kết hợp giữ gán tĩnh và gán động. Khi khởi tạo tiến trình được gán độ ưu tiên tĩnh, sau đó phụ thuộc vào môi trường hoạt động của tiến trình và công tác điều phối tiến trình của bộ phận điều phối mà hệ điều hành có thể thay đổi độ ưu tiên của tiến trình.
34
Khi hệ thống phát sinh một tiến trình ready mới, thì bộ phận điều phối sẽ so sánh độ ưu tiên của tiến trình mới phát sinh với độ ưu tiên của tiến trình đang sở hữu processor (tạm gọi là tiến trình hiện tại). Nếu tiến trình mới cóđộ ưu tiên thấp hơn tiến trình hiện tại thì bộ phận điều phối sẽ chèn nó vào ready list tại vị trí thích hợp.
Nếu tiến trình mới có độ ưu tiên cao hơn tiến trình hiện tại thì bộ điều phối sẽ thu hồi processor từ tiến trình hiện tại để cấp cho tiến trình mới yêu cầu, nếu làđiều phối không độc quyền, hoặc chèn tiến trình mới vào ready list tại vị trí thích hợp, nếu là điều phối độc quyền.
Chiến lược này cũng phải sử dụng ready list, và ready list luôn được xếp theo thứ tự giảm dần của độ ưu tiên kể từ đầu danh sách. Điều này có nghĩa là tiến trình được chọn để cấp processor là tiến trình ở đầu ready list.
Ví dụ: Nếu hệ điều hành cần cấp processor cho 3 tiến trình P1, P , P2 3 với độ ưu tiên và khoảng thời gian mỗi tiến trình cần processor được mô tả trong bảng sau:
Tiến
trình Độ ưu
tiên Thời gian xử lý
P1 3 24
P2 1 3
P3 2 3
Thì thứ tự cấp processor cho các tiến trình lần lượt là:
Tiến trình P2 P3 P1
Thời điểm 0 4 7
Chiến lược này có thể dẫn đến hậu quả: các tiến trình có độ ưu tiên thấp sẽ rơi vào tình trạng chờ đợi vô hạn. Để khắc phục điều này hệ điều hành thường hạ độ ưu tiên của các tiến trình có độ ưu tiên cao sau mỗi lần nó được cấp processor.
Round Robin (RR):
Trong thuật toán này, ready list được thiết kế theo dạng danh sách nối vòng. Tiến
35
trình được bộ điều phối chọn để cấp processor cũng là tiến trình ở đầu ready list, nhưng sau một khoảng thời gian nhất định nào đó thì bộ điều phối lại thu hồi lại processor của tiến trình vừa được cấp processor và chuyển processor cho tiến trình kế tiếp (bây giờ đã trở thành tiến trình đầu tiên) trong ready list, tiến trình vừa bị thu hồi processor được đưa vào lại cuối ready list. Rõ ràng đây là chiến lược điều phối không độc quyền.
Khoảng khoản thời gian mà mỗi tiến trình được sở hữu processor để hoạt động là bằng nhau, và thường được gọi là Quantum.
Hình 12: Minh hoạ RR
Ví dụ: Nếu hệ điều hành cần cấp processor cho 3 tiến trình P1, P2, P3 với thời điểm vào ready list và khoảng thời gian mỗi tiến trình cần processor được mô tả trong bảng sau: (Quantum = 4)
Tiến trình Thời điểm vào Thời gian xử lý
P1 0 24
P2 1 3
P3 2 3
Thì thứ tự cấp processor cho các tiến trình lần lượt là:
Tiến trình P1 P2 P3 P1 P1 P1 P1 P1 Thời điểm 0 4 7 10 14 18 22 26 Vậy thời gian chờ đợi trung bình sẽ là: (0 + 6 + 3 + 5)/3 = 4.46 Như vậy RR có thời gian chờ đợi trung bình nhỏ hơn so với
36
FIFO
Trong chiến lược này, vấn đề đặt ra đối với công tác thiết kế là: nên chon quantum bằng bao nhiêu thích là hợp, nếu quantum nhỏ thì hệ thống phải tốn nhiều thời gian cho việc cập nhật ready list và chuyển trạng thái tiến trình, dẫn đến vi phạm mục tiêu:
khai thác tối đa thời gian xử lý của processor. Nếu quantum lớn thì thời gian chờ đợi trung bình và thời gian hồi đáp sẽ tăng lên, dẫn đến tính tương tác của hệ thống bị giảm xuống.