hdh10 1

61 193 0
hdh10 1

Đ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

KHOA CƠNG NGHỆ THƠNG TIN TRƯỜNG ĐẠI HỌC BÁCH KHOA TP HỒ CHÍ MINH HỆ ĐIỀU HÀNH Giao tiếp tiến trình Một số khái niệm bản* Tiến trình độc lập khơng ảnh hưởng khơng bị ảnh hưởng việc thực thi tiến trình khác Tiến trình hợp tác (khơng độc lập) ảnh hưởng bị ảnh hưởng việc thực thi tiến trình khác Ưu điểm việc hợp tác tiến trình: Chia sẻ thơng tin Tăng tốc tính tốn (xử lý song song) Tính module hóa Tiện lợi Một số khái niệm bản* Các tiến trình sử dụng cập nhập liệu chia sẻ biến, file sở liệu dùng chung Thao tác ghi phải độc lập đơi để ngăn ngừa tình trạng đụng độ, dẫn đến tính khơng tồn vẹn liệu Các miền găng dùng để cung cấp tồn vẹn liệu Một tiến trình đòi hỏi miền găng phải khơng bị chờ mãi: deadlock Đụng độ (race condition) Race condition: tình mà nhiều tiến trình truy cập thao tác liệu chia sẻ cách đồng thời Dữ liệu cuối phụ thuộc vào tiến trình cuối Để ngăn ngừa đụng độ, tiến trình đồng hành phải đồng hóa Đụng độ (race condition) Miền găng (critical section) n tiến trình đấu tranh với để sử dụng số liệu Mỗi tiến trình có đoạn mã, gọi miền găng (critical section (CS)), liệu chia sẻ truy cập Vấn đề: bảo đảm tiến trình thực thi miền găng nó, khơng có tiến trình khác quyền thực thi miền găng Ngữ cảnh miền găng Khi tiến trình thi hành đoạn mã thao tác liệu chia sẻ (hay tài ngun), nói tiến trình miền găng Việc thực thi miền găng phải có tính nhất: thời điểm nào, có tiến trình quyền thực thi miền găng (ngay với nhiều xử lý) Vì tiến trình phải u cầu quyền trước vào miền găng Ngữ cảnh miền găng Đoạn mã thể u cầu gọi làEntry Section (ES) Miền găng (CS) theo sau Leave/Exit Section (LS) Phần đoạn mã lại Remainder Section (RS) Vấn đề miền găng thiết kế giao thức mà tiến trình sử dụng để hành động chúng khơng phụ thuộc vào thứ tự mà thi hành chúng chen vào Giải pháp cho vấn đề miền găng Có u cầu mà giải pháp cần phải thỏa mãn: Mutual Exclusion: khơng có tiến trình miền găng lúc Progress: Một tiến trình bên ngồi miền găng khơng ngăn cản tiến trình khác vào miền găng Bounded Waiting: khơng có tiến trình phải chờ vơ hạn để vào miền găng Chỉ cần ba điều kiện sai giải pháp đưa sai Cấu trúc tiến trình Cấu trúc tổng qt tiến trình Pi (Pj) { entry section critical section leave section remainder section } while (1); Lưu ý: Các tiến trình chia sẻ biến dùng chung để đồng hóa hoạt động chúng 10 Giải thuật kiểm tra trạng thái an toàn Tìm chuỗi an toàn Gọi Work Finish hai vector độ dài m n Khởi tạo Work := Available Finish[i] := false, i = 1,…, n Tìm i thỏa (a) Finish [i] = false (b) Needi ≤ Work (hàng thứ i Need) Nếu không tồn i vậy, đến bước Work := Work + Allocationi Finish[i] := true quay bước Nếu Finish[i] = true, i = 1,…, n, hệ thống trạng thái safe Thời gian chạy giải thuật O(m·n2) -8.47- Giải thuật cấp phát tài nguyên Gọi Requesti request vector process Pi Requesti [j] = k ⇔ Pi cần k instance tài nguyên Rj Nếu Requesti ≤ Needi đến bước Nếu không, báo lỗi process vượt yêu cầu tối đa Nếu Requesti ≤ Available qua bước Nếu không, Pi phải chờ tài nguyên không đủ để cấp phát -8.48- Giải thuật cấp phát tài nguyên (tt) Giả đònh cấp phát tài nguyên đáp ứng yêu cầu Pi cách cập nhật trạng thái hệ thống sau: Available := Available – Requesti Allocationi := Allocationi + Requesti Needi := Needi – Requesti p dụng giải thuật kiểm tra trạng thái an toàn lên trạng thái Nếu trạng thái safe tài nguyên cấp thực cho Pi Nếu trạng thái unsafe Pi phải đợi, • phục hồi trạng thái: Available := Available + Requesti Allocationi := Allocationi – Requesti Needi := Needi + Requesti -8.49- Ví dụ Có process P0 ,…, P4 Có loại tài nguyên: A (có 10 instance), B (5 instance) C (7 instance) Sơ đồ cấp phát hệ thống thời điểm T0 Allocation Max Available Need A B C A B C A B C A B C P0 3 P1 0 2 2 P2 0 P3 1 2 1 P4 0 3 -8.50- Vd (tt) Chuỗi an toàn Allocation Need Available ABC ABC A B C P0 010 743 3 P1 200 122 P2 302 600 P3 211 011 P4 002 431 7 10 10 -8.51- GT cấp phát tài nguyên – Ví dụ Yêu cầu (1, 0, 2) P1 có thỏa không? – Kiểm tra điều kiện Request1 ≤ Available: (1, 0, 2) ≤ (3, 3, 2) – Giả đònh thỏa yêu cầu, kiểm tra trạng thái có phải safe hay không Allocation Need Available A B C A B C A B C P0 3 P1 2 P2 0 P3 1 1 0 P4 – Trạng thái safe (chuỗi an toàn ), cấp phát tài nguyên cho P1 -8.52- Phát deadlock Chấp nhận xảy deadlock hệ thống, kiểm tra trạng thái hệ thống giải thuật phát deadlock Nếu có deadlock tiến hành phục hồi hệ thống Các giải thuật phát deadlock thường sử dụng mô hình RAG Hệ thống cấp phát tài nguyên khảo sát trường hợp sau Mỗi loại tài nguyên có thực thể (instance) Mỗi loại tài nguyên có nhiều thực thể -8.53- Mỗi loại tài nguyên có thực thể Sử dụng wait-for graph – Wait-for graph dẫn xuất từ RAG cách bỏ node biểu diễn tài nguyên ghép cạnh tương ứng Có cạnh từ Pi đến Pj ⇔ Pi chờ tài nguyên từ Pj P5 R1 R3 P5 R4 P1 P2 P3 R2 P4 R5 P1 P2 P3 P4 Một giải thuật kiểm tra có tồn chu trình wait-for graph hay không gọi đònh kỳ Giải thuật phát chu trình có thời gian chạy O(n 2), với n số đỉnh graph -8.54- Mỗi loại tài nguyên có nhiều thực thể Phương pháp dùng wait-for graph không áp dụng cho trường hợp loại tài nguyên có nhiều instance Các cấu trúc liệu dùng giải thuật phát deadlock • Available: vector độ dài m • • Allocation: ma trận n × m • • số instance sẵn sàng loại tài nguyên số instance loại tài nguyên cấp phát cho process Request: ma trận n × m • yêu cầu process • Request [i,j] = k ⇔ Pi yêu cầu thêm k instance Rj -8.55- Giải thuật phát deadlock Gọi Work Finish vector kích thước m n Khởi tạo: Work := Available i = 1, 2,…, n, Allocationi ≠ Finish[i] := false không Finish[i] := true Tìm i thỏa mãn: Finish[i] := false Requesti ≤ Work • Nếu không tồn i thế, đến bước thời gian chạy giả2i thuật O(m·n ) Work := Work + Allocationi Finish[i] := true quay bước Nếu Finish[i] = false, với i = 1,…, n, hệ thống trạng thái deadlock Hơn nữa, Finish[i] = false Pi bò deadlocked -8.56- Ví dụ • Hệ thống có trình P0 ,…, P4 loại tài nguyên: A (7 instance), B (2 instance), C (6 instance) Allocation Request Available A B C A B C A B C P0 0 0 0 P1 0 2 P2 3 0 P3 1 0 P4 0 0 Chạy giải thuật, tìm chuỗi với Finish[i] = true, i = 1,…, n, hệ thống không bò deadlocked -8.57- Ví dụ (tt) P2 yêu cầu thêm instance C Ma trận Request sau: P0 P1 P2 P3 P4 Request ABC 000 202 001 100 002 – Trạng thái hệ thống gì? Có thể thu hồi tài nguyên sở hữu process P0 không đủ đáp ứng yêu cầu process khác • Vậy tồn deadlock, bao gồm process P1, P2, P3, P4 -8.58- Deadlock Recovery Khi deadlock xảy ra, để phục hồi – báo người vận hành (operator) – hệ thống tự động phục hồi cách bẻ gãy chu trình deadlock: chấm dứt hay nhiều trình lấy lại tài nguyên từ hay nhiều trình -8.59- Deadlock Recovery: Chấm dứt trình Phục hồi hệ thống bò deadlock cách chấm dứt trình – Chấm dứt tất process bò deadlocked – Chấm dứt process không deadlock Sử dụng giải thuật phát deadlock để xác đònh deadlock hay không Dựa yếu tố để chấm dứt process? – – – – – – Độ ưu tiên process Thời gian thực thi process thời gian lại Loại tài nguyên mà process sử dụng Tài nguyên mà process cần thêm để hoàn tất công việc Số lượng processes cần chấm dứt Process interactive process hay batch process -8.60- Deadlock recovery: Lấy lại tài nguyên Lấy lại tài nguyên từ process, cấp phát cho process khác không deadlock Các vấn đề chiến lược thu hồi tài nguyên: – Chọn “nạn nhân” để tối thiểu chi phí (có thể dựa số tài nguyên sở hữu, thời gian CPU tiêu tốn, ) – Rollback: rollback process bò lấy lại tài nguyên trở trạng thái safe, bắt đầu process từ trạng thái Hệ thống cần lưu giữ số thông tin trạng thái process thực thi – Starvation: phải bảo đảm process luôn bò lấy lại tài nguyên deadlock xảy -8.61- [...]... Critical_Section(); turn =1; Remainder_Section(); Process P1: do while(turn! =1) ; Critical_Section(); turn=0; Remainder_Section(); while (1) ; while (1) ; Ví dụ: P0 có RS rất lớn và P1 có RS nhỏ Nếu turn=0, P0 được vào CS và sau đó thực thi vùng RS (turn =1) Đến P1 vào CS và sau đó thực thi RS (turn=0) và tìm cách vào CS một lần nữa nhưng yêu cầu bò từ chối !!! P1 phải chờ P0 !!! 13 Giải thuật 2 Biến chia... busy-waiting Alg 1 & 2, Peterson, Dekker, Bakery, TSL, Interrupt Giải pháp sleep and wake-up Semaphore Monitor 11 Giải thuật 1 Biến chia sẻ int turn; /* khởi đầu turn = 0 */ nếu turn = i ⇒ Pi được phép vào critical section Process Pi do { while (turn != i) ; critical section(); turn = j; remainder section(); } while (1) ; Thoả mãn mutual exclusion (1) Progress (2) & bounded-waiting (3) ? 12 Giải thuật 1 Process... cầu một thực thể của Rj : Pi đang giữ một thực thể của Rj : R j Pi Pi R j R j -8.27- Ví dụ về RAG R3 R1 P1 P3 P2 R2 R4 -8.28- Ví dụ về RAG (tt) R3 R1 P1 P3 P2 Deadlock xảy ra! R2 R4 -8.29- RAG và deadlock Ví dụ một RAG chứa chu trình nhưng không xảy ra deadlock: P4 có thể trả lại instance của R2 P1 R1 P2 R2 P3 P4 -8.30- RAG và deadlock (tt) RAG không chứa chu trình (cycle) ⇒ không có deadlock RAG chứa... nguyên và đang chờ tài nguyên mà process khác trong tập đang giữ Ví dụ 1 – Giả sử hệ thống có 2 file trên đóa – P1 và P2 mỗi process đang mở một file và yêu cầu mở file kia Ví dụ 2 – Semaphore A và B, khởi tạo bằng 1 P0 P1 wait (A); wait(B); wait (B); wait(A); -8.22- Mô hình hóa hệ thống Hệ thống gồm các loại tài nguyên, kí hiệu R1, R2,…, Rm , bao gồm: – CPU cycle, không gian bộ nhớ, thiết bò I/O, file,... 13 Giải thuật 2 Biến chia sẻ boolean flag[2]; /* khởi đầu flag [0] = flag [1] = false */ Nếu flag [i] = true ⇒ Pi sẵn sàng vào critical section Process Pi do { flag[i] = true; while (flag[j]) ; Critical_Section(); flag [i] = false; Remainder_Section(); } while (1) ; 14 Giải thuật 3 (Peterson) Biến chia sẻ: kết hợp cả giải thuật 1 và 2 Process Pi do { flag [i]= true; turn = j; while (flag [j] and turn... Remainder_Section(); } while (1) ; 15 Giải thuật Bakery: N process Trước khi vào CS, process Pi nhận một con số Process nào giữ con số nhỏ nhất thì được vào CS Trường hợp Pi và Pj cùng nhận được một chỉ số: Nếu i < j thì Pi được vào trước, ngược lại Pj được vào trước Khi ra khỏi CS, Pi đặt lại số của mình bằng 0 Cơ chế cấp số cho các process thường tạo các số theo cơ chế tăng dần, ví dụ 1, 2,3,3,3,3,4,5 16 Lệnh TSL (Test-and-Set... nguyên đó khi nó muốn 4 Circular wait: tồn tại một chu trình của các yêu cầu tài nguyên và tài nguyên đã được cấp phát P1 P2 -8.25- Resource Allocation Graph Resource allocation graph (RAG) là đồ thò có hướng, với tập đỉnh V và tập cạnh E – Tập đỉnh V gồm 2 loại: P = {P1, P2,…, Pn } R = {R1, R2,…, Rm } (Tất cả process trong hệ thống) (Tất cả tài nguyên trong hệ thống) – Tập cạnh E gồm 2 loại: Request edge:... lock = false; nProcess Pi while (1) { while (TestandSet(lock)) ; Critical_Section; lock = false; Remainder_Section; } 17 Semaphores Là một cơng cụ đồng bộ hóa được cung cấp bởi HĐH khơng đòi hỏi “busy waiting” Một semaphore S là một biến ngun mà ngồi lệnh khởi tạo ra, chỉ có thể được truy xuất thơng qua hai thao tác độc quyền truy xuất và ngun tố: wait(S) signal(S) 18 Semaphores Truy cập với 2 thao... sẵn sàng 19 Semaphores Định nghĩa cấu trúc: typedef struct { int value; struct process *L; } semaphore; Giả sử có 2 thao tác cơ bản: Block tạm cho tiến trình chờ wakeup(P) khơi phục lại sự thi hành của tiến trình bị block P 20 Semaphores wait(S): S.value ; if (S.value < 0) { add this process to S.L; block; } signal(S): S.value++; if (S.value

Ngày đăng: 22/12/2016, 12:50

Từ khóa liên quan

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan