0

Priority Inversion

Khái niệm

Priority inversion (Đảo ngược ưu tiên) xảy ra khi:

  • Một task thấp (L) đang chiếm tài nguyên mà một task cao (H) cần dùng.
  • H bị blocked bởi L, tức là H phải chờ L giải phóng tài nguyên.
  • Hiện tượng này gọi là đảo ngược ưu tiênL "ngang hàng" hoặc "cao hơn" H về quyền sử dụng tài nguyên.

Có 2 loại

  • Giới hạn thời gian: Thời gian H bị blocked có thể biết được. Khoảng thời gian bị Blocked chính là khoảng thời gian mà L đang sử dụng tài nguyên.
  • Không giới hạn:
    • Thêm một task trung bình (M) vào giữa HL.
    • M có ưu tiên cao hơn L nhưng thấp hơn H.
    • L vẫn giữ tài nguyên, nhưng CPU lại chạy MH phải chờ vô thời hạn.

Giải pháp

Priority Inheritance (Kế thừa ưu tiên)
  • Khi L giữ tài nguyên mà H cần, OS tạm nâng ưu tiên của L = ưu tiên H.
  • Sau khi L xong, trả về ưu tiên ban đầu.
  • Có thể xuất hiện priority inheritance chain nếu nhiều task liên quan.
Priority Ceiling (Trần ưu tiên)
  • Xác định ceiling(R) = ưu tiên cao nhất của mọi task dùng tài nguyên R.
  • Khi task L lock R, OS ngay lập tức nâng L lên ceiling(R).
  • Task H không phải chờ → tránh blocked.

💡 Ví dụ minh họa

image.png

  • Ceiling(R1) = 3 (ưu tiên cao nhất dùng R1H).
  • Khi L lock R1, OS sẽ nâng L lên 3 ngay lập tức.

Tham khảo:


All rights reserved

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí