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. Hbị blocked bởiL, tức làHphải chờLgiải phóng tài nguyên.- Hiện tượng này gọi là đảo ngược ưu tiên vì
L"ngang hàng" hoặc "cao hơn"Hvề quyền sử dụng tài nguyên.
Có 2 loại
- Giới hạn thời gian: Thời gian
Hbị 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ữaHvàL. Mcó ưu tiên cao hơnLnhưng thấp hơnH.Lvẫn giữ tài nguyên, nhưng CPU lại chạyM→Hphải chờ vô thời hạn.
- Thêm một task trung bình (
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

- Ceiling(R1) = 3 (ưu tiên cao nhất dùng
R1làH). - Khi
LlockR1, OS sẽ nângLlên 3 ngay lập tức.
Tham khảo:
All rights reserved