1. Trang chủ
  2. » Công Nghệ Thông Tin

Bài giảng Lập trình đồng thời và phân tán: Bài 2 - Lê Nguyễn Tuấn Thành

34 92 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 34
Dung lượng 3,63 MB

Nội dung

Bài giảng Lập trình đồng thời và phân tán - Bài 2: Bài toán loại trừ lẫn nhau cung cấp cho người học các kiến thức: Bài toán loại trừ lẫn nhau trong những hệ thống chia sẻ bộ nhớ, giải pháp cho bài toán loại trừ lẫn nhau. Mời các bạn cùng tham khảo.

LẬP TRÌNH ĐỒNG THỜI & PHÂN TÁN BÀI 2: BÀI TOÁN LOẠI TRỪ LẪN NHAU Giảng viên: Lê Nguyễn Tuấn Thành Email: thanhlnt@tlu.edu.vn NỘI DUNG Bài toán loại trừ lẫn hệ thống chia sẻ nhớ Giải pháp cho toán loại trừ lẫn Bài giảng có sử dụng hình vẽ sách “Concurrent and Distributed Computing in Java, Vijay K Garg, University of Texas, John Wiley & Sons, 2005” Thách thức chương trình đồng thời ▪ Đồng thực thi luồng khác ▪ Cho phép luồng giao tiếp với thông qua nhớ chia sẻ Phần Bài toán loại trừ lẫn Mutual Exclusion Problem - Mutex “Lost update” Problem (1) ▪ Nguyên nhân: Race condition ▪ Xét tình huống: ▪ Có biến chia sẻ x với giá trị ban đầu ▪ Có hai luồng T0 T1 tăng giá trị x lên ▪ Liệu giá trị x sau thực thi T0 T1 2? “Lost update” Problem (2) Luồng T0 Luồng T1 Đọc giá trị x vào ghi (giá trị đọc: 0) Tăng ghi (1) Ghi giá trị ghi ngược lại x (x=1) Đọc giá trị x vào ghi (giá trị đọc: 1) Tăng ghi (2) Ghi giá trị ghi ngược lại x (x=2) “Lost update” Problem (3) Luồng T0 Luồng T1 Đọc giá trị x vào ghi (giá trị đọc: 0) Tăng ghi (1) Đọc giá trị x vào ghi (giá trị đọc: 0) Tăng ghi (1) Ghi giá trị ghi ngược lại x (x=1) Ghi giá trị ghi ngược lại x (x=1) Làm để tránh vấn đề mát liệu? ▪ Câu lệnh x = x +1 phải thực thi cách nguyên tử (atomically) ▪ Mở rộng ra, phần mã cần thi thực cách ngun tử phần mã gọi là: khu vực quan trọng (Critical Region - CR) hay phần quan trọng (Critical Section - CS) ▪ Cho ví dụ CS ??? Bài tốn loại trừ lẫn (Mutex) ▪ Là toán nhằm đảm bảo khu vực quan trọng (CR/CS) luồng phải thực thi theo cách nguyên tử ▪ Là tốn tính toán đồng thời Giao diện cho Bài toán Mutex ▪ Định nghĩa giao diện Lock để đồng việc truy cập khu vực quan trọng (CR/CS) luồng 10 Deadlock ▪ Thread 1: locks resource A, waits for resource B ▪ Thread 2: locks resource B, waits for resource A 20 Thuật toán 3: Luân phiên chặt chẽ ▪ Cài đặt khắc phục vấn đề lưu vết luồng thực thay đổi biến chia sẻ, xảy cài đặt ▪ Cài đặt dựa việc kiểm tra giá trị biến chia sẻ turn ▪ Một luồng đợi đến lượt để vào CS Khi khỏi CS, đặt lại giá trị biến turn thành 1-i 21 22 ▪ Cài đặt bảo đảm loại trừ lẫn ! ▪ Cài đặt đảm bảo Đánh giá thuật toán hai luồng cố gắng để vào CS, số hai luồng vào CS thành công ▪ Tuy nhiên, cài đặt phát sinh vấn đề khác ▪ Cả luồng phải luân phiên để vào CS ! ▪ Do đó, sau luồng T0 khỏi CS, T0 khơng thể vào CS luồng T1 vào CS thay đổi lại giá trị biến turn ! ▪ Nếu T1 không quan tâm tới việc vào CS, T0 bị tắc lại vơ hạn phải đợi P1 ! 23 Thuật toán Peterson (1) ▪Kết hợp cách tiếp cận trước để giải tốn mutex hệ thống có luồng hoạt động đồng thời ▪Trong thuật toán này, lưu giữ cờ/bit, wantCS[0] wantCS[1], cài đặt 2, biến turn cài đặt 24 25 Loại trừ lẫn (mutual exclusion) ▪ Cả hai luồng Đánh giá thuật toán Peterson CS thời điểm Tiến độ (progress) ▪ Nếu hai luồng cố gắng vào CS khơng có luồng bên CS, luồng vào CS thành cơng Khơng chết đói (starvation-freedom) ▪ Nếu luồng cố gắng vào CS, cuối phải vào CS 26 Trường hợp N luồng (N>2) 27 Thuật toán Bakery Lamport (1) ▪ Ý tưởng tương tự cách tiệm bánh phục vụ khách hàng ▪ Mỗi khách hàng đến tiệm bánh phát cho số hiệu ▪ Tại thời điểm, tiệm bánh phục vụ khách hàng giữ số nhỏ 28 Thuật toán Bakery Lamport (2) ▪ Một luồng Ti phải qua bước trước vào CS Bước 1: gọi doorway ▪ Ti yêu cầu chọn số ▪ Ti đọc số tất luồng khác chọn số lớn số lớn mà đọc Bước 2: kiểm tra điều kiện để vào CS ▪ Với luồng Tj khác, Ti kiểm tra liệu Tj có doorway khơng Nếu Tj doorway, Ti phải đợi cho Tj khỏi doorway ▪ Ti phải đợi cho number[j] (number[i], i) < (number[j], j) 29 Thuật toán Bakery Lamport Tại phải kiểm tra: number[j] == number[i] 30 && j < i ? ▪ Thuật toán thỏa mãn Đánh giá thuật toán Bakery loại trừ lẫn ▪ Thuật toán thỏa mãn điều kiện khơng chết đói ▪ Do luồng đợi để vào CS cuối có giữ số nhỏ khác thời điểm ▪ Khi đó, luồng vào CS thành cơng ! 31 Đánh giá thuật toán Bakery: Nhược điểm ▪ Thuật tốn ln đòi hỏi thời gian O(N) cho luồng muốn lấy khóa (lock) khơng có tranh chấp ▪ Thuật tốn đòi hỏi luồng sử dụng dấu thời gian (timestamps), i.e số id, với giá trị không bị giới hạn 32 Lớp ReentrantLock myLock.lock(); // Một đối tượng ReentrantLock try { } finally { myLock.unlock(); // Đảm bảo lock khoá lại ngoại lệ ném } 33 Tài liệu tham khảo ▪ Concurrent and Distributed Computing in Java, Vijay K Garg, University of Texas, John Wiley & Sons, 2005 ▪ Tham khảo: ▪ Principles of Concurrent and Distributed Programming, M Ben-Ari, Second edition, 2006 ▪ Foundations of Multithreaded, Parallel, and Distributed Programming, Gregory R Andrews, University of Arizona, Addison-Wesley, 2000 ▪ The SR Programming Language: Concurrency in Practice, Benjamin/Cummings, 1993 ▪ Xử lý song song phân tán, Đoàn văn Ban, Nguyễn Mậu Hân, Nhà xuất Khoa học Kỹ thuật, 2009 34 ... lượt để vào CS Khi khỏi CS, đặt lại giá trị biến turn thành 1-i 21 22 ▪ Cài đặt bảo đảm loại trừ lẫn ! ▪ Cài đặt đảm bảo Đánh giá thuật toán hai luồng cố gắng để vào CS, số hai luồng vào CS thành. .. CS thời điểm Tiến độ (progress) ▪ Nếu hai luồng cố gắng vào CS khơng có luồng bên CS, luồng vào CS thành cơng Khơng chết đói (starvation-freedom) ▪ Nếu luồng cố gắng vào CS, cuối phải vào CS 26 ... Wiley & Sons, 20 05” Thách thức chương trình đồng thời ▪ Đồng thực thi luồng khác ▪ Cho phép luồng giao tiếp với thông qua nhớ chia sẻ Phần Bài toán loại trừ lẫn Mutual Exclusion Problem - Mutex “Lost

Ngày đăng: 15/05/2020, 23:02

TỪ KHÓA LIÊN QUAN