Trong Priority Scheduling, tại thời điểm xuất hiện một quá trình trong hàng đợi sẵn sàng, Mức độ ưu tiên của nó được so sánh với mức độ ưu tiên của các quá trình khác có trong hàng đợi sẵn sàng cũng như với một quá trình đang được CPU thực thi tại thời điểm đó của thời gian. Cái có mức độ ưu tiên cao nhất trong số tất cả các quy trình có sẵn sẽ được cấp cho CPU tiếp theo.
Các bài viết liên quan:
Sự khác biệt giữa lập kế hoạch ưu tiên trước và lập lịch ưu tiên không ưu tiên là, trong Priority Scheduling, công việc đang được thực hiện có thể bị dừng lại khi có công việc có mức độ ưu tiên cao hơn.
Khi tất cả các công việc có sẵn trong hàng đợi sẵn sàng, thuật toán sẽ hoạt động như lập lịch ưu tiên không ưu tiên, có nghĩa là công việc được lên lịch sẽ chạy cho đến khi hoàn thành và không có ưu tiên nào được thực hiện.
Thí dụ
Có 7 quy trình P1, P2, P3, P4, P5, P6 và P7 được đưa ra. Các ưu tiên tương ứng của họ, Arrival Time và Thời gian Burst được đưa ra trong bảng dưới đây.
Process ID | Priority | Arrival Time | Burst Time |
1 | 2 (L) | 0 | 1 |
2 | 6 | 1 | 7 |
3 | 3 | 2 | 3 |
4 | 5 | 3 | 6 |
5 | 4 | 4 | 5 |
6 | 10 (H) | 5 | 15 |
7 | 9 | 15 | số 8 |
Biểu đồ GANTT Chuẩn bị
Tại thời điểm 0, P1 đến với Burst Time là 1 đơn vị và mức độ ưu tiên 2. Vì không có quy trình nào khác nên quá trình này sẽ được lên lịch cho đến khi công việc tiếp theo đến hoặc hoàn thành nó (tùy theo điều kiện nào nhỏ hơn).
Tại thời điểm 1, P2 đến. P1 đã hoàn thành quá trình thực thi và không có quy trình nào khác khả dụng tại thời điểm này, do đó Hệ điều hành phải lên lịch cho nó bất kể mức độ ưu tiên được gán cho nó là gì.
Quá trình Tiếp theo P3 đến đơn vị thời gian 2, mức độ ưu tiên của P3 cao hơn thành P2. Do đó, việc thực thi P2 sẽ bị dừng và P3 sẽ được lên lịch trên CPU.
Trong quá trình thực thi P3, ba quy trình khác P4, P5 và P6 sẽ khả dụng. Vì cả ba thứ này đều có mức độ ưu tiên thấp hơn đối với quá trình đang thực thi nên PS không thể chặn trước quá trình. P3 sẽ hoàn thành quá trình thực thi của nó và sau đó P5 sẽ được lên lịch với mức ưu tiên cao nhất trong số các quy trình có sẵn.
Trong khi thực thi P5, tất cả các quy trình đều có sẵn trong hàng đợi sẵn sàng. Tại thời điểm này, thuật toán sẽ bắt đầu hoạt động dưới dạng Lập lịch ưu tiên không tính trước. Do đó, bây giờ, khi tất cả các quy trình có sẵn trong hàng đợi sẵn sàng, hệ điều hành chỉ thực hiện quy trình với mức độ ưu tiên cao nhất và thực hiện quy trình đó cho đến khi hoàn thành. Trong trường hợp này, P4 sẽ được lên lịch và sẽ được thực hiện cho đến khi hoàn thành.
Vì P4 đã hoàn thành, quá trình khác có mức ưu tiên cao nhất có sẵn trong hàng đợi sẵn sàng là P2. Do đó P2 sẽ được lên lịch tiếp theo.
P2 được cấp cho CPU cho đến khi hoàn thành. Vì Burst Time còn lại của nó là 6 chiếc nên P7 sẽ được lên lịch sau thời gian này.
Quá trình duy nhất còn lại là P6 với mức độ ưu tiên ít nhất, Hệ điều hành không có lựa chọn nào khác trừ khi thực hiện nó. Điều này sẽ được thực hiện cuối cùng.
Completion Time của mỗi quá trình được xác định với sự trợ giúp của biểu đồ GANTT. Turnaround Time và Waiting Time có thể được tính theo công thức sau.
- Turnaround Time = Completion Time – Arrival Time
- Waiting Time = Turnaround Time – Thời gian liên tục
Process ID | Priority | Arrival Time | Burst Time | Completion Time | Turnaround Time | Waiting Time |
1 | 2 | 0 | 1 | 1 | 1 | 0 |
2 | 6 | 1 | 7 | 22 | 21 | 14 |
3 | 3 | 2 | 3 | 5 | 3 | 0 |
4 | 5 | 3 | 6 | 16 | 13 | 7 |
5 | 4 | 4 | 5 | 10 | 6 | 1 |
6 | 10 | 5 | 15 | 45 | 40 | 25 |
7 | 9 | 6 | số 8 | 30 | 24 | 16 |
Thời gian chờ trung bình = (0 + 14 + 0 + 7 + 1 + 25 + 16) / 7 = 63/7 = 9 đơn vị