tailieunhanh - Bài giảng Hệ điều hành: Chương 4 - ThS. Nguyễn Thị Hải Bình

Chương 4 trình bày về "Tương tranh và đồng bộ". Nội dung cụ thể của chương này gồm có: Các khái niệm cơ bản; Độc quyền truy xuất – giải pháp phần mềm; Đồng bộ hóa – Giải pháp phần cứng; Giải pháp đồng bộ hóa cơ bản. . | Bài giảng Hệ điều hành: Chương 4 - ThS. Nguyễn Thị Hải Bình TƯƠNG TRANH VÀ ĐỒNG BỘ ThS. Nguyễn Thị Hải Bình Khoa CNTT, ĐH Giao thông vận tải Email: calmseahn@ Website: VÍ DỤ VỀ TƯƠNG TRANH 2 TƯƠNG TRANH VÀ ĐỒNG BỘ • Race condition • Thuật ngữ • Tranh đoạt điều khiển • Tình huống tương tranh • Xảy ra khi • Nhiều tiến trình cùng thao tác trên dữ liệu chung và kết quả các thao tác đó phụ thuộc vào thứ tự thực hiện của các tiến trình • Process synchronization • Thuật ngữ: đồng bộ hoá các tiến trình • Để tránh các tình huống tương tranh, các tiến trình cần được đồng bộ theo một phương thức nào đó 3 BÀI TOÁN SẢN XUẤT – TIÊU THỤ • Thuật ngữ • The producer – consumer problem • Yêu cầu của bài toán • Tiến trình sản xuất (producer process) tạo ra thông tin • Còn tiến trình tiêu thụ (consumer process) sử dụng thông tin được tạo ra • Bộ đệm: • Chứa thông tin tạo ra bởi tiến trình sản xuất • Tiến trình tiêu thụ lấy thông tin từ bộ đệm để sử dụng • Bộ đệm cho phép 2 tiến trình thực thi đồng thời • Vấn đề • Tiến trình tiêu thụ không sử dụng thông tin chưa được tạo ra • Nếu bộ đệm rỗng thì tiến trình tiêu thụ phải chờ • Nếu bộ đệm đầy thì tiến trình sản xuất phải chờ 4 KHAI BÁO BIẾN 5 TIẾN TRÌNH SẢN XUẤT item newItem; while( true ) { /* Produce an item and store it in newItem */ newItem = makeNewItem( . . . ); /* Wait for space to become available */ while( counter == BUFFER_SIZE) ; /* Do nothing */ /* And then store the item and repeat the loop. */ buffer[in] = newItem; in = (in + 1) % BUFFER_SIZE; counter++; } 6 TIẾN TRÌNH TIÊU THỤ item usedItem; while( true ) { /* Wait for an item to become available */ while( counter == 0) ; /* Do nothing */ /* Get the next available item */ usedItem = buffer[out]; out = (out+1) % BUFFER_SIZE; counter--; /* Consume the item in usedItem (do something with it) */ } 7 TƯƠNG TRANH? • Lệnh “counter++” và .

TỪ KHÓA LIÊN QUAN