Truyền thông và đồng bộ 1 Semaphore

Một phần của tài liệu 525 đề cương bài giảng hệ thống nhúng bùi trung thành, 119 trang (Trang 91 - 95)

B – 1: So sánh đặc điểm của CISC và RISC

5.3 Truyền thông và đồng bộ 1 Semaphore

5.3.1 Semaphore

Hình 5-5: truyền thông quá trình

Semaphores là một cấu trúc dữ liệu được định nghĩa để loại trừ khả năng xung đột trong quá trình chia sẻ tài nguyên của các tác vụ trong hoạt động của hệ thống.

Semaphores hỗ trợ hai hoạt động chính như sau:

wait(semaphore): giảm và khoá cho tới khi semaphore được mở

signal(semaphore): tăng và cho phép thêm một luồng mới được tham gia hoạt động

Trong hoạt động phối hợp cùng với semaphore có một hàng đợi gồm các tác vụ cần được thực thi sẽ có một số tình huống hoạt động cơ bản như sau:

 Khi một luồng (thread) gọi wait():

 Nếu semaphore được mở thì luồng đó sẽ được gia nhập và tiếp tục thực thi

 Nếu semaphore đang bị đóng thì nhánh đó sẽ bị khoá và phải nằm chờ trong hàng đợi cho tới khi nào semaphore được mở

signal() sẽ mở semaphore:

 nếu một luồng đang nằm trong hàng đợi và không bị khoá

 nếu không có luồng nào trong hàng đợi và tín hiệu signal sẽ được nhớ và dành cho luồng tiếp theo

Các loại Semaphore

Mutex semaphore

 Cho phép điều khiển hoạt động truy nhập đơn lẻ vào tài nguyên chia sẻ của hệ thống.

 Đảm bảo loại trừ xung đột trong hoạt động truy nhập đồng thời của nhiều tác vụ, và chỉ có một tác vụ được thực thi tại mỗi thời điểm.

Counting semaphore

 Điều khiển tài nguyên mà có thể phục vụ cùng một lúc nhiều tác vụ hoặc một nguồn tài nguyên cho phép phục vụ một số nhất định các tác vụ không đồng bộ và hoạt động đồng thời.

 Nhiều luồng có thể truyền Semaphore

 Số lượng luồng được quyết định bởi biến đếm N của Semaphore

Thực chất mutex semaphore là một dạng đặc biệt của counting semaphore với biến đếm N=1.

Sử dụng Semaphore trong việc đồng bộ hai quá trình tạo và sử dụng hạng mục thông qua bộ đệm trung gian.

Nhận xét:

Semaphores có thể được sử dụng để giải quyết bất kỳ một bài toán hay vấn đề đồng bộ truyền thống nào

 Tuy nhiên chúng có một số nhược điểm

động đồng bộ nên có thể truy nhập bất kỳ đâu trong hệ thống  khó kiểm soát

o Không có sự liên kết chặt chẽ giữa semaphore và dữ liệu mà được nó điều khiển.

o Được sử dụng đồng thời cho cả việc loại trừ xung đột (mutual exclusion) và hoạt động đồng bộ cho các tác vụ (scheduling)

5.3.2 Monitor

Monitor là một ngôn ngữ lập trình được xây dựng để điều khiển việc truy nhập vào vùng dữ liệu chia sẻ trong hoạt động của hệ thống. Mã chương trình đồng bộ được bổ sung vào trong bộ biên dịch và thực thi khi chạy chương trình.

Monitor là một modul đóng gói

 Các cấu trúc dữ liệu được chia sẻ

 Các thủ tục hoạt động thao tác trên các cấu trúc dữ liệu chia sẻ

 Đồng bộ các luồng thực thi đồng thời mà có thể kích hoạt các thủ tục trong hoạt động hệ thống

Monitor có thể bảo vệ dữ liệu khỏi sự truy nhập không có cấu trúc. Nó đảm bảo rằng các luồng truy nhập vào dữ liệu thông qua các thủ tục tương tác theo những cách hợp pháp và có kiểm soát.

Monitor đảm bảo loại trừ xung đột

 Chỉ có một luồng có thể thực thi bất kỳ thủ tục nào tại mỗi một thời điểm (luồng trong monitor)

 Nếu có một luồng đang thực thi bên trong một monitor nó sẽ khoá các luồng khác muốn vào, do đó monitor cũng phải có một hàng đợi.

Một phần của tài liệu 525 đề cương bài giảng hệ thống nhúng bùi trung thành, 119 trang (Trang 91 - 95)

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

(120 trang)
w