Truyền thông giữa các tác vụ

Một phần của tài liệu Phân tích, thiết kế phần mềm nhúng (Trang 53)

Trong hệ thống có sử dụng RTOS, dữ liệu thường được chuyển qua RTOS. Nó có thể hỗ trợ những dịch vụ semaphore, bộ đệm, hàng đợi và mailbox để truyền thông giữa các tác vụ.

Semaphore cung cấp cơ cấu chia sẻ dữ liệu được sử dụng trong hầu hết các nhân của hệ điều hành đa nhiệm. Những tác dụng của semaphore là: điều khiển việc truy cập tới tài nguyên chia sẻ, phát tín hiệu khi sự kiện xuất hiện và cho phép hai tác vụ đồng bộ hoạt động. Một semaphore đơn giản là một giá trị không âm. Khi một tác vụ sử dụng tài nguyên, nó cần semaphore như khoá để truy cập tài nguyên. Khi sử dụng tài nguyên, tác vụ đó làm cho giá trị của semaphore giảm đi 1. Khi không sử dụng nữa, semaphore lại được tăng lên 1. Các tác vụ khác nếu cố tình muốn giảm semaphore xuống giá trị nhỏ hơn 0 thì sẽ bị khoá lại và đặt vào hàng đợi semaphore. Semaphore được cài đặt ba toán tử trong hệ điều hành là: INITIALIZE, WAIT, và SIGNAL. Sự khác biệt trong hệ thống RTOS là tất cả truy cập tới semaphore đều được truyền thông qua RTOS.

Một bộ đệm RTOS giống như bộ đệm FIFO nhưng do RTOS quản lý. Khi một tác vụ A cần chuyển dữ liệu nó sẽ yêu cầu một bộ đệm từ RTOS, bỏ dữ liệu vào trong đó và thông báo với RTOS chuyển đến tác vụ B. Tác vụ B nhận được con trỏ trỏ tới bộ đệm, con trỏ này xác định vị trí bộ đệm trong bộ nhớ và dung lượng dữ liệu của nó.

Một hàng đợi là một chuỗi các bộ đệm. tác vụ A có thể đặt một thông điệp vào bộ đệm và chuyển bộ đệm đó cho tác vụ B. Tác vụ B có thể bận khi thông điệp gửi đi kế tiếp đã sẵn sàng, lúc đó tác vụ A sẽ đề nghị RTOS đặt thông điệp kế tiếp này vào hàng đợi, nơi mà tác vụ B sẽ xử lý lần lượt theo thứ tự.

Trong cấu trúc mailbox, thông thường một tác vụ nhận thông điệp từ vài tác vụ khác. RTOS quản lý mailbox, lưu giữ thông điệp cho một tác vụ cho đến khi tác vụ đó sẵn sàng đọc thông điệp. Giống như mailbox ngoài thực tế, khi một tác vụ đã gửi thông điệp thì nó không thể lấy lại được. Tuỳ thuộc vào RTOS, một tác vụ có thể kiểm tra mailbox và đợi mail khi không có. Hình 3.4 tóm tắt cơ chế truyền thông trong RTOS. Ở ví dụ đầu tiên (bộ đệm RTOS), Tiến trình A chuyển dữ liệu cho tiến trình B thông qua một bộ đệm. Ở ví dụ thứ 2 (hàng đợi RTOS), Tiến trình A đổ đầy dữ liệu vào các bộ đệm (hàng đợi) 1, 2 và đang đổ dữ liệu vào bộ đệm 3. Tiến trình B đang lấy dữ liệu từ bộ đệm 1. Ở ví dụ thứ 3 trong hình 3.4 là một RTOS mailbox. Các tiến trình A, B và C đang đưa dữ liệu vào một mailbox chung cho tiến trình D. Từng thông điệp của mỗi tiến trình sẽ được lưu một cách riêng biệt. RTOS thông thường cho phép tiến trình gửi gán các mức ưu tiên cho thông điệp gửi đi.

Một tác vụ có thể sẵn sàng thực thi sau khi có một sự kiện xảy ra hoặc có thể được lập lịch bắt đầu thực thi muộn hơn. Nó cũng có thể được lập lịch thực thi khi một semaphore được đặt, một khoảng thời gian nhất định đã trôi qua hoặc thực thi tác vụ vào một thời điểm xác định trong ngày.

Một phần của tài liệu Phân tích, thiết kế phần mềm nhúng (Trang 53)

Tải bản đầy đủ (PDF)

(84 trang)