5/5 - (2 bình chọn)

Resource, Priority Ceiling Protocol

Resource

Trong hệ điều hành OS, thuật ngữ Resource đề cập đến bất kỳ dữ liệu hoặc thứ tự thực thi nào có thể được sử dụng. Nói cách khác, Resource là vùng quan trọng được chia sẻ với các Task khác như CPU, bộ nhớ, thiết bị, bộ lập lịch (Scheduler). Do đó, Quản lý tài nguyên (Resource Management) là quá trình điều chỉnh thứ tự sử dụng để nhiều Task với mức độ ưu tiên khác nhau có thể chia sẻ Resource một cách an toàn.
Lưu ý rằng Quản lý tài nguyên chỉ áp dụng cho các hệ điều hành và không thể sử dụng cho môi trường đa lõi (Multi-Core). Trong môi trường Multi-Core, các phương pháp khác như Spinlock được sử dụng.

Resource Type

1. Standard
o GetResource(ResID): API để thu nhận Resource.
o ReleaseResource(ResID): API để trả lại Resource.
2. Internal
o Resource được tự động thu nhận khi Task chuyển sang trạng thái Running.
o GetResource(ResID) và ReleaseResource(ResID) không thể sử dụng.

o Được tự động giải phóng tại điểm tái lập lịch (Re-Scheduling) trong lập lịch không chiếm quyền (Non-Preemptive Scheduling).
o Hành vi cơ bản tương tự như Standard Resource (như Priority Ceiling Protocol).
3. Linked
o Không thể chiếm giữ lồng nhau (Nesting) đối với Resource.
o Nếu cần lồng nhau (Nesting), thêm Link Resource thực hiện cùng một hành vi như Resource ban đầu.
Khi một Task chiếm dụng Resource trong một nhóm sử dụng cùng Resource, các Task khác trong nhóm đó sẽ không được chiếm quyền.

Resource Type
Resource Type

Priority Ceiling Protocol

OSEK OS áp dụng phương pháp Priority Ceiling Protocol (Giao thức trần ưu tiên).
Priority Ceiling Protocol là phương pháp giải quyết tình trạng bế tắc (Deadlock) và đảo ngược ưu tiên (Priority Inversion) có thể xảy ra khi một Task có mức độ ưu tiên thấp hơn chiếm giữ (Preemption) Resource. Bằng cách gán một Ceiling-Priority (trần ưu tiên) cho từng Resource và thiết lập mức độ ưu tiên cao nhất cho Task cần Resource, chỉ có một Task duy nhất có thể chiếm giữ Resource tại một thời điểm.
Hình minh họa bên dưới cho thấy kỹ thuật Ceiling-Priority. Task T0 có mức độ ưu tiên cao nhất, và Task T4 có mức độ ưu tiên thấp nhất. Khi Task T1 và Task T4 cùng muốn truy cập vào một Resource, Task T1 có mức độ ưu tiên cao hơn sẽ chiếm giữ Resource với thời gian chờ ngắn hơn thời gian chiếm giữ tối đa của Task T4

Priority Ceiling Protocol
Priority Ceiling Protocol

1. Gán Ceiling-Priority (trần ưu tiên) cho từng Resource.
2. Task có mức độ ưu tiên cao nhất trong số các Task cần Resource sẽ được cấp quyền sử dụng Resource.
3. Tại thời điểm Task nhận Resource, mức độ ưu tiên của Task được thiết lập theo Ceiling-Priority của Resource.
4. Khi Task giải phóng (Release) Resource, Task sẽ quay lại mức độ ưu tiên ban đầu.
5. Nếu chính sách lập lịch (Scheduling Policy) là Preemptive, việc lập lịch sẽ xảy ra.

Ràng buộc

• Không thể chiếm giữ lồng nhau (Nested Acquisition) đối với Resource.
• Task và ISR (Interrupt Service Routine) không thể kết thúc nếu đang chiếm giữ Resource.
• Không thể gọi các API như TerminateTask, ChainTask, Schedule, và WaitEvent.
• Khi một Task chiếm giữ nhiều Resource, người dùng phải yêu cầu và giải phóng Resource theo thứ tự LIFO (Last In First Out, ngăn xếp).
o ※ Nếu không giải phóng Resource theo thứ tự, hệ thống có thể gặp tình trạng bế tắc (Deadlock).
• Mức độ ưu tiên của Task sử dụng Resource không được cao hơn mức độ ưu tiên đã gán cho Resource.

Scheduler as a Resource

Scheduler tự nó là một Resource.
• Task có thể khóa Scheduler để tránh bị chiếm quyền bởi các Task khác.
• Trong OSEK/VDX, Standard Resource có tên là RES_SCHEDULER được tự động tạo.
o ※ Trong trường hợp của AUTOSAR, RES_SCHEDULER không được tạo tự động.
• RES_SCHEDULER ngăn chặn việc tái lập lịch (Re-Scheduling) của các Task (ngoại trừ Interrupt).
• Sử dụng GetResource(RES_SCHEDULER) và ReleaseResource(RES_SCHEDULER).

Xem thêm Chuyên Mục

Autosar OS

BÌNH LUẬN

Vui lòng nhập bình luận của bạn
Vui lòng nhập tên của bạn ở đây