Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 6

5.3.

4 Lập lịch độ ưu tiên ( độ ưu tiên priority )


Thuật toán SJF là trường hợp đặc biệt của thuật toán lập lịch ưu tiên chung.
Mức độ ưu tiên được liên kết với mỗi quy trình và CPU được phân bổ cho quy
trình có mức ưu tiên cao nhất. Các quy trình có mức độ ưu tiên ngang nhau được
lên lịch trong lệnh FCFS. Thuật toán SJF đơn giản là một thuật toán ưu tiên trong
đó mức độ ưu tiên (p) là nghịch đảo của cụm CPU tiếp theo (được dự đoán). CPU
bùng nổ càng lớn, mức độ ưu tiên càng thấp và ngược lại.
Lưu ý rằng việc lập lịch thảo luận của chúng tôi có mức độ ưu tiên cao và mức độ
ưu tiên thấp.
Mức độ ưu tiên thường được biểu thị bằng một số phạm vi số cố định, chẳng hạn
như 0 đến 7 hoặc 0 đến 4.095. Tuy nhiên, không có sự thống nhất chung về việc
liệu 0 có phải là ưu tiên cao nhất hoặc thấp nhất. Một số hệ thống sử dụng số
thấp để thể hiện mức thấp sự ưu tiên; những người khác sử dụng số thấp cho
mức độ ưu tiên cao. Sự khác biệt này có thể dẫn đến lú lẫn. Trong văn bản này,
chúng tôi giả định rằng số thấp thể hiện mức độ ưu tiên cao.
Ví dụ, hãy xem xét tập hợp các quy trình sau đây, được giả định là có đến thời
điểm 0 theo thứ tự P1, P2, ···, P5, với độ dài của CPU tính bằng mili giây:

Bằng cách sử dụng lập lịch ưu tiên, chúng ta sẽ lập lịch cho các quy trình này theo
theo biểu đồ Gantt:
thời gian chờ đợi trung bình là 8,2 mili giây.
Các ưu tiên có thể được xác định trong nội bộ hoặc bên ngoài. Được xác định nội
bộ mức độ ưu tiên sử dụng một số lượng hoặc số lượng có thể đo lường được để
tính toán mức độ ưu tiên của một quá trình. Ví dụ: giới hạn thời gian, yêu cầu bộ
nhớ, số lượng đang mở các tệp và tỷ lệ giữa số lần truy cập I/O trung bình và số
lần xử lý CPU trung bình là được sử dụng trong các ưu tiên tính toán. Các ưu tiên
bên ngoài được đặt ra bởi các tiêu chí bên ngoài hệ điều hành, chẳng hạn như
tầm quan trọng của quy trình, loại và số lượng số tiền được trả cho việc sử dụng
máy tính, bộ phận tài trợ cho công việc, và các yếu tố khác, thường là chính trị.
Lập kế hoạch ưu tiên có thể là ưu tiên hoặc không ưu tiên. Khi một tiến trình đến
hàng đợi sẵn sàng, mức độ ưu tiên của nó sẽ được so sánh với mức độ ưu tiên
của tiến trình hiện đang chạy. Thuật toán lập lịch ưu tiên ưu tiên sẽ ưu tiên CPU
nếu mức độ ưu tiên của quy trình mới đến cao hơn mức ưu tiên của quy trình
hiện đang chạy. Thuật toán lập lịch ưu tiên không ưu tiên sẽ chỉ đặt quy trình mới
ở đầu hàng đợi sẵn sàng.
Một vấn đề lớn với các thuật toán lập lịch ưu tiên là khối không xác định đang
hoạt động hoặc bị đói. Một tiến trình đã sẵn sàng để chạy nhưng đang chờ CPU có
thể bị coi là bị chặn. Một thuật toán lập lịch ưu tiên có thể để lại một số các tiến
trình ưu tiên chờ đợi vô thời hạn. Trong một hệ thống máy tính được tải nặng,
một dòng ổn định của các quy trình có mức độ ưu tiên cao hơn có thể ngăn chặn
quy trình có mức độ ưu tiên thấp kể từ khi nhận được CPU. Nói chung, một trong
hai điều sẽ xảy ra.
Một tùy chọn khác là kết hợp lập lịch luân phiên và lập lịch ưu tiên theo cách mà
hệ thống thực thi quy trình có mức ưu tiên cao nhất và chạy các quy trình có cùng
mức độ ưu tiên bằng cách sử dụng lập lịch luân chuyển. Hãy minh họa bằng một ví
dụ sử dụng tập hợp quy trình sau, với thời gian bùng nổ tính bằng mili giây:
Bằng cách sử dụng lập lịch ưu tiên với tính năng quay vòng cho các quy trình có
mức độ ưu tiên bằng nhau, chúng tôi sẽ lập lịch các quy trình này theo biểu đồ
Gantt sau bằng cách sử dụng định mức thời gian là 2 mili giây:
Trong ví dụ này, tiến trìnhP4 có mức độ ưu tiên cao nhất nên nó sẽ chạy để hoàn
thành sự. Các tiến trình P2 và P3 có mức ưu tiên cao nhất tiếp theo và chúng sẽ
thực thi trong một thời trang vòng tròn. Lưu ý rằng khi quá trình P2 kết thúc ở
thời điểm 16, quá trình P3 là tiến trình có mức độ ưu tiên cao nhất nên nó sẽ chạy
cho đến khi hoàn tất quá trình thực thi. Bây giờ, chỉ còn lại các tiến trình P1 và P5
và vì chúng có mức độ ưu tiên như nhau nên chúng sẽ thực hiện theo thứ tự vòng
tròn cho đến khi hoàn thành.

5.3.5 Điều phối hàng chờ nhiều mức


Với cả lập lịch ưu tiên và lập lịch vòng tròn, tất cả các quy trình có thể được đặt
trong một hàng đợi duy nhất và sau đó bộ lập lịch sẽ chọn quy trình có mức ưu
tiên cao nhất để chạy. Tùy thuộc vào cách quản lý hàng đợi, có thể cần phải tìm
kiếm O(n) để xác định quy trình có mức độ ưu tiên cao nhất. Trong thực tế, việc có
các hàng đợi riêng biệt cho từng mức độ ưu tiên riêng biệt thường dễ dàng hơn
và việc lập kế hoạch ưu tiên chỉ đơn giản là lập lịch trình cho quá trình trong hàng
đợi có mức độ ưu tiên cao nhất. Điều này được minh họa trong (hình 5.7). Cách
tiếp cận này được gọi là điều phối hàng chờ nhiều mức cũng hoạt động tốt khi lập
kế hoạch ưu tiên được kết hợp với luân chuyển vòng: nếu có nhiều quy trình trong
hàng đợi có mức ưu tiên cao nhất, chúng sẽ được thực thi theo thứ tự vòng tròn.
Trong dạng tổng quát nhất của phương pháp này, mức độ ưu tiên được gán tĩnh
cho từng quy trình và một quy trình vẫn ở trong cùng một hàng đợi trong suốt
thời gian chạy của nó.
Thuật toán lập lịch điều phối hàng chờ nhiều mức cũng có thể được sử dụng để
phân vùng các tiến trình thành nhiều hàng đợi riêng biệt dựa trên loại tiến trình
(Hình 5.8). Ví dụ: sự phân chia chung được thực hiện giữa các quy trình nền trước
(tương tác) và các quy trình nền (lô). Hai loại quy trình này có các yêu cầu về thời
gian phản hồi khác nhau và do đó có thể có các nhu cầu lập kế hoạch khác nhau.
Ngoài ra, các quy trình nền trước có thể có mức độ ưu tiên (được xác định bên
ngoài) so với các quy trình nền. Các hàng đợi riêng biệt có thể được sử dụng cho
các tiến trình nền trước và nền sau và mỗi hàng đợi có thể có thuật toán lập lịch
riêng. Ví dụ, hàng đợi nền trước có thể được lập lịch bằng thuật toán RR, trong khi
hàng đợi nền được lập lịch bằng thuật toán FCFS.
Ngoài ra, phải có sự lập lịch giữa các hàng đợi, thường được thực hiện như một
phương pháp lập kế hoạch ưu tiên cố định. Ví dụ, hàng đợi thời gian thực có thể
có mức độ ưu tiên tuyệt đối so với hàng đợi tương tác. Hãy xem một ví dụ về
thuật toán lập lịch hàng đợi nhiều cấp với bốn hàng đợi, được liệt kê dưới đây
theo thứ tự ưu tiên:
1. Quy trình thời gian thực
2. Quy trình hệ thống
3. Quá trình tương tác
4. Quy trình hàng loạt
Ví dụ: mỗi hàng đợi có mức độ ưu tiên tuyệt đối trên mức ưu tiên thấp hơn.
Hàng đợi không xử lý trong lô có thể chạy trừ khi hàng đợi cho các quy trình thời
gian thực, quy trình hệ thống và quy trình tương tác đều trống. Nếu một quy trình
tương tác được đưa vào hàng đợi sẵn sàng trong khi một quy trình hàng loạt đang
chạy thì quy trình hàng loạt đó sẽ được ưu tiên.
Một khả năng khác là chia nhỏ thời gian giữa các hàng đợi. Ở đây, mỗi hàng đợi
nhận được một phần thời gian nhất định của CPU, sau đó nó có thể lên lịch cho
các quy trình khác nhau. Ví dụ: trong ví dụ về hàng đợi nền trước-nền trước, hàng
đợi nền trước có thể được cung cấp 80% thời gian CPU để lập lịch RR giữa các tiến
trình của nó, trong khi hàng đợi nền nhận được 20% CPU để cung cấp cho các tiến
trình của nó trên cơ sở FCFS.

You might also like