Thuật toán lập lịch ưu tiên: Có quyền ưu tiên, không có quyền ưu tiên

⚡ Tóm tắt thông minh

Lập lịch ưu tiên là một phương pháp lập lịch CPU chọn các tiến trình dựa trên mức độ ưu tiên, thực thi các tác vụ có mức độ ưu tiên cao hơn trước. Nó có thể là lập lịch ưu tiên hoặc không ưu tiên, và các tiến trình có cùng mức độ ưu tiên được xử lý theo nguyên tắc ai đến trước được phục vụ trước (FIFO) hoặc luân phiên (round-robin).

  • 🎯 Định nghĩa: Các tiến trình được lên lịch theo thứ tự ưu tiên, trong đó các tác vụ có độ ưu tiên cao hơn sẽ được thực thi trước các tác vụ có độ ưu tiên thấp hơn.
  • 🔢 Số thứ tự ưu tiên: Số càng thấp thường có nghĩa là mức độ ưu tiên càng cao.
  • ⏸️ Mang tính phòng ngừa: Một yêu cầu ưu tiên cao hơn có thể làm gián đoạn một tiến trình ưu tiên thấp hơn đang chạy.
  • ▶ ️ Không ưu tiên: Tiến trình đang chạy sẽ giữ quyền sử dụng CPU cho đến khi nó kết thúc hoặc chuyển đổi ngữ cảnh.
  • Lợi thế: Các tiến trình quan trọng chạy nhanh, tương ứng với tầm quan trọng tương đối so với thời gian xử lý của CPU.
  • ⚠️ Hạn chế: Các tiến trình có độ ưu tiên thấp có thể bị bỏ đói và chờ đợi vô thời hạn.

Thuật toán lập kế hoạch ưu tiên

Lập kế hoạch ưu tiên là gì?

Lên lịch ưu tiên là một phương pháp lập lịch trình dựa trên mức độ ưu tiên. Trong thuật toán này, bộ lập lịch sẽ chọn các tác vụ để làm việc theo mức độ ưu tiên.

Các quy trình có mức độ ưu tiên cao hơn nên được thực hiện trước, trong khi các công việc có mức độ ưu tiên ngang nhau được thực hiện theo vòng tròn hoặc FCFS. Mức độ ưu tiên phụ thuộc vào yêu cầu bộ nhớ, yêu cầu thời gian, v.v.

Các loại lập kế hoạch ưu tiên

Lập lịch ưu tiên được chia thành hai loại chính:

Lập lịch trước

Trong Lập kế hoạch ưu tiên, các nhiệm vụ hầu hết được giao với mức độ ưu tiên của chúng. Đôi khi điều quan trọng là phải chạy một tác vụ có mức độ ưu tiên cao hơn trước một tác vụ có mức độ ưu tiên thấp hơn khác, ngay cả khi tác vụ có mức độ ưu tiên thấp hơn vẫn đang chạy. Nhiệm vụ có mức độ ưu tiên thấp hơn sẽ được giữ trong một thời gian và tiếp tục lại khi nhiệm vụ có mức độ ưu tiên cao hơn hoàn thành việc thực thi.

Lập kế hoạch không ưu tiên

Trong phương pháp lập lịch này, CPU được phân bổ cho một tiến trình cụ thể. Tiến trình nào chiếm dụng CPU sẽ giải phóng CPU bằng cách chuyển đổi ngữ cảnh hoặc kết thúc. Đây là phương pháp duy nhất có thể được sử dụng cho nhiều nền tảng phần cứng khác nhau. Đó là vì nó không cần phần cứng đặc biệt (ví dụ: bộ đếm thời gian) như lập lịch ưu tiên.

Đặc điểm của lập kế hoạch ưu tiên

  • Một thuật toán CPU lập lịch trình dựa trên mức độ ưu tiên.
  • Nó được sử dụng trong Operahệ thống ting để thực hiện các quy trình hàng loạt.
  • Nếu hai công việc có cùng mức độ ưu tiên là SẴN SÀNG, nó sẽ hoạt động trên một ĐẾN TRƯỚC, ĐƯỢC PHỤC VỤ TRƯỚC cơ sở.
  • Trong lập lịch ưu tiên, một số được gán cho mỗi quy trình cho biết mức độ ưu tiên của nó.
  • Số càng thấp thì mức độ ưu tiên càng cao.
  • Trong loại thuật toán lập lịch này, nếu một tiến trình mới xuất hiện có độ ưu tiên cao hơn tiến trình đang chạy hiện tại, thì tiến trình đang chạy hiện tại sẽ bị tạm dừng.

Ví dụ về lập kế hoạch ưu tiên

Hãy xem xét năm tiến trình sau từ P1 đến P5. Mỗi tiến trình có mức độ ưu tiên, thời gian thực thi và thời gian đến riêng biệt.

Quy trình Ưu tiên Thời gian bùng nổ Thời gian đến
P1 1 4 0
P2 2 3 0
P3 1 7 6
P4 3 4 11
P5 2 2 12

Bước 0) Tại thời điểm t = 0, Tiến trình P1 và P2 xuất hiện. P1 có độ ưu tiên cao hơn P2. Quá trình thực thi bắt đầu với tiến trình P1, có thời gian thực thi là 4.

Lên lịch ưu tiên

Bước 1) Tại thời điểm t = 1, không có tiến trình mới nào đến. Quá trình thực thi tiếp tục với P1.

Lên lịch ưu tiên

Bước 2) Tại thời điểm 2, không có tiến trình mới nào xuất hiện nên bạn có thể tiếp tục với P1. P2 đang trong hàng chờ.

Lên lịch ưu tiên

Bước 3) Tại thời điểm 3, không có tiến trình mới nào đến, vì vậy bạn có thể tiếp tục với P1. Tiến trình P2 vẫn đang trong hàng chờ.

Lên lịch ưu tiên

Bước 4) Tại thời điểm thứ 4, P1 đã thực hiện xong. P2 bắt đầu thực thi.

Lên lịch ưu tiên

Bước 5) Tại thời điểm t = 5, không có tiến trình mới nào đến, vì vậy chúng ta tiếp tục với P2.

Lên lịch ưu tiên

Bước 6) Tại thời điểm t = 6, P3 đến. P3 có độ ưu tiên cao hơn (1) so với P2 có độ ưu tiên (2). P2 bị gián đoạn và P3 bắt đầu thực thi.

Quy trình Ưu tiên Thời gian bùng nổ Thời gian đến
P1 1 4 0
P2 2 1 trên 3 đang chờ xử lý 0
P3 1 7 6
P4 3 4 11
P5 2 2 12

Lên lịch ưu tiên

Bước 7) Tại thời điểm 7, không có tiến trình mới nào đến, vì vậy chúng ta tiếp tục với P3. P2 đang trong hàng chờ.

Lên lịch ưu tiên

Bước 8) Tại thời điểm t = 8, không có tiến trình mới nào đến, vì vậy chúng ta có thể tiếp tục với P3.

Lên lịch ưu tiên

Bước 9) Tại thời điểm t = 9, không có tiến trình mới nào xuất hiện, vì vậy chúng ta có thể tiếp tục với P3.

Lên lịch ưu tiên

Bước 10) Ở khoảng thời gian 10, không có tiến trình mới nào xuất hiện, vì vậy chúng ta tiếp tục với P3.

Lên lịch ưu tiên

Bước 11) Tại thời điểm t = 11, P4 đến với độ ưu tiên 4. P3 có độ ưu tiên cao hơn nên nó tiếp tục thực thi.

Quy trình Ưu tiên Thời gian bùng nổ Thời gian đến
P1 1 4 0
P2 2 1 trên 3 đang chờ xử lý 0
P3 1 2 trên 7 đang chờ xử lý 6
P4 3 4 11
P5 2 2 12

Lên lịch ưu tiên

Bước 12) Tại thời điểm t = 12, P5 đến. P3 có độ ưu tiên cao hơn nên nó tiếp tục thực thi.

Lên lịch ưu tiên

Bước 13) Tại thời điểm t = 13, P3 hoàn thành quá trình thực thi. Ta có P2, P4, P5 trong hàng đợi sẵn sàng. P2 và P5 có cùng độ ưu tiên. Thời gian đến của P2 trước P5, vì vậy P2 bắt đầu thực thi.

Quy trình Ưu tiên Thời gian bùng nổ Thời gian đến
P1 1 4 0
P2 2 1 trên 3 đang chờ xử lý 0
P3 1 7 6
P4 3 4 11
P5 2 2 12

Lên lịch ưu tiên

Bước 14) Tại thời điểm t = 14, tiến trình P2 đã hoàn thành quá trình thực thi. P4 và P5 đang ở trạng thái chờ. P5 có độ ưu tiên cao nhất và bắt đầu thực thi.

Lên lịch ưu tiên

Bước 15) Tại thời điểm t = 15, P5 tiếp tục thực thi.

Lên lịch ưu tiên

Bước 16) Tại thời điểm t = 16, tiến trình P5 đã hoàn thành quá trình thực thi. Chỉ còn lại tiến trình P4. Nó bắt đầu thực thi.

Lên lịch ưu tiên

Bước 17) Tại thời điểm t = 20, tiến trình P4 đã hoàn tất quá trình thực thi và không còn tiến trình nào hoạt động nữa.

Lên lịch ưu tiên

Bước 18) Chúng ta hãy tính thời gian chờ trung bình cho ví dụ trên.

Thời gian chờ = thời gian bắt đầu – thời gian đến + thời gian chờ cho đợt tiếp theo

P1 = 0 - 0 = 0
P2 = 4 - 0 + 7 = 11
P3 = 6 - 6 = 0
P4 = 16 - 11 = 5
Average Waiting time = (0 + 11 + 0 + 5 + 2)/5 = 18/5 = 3.6

Ưu điểm của lập lịch ưu tiên

Dưới đây là những lợi ích/ưu điểm của phương pháp lập lịch ưu tiên:

  • Phương pháp lập lịch dễ sử dụng.
  • Các tiến trình được thực thi dựa trên mức độ ưu tiên, do đó các tiến trình có mức độ ưu tiên cao không cần phải chờ lâu, giúp tiết kiệm thời gian.
  • Phương pháp này cung cấp một cơ chế tốt, trong đó tầm quan trọng tương đối của mỗi quy trình có thể được xác định một cách chính xác.
  • Thích hợp cho các ứng dụng có yêu cầu về thời gian và tài nguyên biến động.

Nhược điểm của lập lịch ưu tiên

Dưới đây là những nhược điểm/hạn chế của việc lập lịch ưu tiên:

  • Nếu cuối cùng hệ thống gặp sự cố, tất cả các quy trình có mức độ ưu tiên thấp sẽ bị mất.
  • Nếu các tiến trình có mức ưu tiên cao chiếm nhiều thời gian của CPU thì các tiến trình có mức ưu tiên thấp hơn có thể bị ngừng hoạt động và bị trì hoãn trong một thời gian không xác định.
  • Thuật toán lập lịch này có thể khiến một số quy trình có mức độ ưu tiên thấp phải chờ đợi vô thời hạn.
  • Một tiến trình sẽ bị chặn khi nó sẵn sàng chạy nhưng phải đợi CPU vì một số tiến trình khác hiện đang chạy.
  • Nếu một quy trình mới có mức độ ưu tiên cao hơn tiếp tục xuất hiện trong hàng đợi sẵn sàng thì quy trình đang ở trạng thái chờ có thể phải chờ trong một khoảng thời gian dài.

Câu Hỏi Thường Gặp

Hiện tượng "đói tài nguyên" xảy ra khi các tiến trình có độ ưu tiên thấp phải chờ vô thời hạn vì các tiến trình có độ ưu tiên cao hơn liên tục đến. Cơ chế "lão hóa" giải quyết vấn đề này bằng cách tăng dần độ ưu tiên của các tiến trình đã chờ đợi lâu, sao cho cuối cùng mọi tiến trình đều được thực thi.

Trong hầu hết các hệ điều hành, số thứ tự ưu tiên càng thấp thì tiến trình càng được ưu tiên cao hơn. Ví dụ, một tiến trình có ưu tiên 1 sẽ chạy trước một tiến trình có ưu tiên 3. Tuy nhiên, một số hệ thống lại đảo ngược quy tắc này, vì vậy hãy luôn kiểm tra quy ước được sử dụng.

Mức độ ưu tiên có thể được thiết lập nội bộ dựa trên các yếu tố như nhu cầu bộ nhớ, yêu cầu thời gian và hiệu năng CPU, hoặc được thiết lập bên ngoài bởi người dùng hoặc quản trị viên dựa trên tầm quan trọng, chi phí hoặc thời hạn. Mức độ ưu tiên có thể là tĩnh (cố định) hoặc động (thay đổi trong quá trình thực thi).

Trí tuệ nhân tạo (AI) có thể tự động phân công và điều chỉnh mức độ ưu tiên của quy trình bằng cách học hỏi các mô hình khối lượng công việc và thời hạn. Điều này giúp các công việc quan trọng hoàn thành đúng thời hạn đồng thời giảm nguy cơ bị tắc nghẽn, cải thiện hiệu suất tổng thể và khả năng phản hồi trong các hệ thống phức tạp và luôn thay đổi.

Đúng vậy. Trí tuệ nhân tạo (AI) có thể giám sát thời gian chờ và tự động nâng cao mức độ ưu tiên cho các quy trình có thời gian chờ lâu, hoạt động giống như một hệ thống quản lý tuổi già thông minh. Bằng cách dự đoán tình trạng tắc nghẽn, nó cân bằng sự công bằng và hiệu suất tốt hơn so với các quy tắc cố định, do đó các công việc có mức độ ưu tiên thấp sẽ không bị trì hoãn mãi mãi.

Tóm tắt bài viết này với: