Giáo trình Real time - Chương 7: Các vấn đề nảy sinh khi giải quyết vấn đề chia sẻ tài nguyên đảo ưu tiên

Võ Duy Thành  
CHƯƠNG 7  
CÁC VẤN ĐỀ NẢY SINH KHI GIẢI QUYẾT VẤN ĐỀ CHIA SẺ TÀI NGUYÊN – ĐẢO ƯU  
TIÊN  
Trong chương trước, chúng ta đã sử dụng semaphore như một công cụ để giải quyết  
vấn đề tranh chấp tài nguyên. Tuy nhiên, phương pháp này có thể dẫn đến vấn đề khó  
thực thi khi hệ thống làm việc. Xét tình huống được trình bày trong hình 1. Tác vụ 1  
và 2 yêu cầu sử dụng tài nguyên dùng chung được bảo vệ bởi semaphore. Tác vụ 1 có  
quyền ưu tiên cao nhất và tác vụ 2 có mức ưu tiên thấp nhất. Tác vụ 3 không cần sử  
dụng tài nguyên có mức ưu tiên trung bình.  
Hình 1. Trường hợp đảo ưu tiên  
Hình 2 trình bày về quá trình thực thi của hệ thống theo thời gian. Giả sử rằng tác vụ 2  
đang làm việc và gửi yêu cầu sử dụng tài nguyên. Tài nguyên khi đó đang rỗi nên tác  
vụ 2 ngay lập tức sử dụng. Sau đó, một ngắt xuất hiện làm tác vụ 1 trở nên sẵn sàng  
hoạt động. Do tác vụ 1 có mức ưu tiên cao nhất nên nó chiếm quyền thực thi của tác  
vụ 2 và hoạt động cho tới khi nó gửi yêu cầu sử dụng tài nguyên.  
Hình 2. Thời gian thực hiện – Đảo ưu tiên  
Bởi vì tài nguyên đang được tác vụ 2 sử dụng nên tác vụ 1 sẽ bị khóa và tác vụ 2 lại  
nắm lại quyền điều khiển. Cho tới đây, mọi việc đang diễn ra theo đúng ý của chúng  
ta. Mặc dù tác vụ 1 có quyền ưu tiên cao hơn nhưng nó vẫn phải chờ cho đến khi tác  
vụ 2 kết thúc việc sử dụng tài nguyên.  
Tài liệu chỉ mang tính tham khảo  
Nguyên văn tiếng nước ngoài của Doug Abbott  
1
Võ Duy Thành  
Vấn đề nảy sinh trong trường hợp tác vụ 3 trở nên sẵn sàng hoạt động trong khi tác vụ  
2 đang sử dụng tài nguyên. Do có quyền ưu tiên cao hơn tác vụ 2 nên tác vụ 3 sẽ  
chiếm quyền hoạt động của tác vụ 2. Trường hợp này gọi là “Đảo ưu tiên” (Priority  
Inversion) bởi vì tác vụ có quyền ưu tiên thấp hơn (tác vụ 3) lại có thể ngăn cản hoạt  
động của tác vụ có mức ưu tiên cao hơn (tác vụ 1).  
Giải pháp thông thường để xử lý vấn đề này là tạm thời tăng mức ưu tiên của tác vụ 2  
lên bằng với mức ưu tiên của tác vụ 1 ngay khi tác vụ 1 gửi yêu cầu sử dụng tài  
nguyên tới semaphore. Từ lúc này, tác vụ 2 sẽ không thể bị ngắt bởi các tác vụ có mức  
ưu tiên thấp hơn mức ưu tiên của tác vụ 1. Giải pháp này được gọi là “Sự kế thừa mức  
ưu tiên” – priority inheritance. Nếu kernel tạo ra sự khác biệt giữa một semaphore và  
một mutex1 thì chức năng priority inheritance sẽ được tích hợp thành một thông số tùy  
chọn khi mutex được tạo ra.  
Một giải pháp khác, được gọi là mức “ưu tiên trần” – priority ceiling, tăng mức ưu  
tiên của tác vụ 2 lên cao hơn tất cả các tác vụ có thể yêu cầu sử dụng mutex ngay khi  
tác vụ 2 nhận được mutex. Giải pháp này được coi là hữu hiệu hơn bởi vì nó loại trử  
được các ngắt không cần thiết. Không một tác vụ nào cần tài nguyên có thể cướp  
quyền điều khiển của tác vụ đang nắm giữ tài nguyên.  
1 Mutex: Mutual Exclusion – Sự loại trừ lẫn nhau. Đây là Binary semaphore Xem các khái niệm về  
mutex trong chương trước.  
Tài liệu chỉ mang tính tham khảo  
Nguyên văn tiếng nước ngoài của Doug Abbott  
2
pdf 2 trang Thùy Anh 13200 Free
Bạn đang xem tài liệu "Giáo trình Real time - Chương 7: Các vấn đề nảy sinh khi giải quyết vấn đề chia sẻ tài nguyên đảo ưu tiên", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

File đính kèm:

  • pdfgiao_trinh_real_time_chuong_7_cac_van_de_nay_sinh_khi_giai_q.pdf