440 likes | 754 Views
Chương 3. Quản lý các quá trình đồng thời. Mục đích và yêu cầu. Mục đích: Hiểu được các quá trình thực thi đồng thời và “Critical-Section” Hiểu được các nguyên lý cơ bản trong giải quyết tranh chấp bằng phần mềm, phần cứng và Semaphore. Yêu cầu:
E N D
Chương 3 Quản lý các quá trình đồng thời Khoa Công Nghệ Thông Tin – Đại Học Công Nghiệp TP Hồ Chí Minh
Mục đích và yêu cầu Mục đích: • Hiểu được các quá trình thực thi đồng thời và “Critical-Section” • Hiểu được các nguyên lý cơ bản trong giải quyết tranh chấp bằng phần mềm, phần cứng và Semaphore. Yêu cầu: • Áp dụng lý thuyết để thực hiện được một số bài tập liên quan Khoa Công Nghệ Thông Tin – Đại Học Công Nghiệp TP Hồ Chí Minh
Nội dung • Khái niệm cơ bản • Bài toán “ Critical-Section” • Các giải pháp phần mềm • Đồng bộ bằng phần cứng • Semaphore Khoa Công Nghệ Thông Tin – Đại Học Công Nghiệp TP Hồ Chí Minh
Khái niệm cơ bản Khoa Công Nghệ Thông Tin – Đại Học Công Nghiệp TP Hồ Chí Minh
Bounded Buffer (t,t) Khoa Công Nghệ Thông Tin – Đại Học Công Nghiệp TP Hồ Chí Minh
Race Condition Khoa Công Nghệ Thông Tin – Đại Học Công Nghiệp TP Hồ Chí Minh
Ví dụ về Condition Khoa Công Nghệ Thông Tin – Đại Học Công Nghiệp TP Hồ Chí Minh
Critical Section Khoa Công Nghệ Thông Tin – Đại Học Công Nghiệp TP Hồ Chí Minh
Critical Section và Mutual Exclusion Khoa Công Nghệ Thông Tin – Đại Học Công Nghiệp TP Hồ Chí Minh
Cấu trúc tổng quát Khoa Công Nghệ Thông Tin – Đại Học Công Nghiệp TP Hồ Chí Minh
Ràng buộc của bài toán tranh chấp Khoa Công Nghệ Thông Tin – Đại Học Công Nghiệp TP Hồ Chí Minh
Phân loại giải pháp Khoa Công Nghệ Thông Tin – Đại Học Công Nghiệp TP Hồ Chí Minh
Giải pháp phần mềm Khoa Công Nghệ Thông Tin – Đại Học Công Nghiệp TP Hồ Chí Minh
Giải thuật 1 Khoa Công Nghệ Thông Tin – Đại Học Công Nghiệp TP Hồ Chí Minh
Giải thuật 1(t.t) Khoa Công Nghệ Thông Tin – Đại Học Công Nghiệp TP Hồ Chí Minh
Giải thuật 2 Khoa Công Nghệ Thông Tin – Đại Học Công Nghiệp TP Hồ Chí Minh
Giải thuật 3 (Peterson) Khoa Công Nghệ Thông Tin – Đại Học Công Nghiệp TP Hồ Chí Minh
Giải thuật Peterson-2 process Khoa Công Nghệ Thông Tin – Đại Học Công Nghiệp TP Hồ Chí Minh
Giải thuật 3: Tính đúng đắn Khoa Công Nghệ Thông Tin – Đại Học Công Nghiệp TP Hồ Chí Minh
Giải thuật 3: Tính đúng đắn (t.t) Khoa Công Nghệ Thông Tin – Đại Học Công Nghiệp TP Hồ Chí Minh
Trường hợp process bị “chết” Khoa Công Nghệ Thông Tin – Đại Học Công Nghiệp TP Hồ Chí Minh
Giải thuật Bakery: N process Khoa Công Nghệ Thông Tin – Đại Học Công Nghiệp TP Hồ Chí Minh
Giải thuật Bakery: N process(t.t) Khoa Công Nghệ Thông Tin – Đại Học Công Nghiệp TP Hồ Chí Minh
Từ software đến hardware Khoa Công Nghệ Thông Tin – Đại Học Công Nghiệp TP Hồ Chí Minh
Cấm ngắt Khoa Công Nghệ Thông Tin – Đại Học Công Nghiệp TP Hồ Chí Minh
Dùng các lệnh đặc biệt Khoa Công Nghệ Thông Tin – Đại Học Công Nghiệp TP Hồ Chí Minh
Lệnh test – and – set(TSL) Khoa Công Nghệ Thông Tin – Đại Học Công Nghiệp TP Hồ Chí Minh
Lệnh test – and – set(t.t) Khoa Công Nghệ Thông Tin – Đại Học Công Nghiệp TP Hồ Chí Minh
Thảo luận lệnh test-and-set • Cũng giống như các giải pháp phần cứng khác. TSL giảm nhẹ công việc lập trình để giải quyết vấn đề, nhưng lại không dễ dàng để cài đặt TLS sao cho được xử lý một cách không thể phân chia, nhất là trên máy với cấu hình nhiều bộ xử lý. • Các giải pháp buộc quá trình phải liên tục kiểm tra điều kiện để phát hiện thời điểm thích hợp được vào CS như thế được gọi các giải pháp “ busy waiting”. Việc kiểm tra tốn nhiều thời gian sử dụng CPU do vậy quá trình đang chờ vẫn chiếm dụng CPU. Xu hướng giải quyết vấn đề đồng bộ hoá nên tránh các giải pháp “ busy waiting”. Khoa Công Nghệ Thông Tin – Đại Học Công Nghiệp TP Hồ Chí Minh
Giải pháp “SLEEP and WAKEUP” Để loại bỏ các bất tiện của “busy waiting”. Chúng ta có thể tiếp cận theo hướng cho một quá trình chưa đủ cond vào CS chuyển sang trạng thái blocked, từ bỏ quyền sử dụng CPU. Để phục vụ điều này cần hai thủ tục do Os cung cấp là SLEEP and WAKEUP • SLEEP : tạm dừng hoạt của quá trình (Blocked) gọi nó và chờ đến khi được một quá trình khác “đánh thức”. • WAKEUP: nhận một tham số duy nhất: quá trình sẽ được tái kích hoạt (đặt về trạng thái ready). Khoa Công Nghệ Thông Tin – Đại Học Công Nghiệp TP Hồ Chí Minh
Cấu trúc chương trình trong SLEEP and WAKEUP Int busy // 1 nếu CS bị chiếm Int blocked // số lượng quá trình đang bị khoá While {true} { if (busy) { blocked = blocked +1; sleep(); } else busy =1; critical-section(); busy =0; if (blocked) { wakeup(process); blocked = blocked -1; } Non critical- section(); } Khoa Công Nghệ Thông Tin – Đại Học Công Nghiệp TP Hồ Chí Minh
Semaphore • Được Dijkstra đề xuất vào năm 1965. một semaphore s là một biến cố có các thuộc tính sau: • Một giá trị nguyên dương e(s) • Một hàng đợi f(s) lưu danh sách các quá trình đang bị khoá (chờ) trên semaphore s • chỉ có hai thao tác được định nghĩa trên semaphore • Down(s): giảm giá trị của semaphore đi 1 nếu semaphore có giá trị e(s)>0, và tiếp tục xử lý. Ngược lại, nếu e(s)<=0 quá trình đến khi e(s)>0 • Up(s): tăng giá trị của semaphore s lên 1 nếu có 1 hoặc nhiều quá trình đang chờ trên semaphore s, bi khoá bởi thao tác down. Thì hệ thống sẽ chọn một trong các quá trình này để kết thúc thao tác Down và cho tiếp tục xử lý Khoa Công Nghệ Thông Tin – Đại Học Công Nghiệp TP Hồ Chí Minh
Hiện thực Semaphore Khoa Công Nghệ Thông Tin – Đại Học Công Nghiệp TP Hồ Chí Minh
Hiện thực Semaphore (t.t) Khoa Công Nghệ Thông Tin – Đại Học Công Nghiệp TP Hồ Chí Minh
Hiện thực Semaphore (t.t) Khoa Công Nghệ Thông Tin – Đại Học Công Nghiệp TP Hồ Chí Minh
Hiện thực Mutex với Semephore Khoa Công Nghệ Thông Tin – Đại Học Công Nghiệp TP Hồ Chí Minh
Đồng bộ process bằng Semaphore Khoa Công Nghệ Thông Tin – Đại Học Công Nghiệp TP Hồ Chí Minh
Nhận xét Khoa Công Nghệ Thông Tin – Đại Học Công Nghiệp TP Hồ Chí Minh
Nhận xét (t.t) Khoa Công Nghệ Thông Tin – Đại Học Công Nghiệp TP Hồ Chí Minh
Deadlock và Starvation Khoa Công Nghệ Thông Tin – Đại Học Công Nghiệp TP Hồ Chí Minh
Các loại semaphore Khoa Công Nghệ Thông Tin – Đại Học Công Nghiệp TP Hồ Chí Minh
Hiện thực counting semaphore (S) bằng Binary Semaphore • Cấu trúc dữ liệu binary-semaphore S1, S2; Int C; • Khởi tạo: S1 = 1 S2 = 0 C = initial value of semaphore S Khoa Công Nghệ Thông Tin – Đại Học Công Nghiệp TP Hồ Chí Minh
Tác vụ wait(S) Wait(S1); C--; If (C<0) { Signal(S1); Wait(S2); } Signal(S1); Tác vụ signal(S) Wait(S1); C++ If (C<=0) Signal(S2): Else Signal(S1); Hiện thực counting semaphore (S) bằng Binary Semaphore (t.t) Khoa Công Nghệ Thông Tin – Đại Học Công Nghiệp TP Hồ Chí Minh
Câu hỏi • Nắm được các giải thuật và semaphore Khoa Công Nghệ Thông Tin – Đại Học Công Nghiệp TP Hồ Chí Minh