![Phân tích tư tưởng của nhân dân qua đoạn thơ: Những người vợ nhớ chồng… Những cuộc đời đã hóa sông núi ta trong Đất nước của Nguyễn Khoa Điềm](https://timtailieu.net/upload/document/136415/phan-tich-tu-tuong-cua-nhan-dan-qua-doan-tho-039-039-nhung-nguoi-vo-nho-chong-nhung-cuoc-doi-da-hoa-song-nui-ta-039-039-trong-dat-nuoc-cua-nguyen-khoa-136415.jpg)
Bài giảng Lập trình đồng thời và phân tán: Bài 3 - Lê Nguyễn Tuấn Thành
Số trang: 49
Loại file: pdf
Dung lượng: 3.83 MB
Lượt xem: 12
Lượt tải: 0
Xem trước 5 trang đầu tiên của tài liệu này:
Thông tin tài liệu:
Bài giảng "Lập trình đồng thời và phân tán - Bài 3: Những cơ sở đồng bộ hoá" có cấu trúc gồm 3 phần cung cấp cho người học các kiến thức: Busy-waiting problem, semaphore, monitor. Mời các bạn cùng tham khảo nội dung chi tiết.
Nội dung trích xuất từ tài liệu:
Bài giảng Lập trình đồng thời và phân tán: Bài 3 - Lê Nguyễn Tuấn Thành LẬPTRÌNH BÀI 3:ĐỒNG NHỮNG CƠ SỞ THỜI ĐỒNG BỘ HOÁ & 1PHÂN TÁN Giảng viên: Lê Nguyễn Tuấn Thành Email: thanhlnt@tlu.edu.vnSynchonization primitives 2 NỘI DUNG1. Busy-waiting problem2. Semaphore3. Monitor Bài giảng có sử dụng hình vẽ trong cuốn sách “Concurrent and Distributed Computing in Java, Vijay K. Garg, University of Texas, John Wiley & Sons, 2005” 3Busy-waiting problem▪ Những giải pháp ở bài trước gặp một vấn đề chung: bận chờ (busy-wait) khi sử dụng vòng lặp while ▪ Khi một luồng không thể đi vào CS, nó sẽ liên lục kiểm tra điều kiện ở while ▪ Điều này khiến luồng không thể thực hiện các công việc khác => gây lãng phí chu trình CPU▪ Thay vì phải kiểm tra liên tục điều kiện vào CS, nếu một luồng chỉ kiểm tra khi điều kiện này trở thành true thì sẽ không lãng phí chu trình CPU 4Synchnization primitives▪ Những cơ sở đồng bộ hóa giúp giải quyết vấnđề bận chờ▪ Hai cấu trúc đồng bộ phổ biến: ▪ Semaphore do Dijkstra đề xuất, năm 1968 ▪ Monitor được phát minh bởi P. B. Hansen và C. A. R. Hoare, năm 1972 56 Phần 2. Semaphore Semaphores were invented by Edsger Dijkstra, 1968Source: https://www.e-reading.club/chapter.php/102147/92/Li%2C_Yao_-_Real-Time_Concepts_for_Embedded_Systems.html 78 Semaphore nhị phân (1) P():▪ Một biến value if (value == false) { kiểu boolean Thêm bản thân luồng Được thực vào hàng đợi và khóa lại; thi nguyên▪ Một hàng đợi các } tử tiến trình bị khóa value = false;▪ Hai thao tác V(): nguyên tử: P() và value = true; V() if (hàng đợi không rỗng) { Đánh thức một luồng Được thực bất kỳ trong hàng đợi; thi nguyên } tử 910Semaphore nhị phân (2)Ví dụ cài đặt Phương thức myWait() sẽ khóa luồng hiện tại và chèn nó vào trong hàng đợi các luồng bị khóa 11Semaphore nhị phâncho Bài toán Mutex 12Semaphore đếm (1) 13Semaphore đếm (2)Ví dụ cài đặt 14 Tìm hiểu: java.util.concurrent.SemaphoreSử dụng Semaphorecho một số bài toánđồng bộ 15 Bài toán 1: Nhà sản xuất & Người tiêu thụ (1)▪ Hai luồng: 1. Luồng 1: Producer 2. Luồng 2: Consumer▪ Bộ đệm chia sẻ là mộtmảng vòng tròn có kíchthước size, gồm: ▪ Hai con trỏ inBuf và outBuf ▪ Biến count để lưu tổng số phần tử hiện tại 16Bài toán 1: Nhà sản xuất& Người tiêu thụ (2)▪ Ngoài việc đảm bảo loại trừ lẫn nhau, bài toán này có thêm 2 rằng buộc đồng bộ có điều kiện: 1. Luồng sản xuất chỉ thực hiện thêm 1 phần tử vào cuối bộ đệm nếu: bộ đệm không đầy 2. Luồng tiêu thụ chỉ thực hiện lấy 1 phần tử khỏi của bộ đệm nếu: bộ đệm không rỗng▪ Bộ đệm sẽ đầy nếu producer thêm phần tử với tốc độ lớn hơn tốc độ lấy phần tử của consumer▪ Bộ đệm sẽ rỗng nếu … ? 17 Lớp BoundedBuffer Sử dụng mutex Semaphore1819Bài toán 2: Người đọc &Người ghi▪ Phối hợp truy cập tới một cơ sở dữ liệu chiasẻ giữa nhiều người đọc và nhiều người ghi▪ Các rằng buộc đồng bộ: 1. Rằng buộc đọc-ghi: Một người đọc và một người ghi không được truy cập đồng thời vào CSDL chia sẻ 2. Rằng buộc ghi-ghi: Hai người ghi không được truy cập đồng thời vào CSDL chia sẻ 3. Nhiều người đọc có thể đồng thời truy cập CSDL chia sẻ 20 ...
Nội dung trích xuất từ tài liệu:
Bài giảng Lập trình đồng thời và phân tán: Bài 3 - Lê Nguyễn Tuấn Thành LẬPTRÌNH BÀI 3:ĐỒNG NHỮNG CƠ SỞ THỜI ĐỒNG BỘ HOÁ & 1PHÂN TÁN Giảng viên: Lê Nguyễn Tuấn Thành Email: thanhlnt@tlu.edu.vnSynchonization primitives 2 NỘI DUNG1. Busy-waiting problem2. Semaphore3. Monitor Bài giảng có sử dụng hình vẽ trong cuốn sách “Concurrent and Distributed Computing in Java, Vijay K. Garg, University of Texas, John Wiley & Sons, 2005” 3Busy-waiting problem▪ Những giải pháp ở bài trước gặp một vấn đề chung: bận chờ (busy-wait) khi sử dụng vòng lặp while ▪ Khi một luồng không thể đi vào CS, nó sẽ liên lục kiểm tra điều kiện ở while ▪ Điều này khiến luồng không thể thực hiện các công việc khác => gây lãng phí chu trình CPU▪ Thay vì phải kiểm tra liên tục điều kiện vào CS, nếu một luồng chỉ kiểm tra khi điều kiện này trở thành true thì sẽ không lãng phí chu trình CPU 4Synchnization primitives▪ Những cơ sở đồng bộ hóa giúp giải quyết vấnđề bận chờ▪ Hai cấu trúc đồng bộ phổ biến: ▪ Semaphore do Dijkstra đề xuất, năm 1968 ▪ Monitor được phát minh bởi P. B. Hansen và C. A. R. Hoare, năm 1972 56 Phần 2. Semaphore Semaphores were invented by Edsger Dijkstra, 1968Source: https://www.e-reading.club/chapter.php/102147/92/Li%2C_Yao_-_Real-Time_Concepts_for_Embedded_Systems.html 78 Semaphore nhị phân (1) P():▪ Một biến value if (value == false) { kiểu boolean Thêm bản thân luồng Được thực vào hàng đợi và khóa lại; thi nguyên▪ Một hàng đợi các } tử tiến trình bị khóa value = false;▪ Hai thao tác V(): nguyên tử: P() và value = true; V() if (hàng đợi không rỗng) { Đánh thức một luồng Được thực bất kỳ trong hàng đợi; thi nguyên } tử 910Semaphore nhị phân (2)Ví dụ cài đặt Phương thức myWait() sẽ khóa luồng hiện tại và chèn nó vào trong hàng đợi các luồng bị khóa 11Semaphore nhị phâncho Bài toán Mutex 12Semaphore đếm (1) 13Semaphore đếm (2)Ví dụ cài đặt 14 Tìm hiểu: java.util.concurrent.SemaphoreSử dụng Semaphorecho một số bài toánđồng bộ 15 Bài toán 1: Nhà sản xuất & Người tiêu thụ (1)▪ Hai luồng: 1. Luồng 1: Producer 2. Luồng 2: Consumer▪ Bộ đệm chia sẻ là mộtmảng vòng tròn có kíchthước size, gồm: ▪ Hai con trỏ inBuf và outBuf ▪ Biến count để lưu tổng số phần tử hiện tại 16Bài toán 1: Nhà sản xuất& Người tiêu thụ (2)▪ Ngoài việc đảm bảo loại trừ lẫn nhau, bài toán này có thêm 2 rằng buộc đồng bộ có điều kiện: 1. Luồng sản xuất chỉ thực hiện thêm 1 phần tử vào cuối bộ đệm nếu: bộ đệm không đầy 2. Luồng tiêu thụ chỉ thực hiện lấy 1 phần tử khỏi của bộ đệm nếu: bộ đệm không rỗng▪ Bộ đệm sẽ đầy nếu producer thêm phần tử với tốc độ lớn hơn tốc độ lấy phần tử của consumer▪ Bộ đệm sẽ rỗng nếu … ? 17 Lớp BoundedBuffer Sử dụng mutex Semaphore1819Bài toán 2: Người đọc &Người ghi▪ Phối hợp truy cập tới một cơ sở dữ liệu chiasẻ giữa nhiều người đọc và nhiều người ghi▪ Các rằng buộc đồng bộ: 1. Rằng buộc đọc-ghi: Một người đọc và một người ghi không được truy cập đồng thời vào CSDL chia sẻ 2. Rằng buộc ghi-ghi: Hai người ghi không được truy cập đồng thời vào CSDL chia sẻ 3. Nhiều người đọc có thể đồng thời truy cập CSDL chia sẻ 20 ...
Tìm kiếm theo từ khóa liên quan:
Lập trình đồng thời Lập trình phân tán Kỹ thuật lập trình Distributed programming Busy waiting problem Cơ sở đồng bộ hoáTài liệu liên quan:
-
Kỹ thuật lập trình trên Visual Basic 2005
148 trang 281 0 0 -
NGÂN HÀNG CÂU HỎI TRẮC NGHIỆM THIẾT KẾ WEB
8 trang 225 0 0 -
Giới thiệu môn học Ngôn ngữ lập trình C++
5 trang 207 0 0 -
Bài giảng Nhập môn về lập trình - Chương 1: Giới thiệu về máy tính và lập trình
30 trang 179 0 0 -
Luận văn: Nghiên cứu kỹ thuật giấu tin trong ảnh Gif
33 trang 156 0 0 -
Báo cáo thực tập Công nghệ thông tin: Lập trình game trên Unity
27 trang 122 0 0 -
Giáo trình về phân tích thiết kế hệ thống thông tin
113 trang 114 0 0 -
LUẬN VĂN: Tìm hiểu kỹ thuật tạo bóng cứng trong đồ họa 3D
41 trang 111 0 0 -
Bài giảng Kỹ thuật lập trình - Chương 10: Tổng kết môn học (Trường Đại học Bách khoa Hà Nội)
67 trang 108 0 0 -
Giáo trình Nhập môn lập trình VB6: Phần 2
184 trang 98 0 0