Bài giảng Hệ điều hành: Chương 5 - Trần Công Án (ĐH Cần Thơ)

56 16 0
Bài giảng Hệ điều hành: Chương 5 - Trần Công Án (ĐH Cần Thơ)

Đ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

Bài giảng Hệ điều hành - Chương 5: Đồng bộ hóa tiến trình cung cấp cho người đọc các kiến thức: Giới thiệu (Background), vấn đề miền tương trục (Critical-section problem), các giải pháp cho vấn đề miền tương trục, đồng bộ hóa bằng phần mềm (Software Sync.), đồng bộ hóa bằng phần cứng (Hardware Sync.), hiệu báo (Semaphores), các bài toán đồng bộ hóa. Mời các bạn cùng tham khảo.

CT107 Hệ Điều Hành Chương Đồng Bộ Hóa Tiến Trình Giảng viên: Trần Cơng Án (tcan@cit.ctu.edu.vn) Bộ mơn Mạng máy tính & Truyền thơng Khoa Cơng Nghệ Thơng Tin & Truyền Thông Đại học Cần Thơ 2014 [CT107] Ch5 Đồng Bộ Hóa Tiến Trình Mục Tiêu Giới thiệu vấn đề miền tương trục giải pháp để giải vấn đề miền tương trục, nhằm đảm bảo quán liệu chia sẻ tiến trình cạnh tranh miền tương trục TS Trần Cơng Án (Khoa CNTT&TT) [CT107] Ch5 Đồng Bộ Hóa Tiến Trình [CT107] Ch5 Đồng Bộ Hóa Tiến Trình Nội Dung Giới thiệu (Background) Vấn đề miền tương trục (Critical-section problem) Các giải pháp cho vấn đề miền tương trục Đồng hóa phần mềm (Software Sync.) Đồng hóa phần cứng (Hardware Sync.) Hiệu báo (Semaphores) Các tốn đồng hóa Monitors TS Trần Cơng Án (Khoa CNTT&TT) [CT107] Ch5 Đồng Bộ Hóa Tiến Trình [CT107] Ch5 Đồng Bộ Hóa Tiến Trình Giới thiệu (Background) Cạnh tranh quán liệu Cạnh Tranh Và Sự Nhất Quan Dữ Liệu Các tiến trình thực thi đồng thời, chia sẻ liệu dùng chung dẫn đến tình trạng khơng qn (inconsistency) liệu Nhất quán = đắn xác; tùy thuộc vào ngữ cảnh, giao dịch Có lý để thực đồng thời (cạnh tranh) tiến trình: Tăng hiệu suất sử dụng tài nguyên hệ thống Giảm thời gian đáp ứng trung bình hệ thống Việc trì quán liệu yêu cầu chế để đảm bảo thực thi cách có thứ tự tiến trình có hợp tác với TS Trần Cơng Án (Khoa CNTT&TT) [CT107] Ch5 Đồng Bộ Hóa Tiến Trình [CT107] Ch5 Đồng Bộ Hóa Tiến Trình Giới thiệu (Background) Cạnh tranh quán liệu Ví Dụ – Giao Dịch Cạnh Tranh Cho hai giao dịch: T1: A mua hàng trị giá 50$ P (50$: A → P) T2: B mua hàng trị giá 100$ P (100$: B → P) Khởi tạo ban đầu: A=500; B=500; P=1000 T1 T2 R(A) A = A - 50 W(A) R(P) P = P + 50 W(P) R(A) A = A - 100 W(A) R(P) P = P + 100 W(P) Yêu cầu tính quán: (A + B + P) không đổi; cụ thể hơn: giá trị A, B, P sau thực T1, T2 là: A=450; B=400; P=1150 Nhận xét: Nếu thực T1 → T2 T2 → T1, liệu quán Nếu thực cạnh tranh (đồng thời), liệu quán??? TS Trần Công Án (Khoa CNTT&TT) [CT107] Ch5 Đồng Bộ Hóa Tiến Trình [CT107] Ch5 Đồng Bộ Hóa Tiến Trình Giới thiệu (Background) Cạnh tranh quán liệu Ví Dụ – Giao Dịch Cạnh Tranh T1 T2 R(A) A = A - 50 W(A) A/B P T1 T2 A/B P R(A) A = A – 50 450 R(B) B = B - 100 W(B) R(B) B = B - 100 W(B) 400 W(A) R(P) P = P + 50 W(P) R(P) P = P + 50 R(P) W(P) 1050 P = P + 100 W(P) Schedule 1100 400 450 1050 R(P) P = P + 100 W(P) 1150 Schedule TS Trần Công Án (Khoa CNTT&TT) [CT107] Ch5 Đồng Bộ Hóa Tiến Trình [CT107] Ch5 Đồng Bộ Hóa Tiến Trình Giới thiệu (Background) Cạnh tranh quán liệu Ví Dụ – Bài Tốn Nhà SX - Người Tiêu Thụ Dữ liệu chia sẻ (kho hàng, có giới hạn): #define struct { } item; item buffer[BUFFER_SIZE]; int in_item = 0; int out_item = 0; int counter = 0; TS Trần Công Án (Khoa CNTT&TT) [CT107] Ch5 Đồng Bộ Hóa Tiến Trình [CT107] Ch5 Đồng Bộ Hóa Tiến Trình Giới thiệu (Background) Cạnh tranh quán liệu Ví Dụ – Bài Toán Nhà SX - Người Tiêu Thụ Nhà sản xuất (S): while (true) { /* produce an item in next produced */ while (counter == BUFFER SIZE) ; /* nothing */ buffer[in_item] = next_produced; in_item = (in_item + 1) % BUFFER SIZE; counter++; } TS Trần Công Án (Khoa CNTT&TT) [CT107] Ch5 Đồng Bộ Hóa Tiến Trình [CT107] Ch5 Đồng Bộ Hóa Tiến Trình Giới thiệu (Background) Cạnh tranh quán liệu Ví Dụ – Bài Toán Nhà SX - Người Tiêu Thụ Người tiêu thụ (T): while (true) { while (counter == 0) ; /* nothing */ next_consumed = buffer[out_item]; out_item = (out_item + 1) % BUFFER SIZE; counter ; /* consume the item in next consumed */ } TS Trần Công Án (Khoa CNTT&TT) [CT107] Ch5 Đồng Bộ Hóa Tiến Trình [CT107] Ch5 Đồng Bộ Hóa Tiến Trình Giới thiệu (Background) Cạnh tranh quán liệu Ví Dụ – Bài Toán Nhà SX - Người Tiêu Thụ Dữ liệu chia sẻ producer consumer: biến counter Điều kiện để đảm bảo tính quán biến counter: câu lệnh counter++ counter phải thực thi cách “nguyên tử” “cô lập” Nguyên tử: chia nhỏ (hoặc “hoặc tất cả, khơng”) Cơ lập: t/trình khơng truy xuất g/trị khơng qn Vấn đề xảy counter? counter++ ngôn ngữ máy: counter ngôn ngữ máy: register1 = counter register2 = counter register1 = register1 + register2 = register2 - counter = register1 counter = register2 TS Trần Cơng Án (Khoa CNTT&TT) [CT107] Ch5 Đồng Bộ Hóa Tiến Trình 10 [CT107] Ch5 Đồng Bộ Hóa Tiến Trình Các tốn đồng hóa Bài tốn Bộ đọc – Bộ ghi (Readers–Writers Problem) Cấu Trúc Các Tiến Trình Đọc – Ghi Bộ ghi { wait(rw_mutex); writing is performed signal(rw_mutex); } while (true); Bộ đọc { wait(mutex); read_count++; if (read_count == 1) wait(rw_mutex); signal(mutex); reading is performed wait(mutex); read_count ; if (read_count == 0) signal(rw_mutex); signal(mutex); } while (true); TS Trần Công Án (Khoa CNTT&TT) [CT107] Ch5 Đồng Bộ Hóa Tiến Trình 42 [CT107] Ch5 Đồng Bộ Hóa Tiến Trình Các tốn đồng hóa Bài tốn Năm triết gia ăn tối Bài Toán Năm Triết Gia Ăn Tối 222 Chapter Process Synchronization Các triết gia ngồi suy nghĩ, không giao tiếp với triết gia khác Khi đói, họ cố gắng lấy đũa (lần lượt chiếc) gần để ăn cơm Một triết gia lấy đũa dùng triết gia khác Khi có đũa, triết gia ăn đặt đũa xuống sau ăn xong; sau suy nghĩ tiếp 3 RICE Figure 5.13 The situation of the dining philoso Dữ liệu chia sẻ: semaphore chopstick[5], khởi tạo • In applications where it is easy to identify which proce data and which processes only write shared data • In applications that have more readers than writers TS Trần Cơng Án (Khoa CNTT&TT) [CT107] Ch5 Đồng Bộ Hóa Tiến Trình 43Th [CT107] Ch5 Đồng Bộ Hóa Tiến Trình Các tốn đồng hóa Bài tốn Năm triết gia ăn tối Cấu Trúc Của Tiến Trình Triết Gia i { wait(chopstick[i]); wait(chopstick[(i+1) % 5]); eat signal(chopstick[i]); signal(chopstick[(i+1) % 5]); think } while (true); Giải thuật cịn gặp phải vấn đề gì? TS Trần Cơng Án (Khoa CNTT&TT) [CT107] Ch5 Đồng Bộ Hóa Tiến Trình 44 [CT107] Ch5 Đồng Bộ Hóa Tiến Trình Các tốn đồng hóa Bài tốn Năm triết gia ăn tối Ngăn Khóa Chết (Deadlock) Giải thuật đảm bảo khơng có trường hợp hai láng giềng ăn lúc (sử dụng đũa) Tuy nhiên, xảy tình trạng khóa chết – triết gia đói người lấy đũa Giải pháp: Cho phép nhiều triết gia ngồi bàn Chỉ cho phép triết gia lấy đũa đũa sẵn sàng Dùng giải pháp bất đối xứng: triết gia lẻ lấy đũa trái trước, cịn triết gia chẵn ln lấy đũa phải trước TS Trần Công Án (Khoa CNTT&TT) [CT107] Ch5 Đồng Bộ Hóa Tiến Trình 45 [CT107] Ch5 Đồng Bộ Hóa Tiến Trình Monitors Monitors Là cấu trúc liệu trừu tượng, cung cấp ngơn ngữ lập trình cấp cao, cho phép thực việc đồng hóa cách dễ dàng, hiệu Một cấu trúc monitor bao gồm: Tập hợp thao tác (hàm) cho phép truy xuất đến liệu bên monitor Các biến liệu (biến) cục Một đoạn mã khởi tạo (initialization code) TS Trần Công Án (Khoa CNTT&TT) [CT107] Ch5 Đồng Bộ Hóa Tiến Trình 46 [CT107] Ch5 Đồng Bộ Hóa Tiến Trình Monitors Cấu Trúc Monitor 226 Chapter Process Synchronization monitor monitor_name { shared variable declarations entry queue shared data procedure P1( .) { } procedure Pn( .) { } initialization_code ( .) { } } //monitor operations initialization code Figure 5.16 Schematic view of a monitor TS Trần Công Án (Khoa CNTT&TT) [CT107] Ch5 Đồng Bộ Hóa Tiến Trình 47 [CT107] Ch5 Đồng Bộ Hóa Tiến Trình Monitors Đặc Tính Của Monitor Các biến cục truy xuất thủ tục monitor Tiến trình vào monitor cách gọi thủ tục Chỉ có tối đa tiến trình vào monitor thời điểm ⇒ điều kiện loại trừ hỗ tương đảm bảo TS Trần Công Án (Khoa CNTT&TT) [CT107] Ch5 Đồng Bộ Hóa Tiến Trình 48 [CT107] Ch5 Đồng Bộ Hóa Tiến Trình Monitors Biến Điều Kiện (Condition Variable) Nhằm cho phép tiến trình đợi monitor, ta dùng biến điều kiện: condition x, y; Biến điều kiện cục (chỉ truy xuất bên monitor) Hai thao tác biến điều kiện: x.wait(): tiến trình gọi thị sẻ bị ngưng x.signal() gọi x.signal(): “đánh thức” tiến trình ngưng gọi x.wait() (nếu khơng có tiến trình ngưng khơng làm cả) TS Trần Cơng Án (Khoa CNTT&TT) [CT107] Ch5 Đồng Bộ Hóa Tiến Trình 49 [CT107] Ch5 Đồng Bộ Hóa Tiến Trình Monitors Biến Điều Kiện (Condition Variable) 5.8 Monitors 227 entry queue shared data queues associated with x, y conditions x y ••• operations initialization code Figure 5.17 Monitor with condition variables TS Trần Công Án (Khoa CNTT&TT) [CT107] Ch5 Đồng Bộ Hóa Tiến Trình 50 [CT107] Ch5 Đồng Bộ Hóa Tiến Trình Monitors Biến Điều Kiện (Condition Variable) entry queue monitor waiting area entrance MONITOR c1.wait local data condition variables procedure condition c1 condition cn cn.wait urgent queue cx.signal procedure k initialization code exit TS Trần Công Án (Khoa CNTT&TT) [CT107] Ch5 Đồng Bộ Hóa Tiến Trình 51 [CT107] Ch5 Đồng Bộ Hóa Tiến Trình Monitors Các Tùy Biến Khi Gọi Hàm signal() Nếu tiến trình P gọi x.signal() tiến trình Q đợi biến (Q gọi x.wait() trước đó), để tránh hai tiến trình thực thi đồng thời monitor: Signal and wait: P chờ Q rời khỏi monitor Signal and continue: Q chờ P rời khỏi monitor Nhiều ngơn ngữ lập trình cài đặt chế đồng hóa dựa ý tưởng monitor (Java, C#) TS Trần Công Án (Khoa CNTT&TT) [CT107] Ch5 Đồng Bộ Hóa Tiến Trình 52 [CT107] Ch5 Đồng Bộ Hóa Tiến Trình Monitors Ví Dụ Bài Tốn Các Triết Gia Ăn Tối Với Monitor monitor DiningPhilosopiers { enum {thinking, hungry, eating} state[5]; condition self[5]; //wait on chopstick i void pickup(int i); //pick up the chopstick i void putdown(int i); //put down the chopstick i void test(int i); //test the availability of the chopstick i void init() { for (int i = 0; i < 5; i++) state[i] = thinking; } } TS Trần Công Án (Khoa CNTT&TT) [CT107] Ch5 Đồng Bộ Hóa Tiến Trình 53 [CT107] Ch5 Đồng Bộ Hóa Tiến Trình Monitors Ví Dụ Bài Tốn Các Triết Gia Ăn Tối Với Monitor void test(int i) { if ((state[(i + 4) % 5] != eating) && (state[i] == hungry) && (state[(i+1) % 5] != eating)) { state[i] = eating; self[i].signal(); } } TS Trần Công Án (Khoa CNTT&TT) [CT107] Ch5 Đồng Bộ Hóa Tiến Trình 54 [CT107] Ch5 Đồng Bộ Hóa Tiến Trình Monitors Ví Dụ Bài Tốn Các Triết Gia Ăn Tối Với Monitor void pickup(int i) { state[i] = hungry; test(i); if (state[i] != eating) self[i].wait(); } void putdown(int i) { state[i] = thinking; //test right+left neighbors test((i+4) % 5); test((i+1) % 5); } Tiến trình triết gia i: DiningPhilosophiers.pickup(i); EAT DiningPhilosophiers.putdown(i); Tính chất: Loại trừ hỗ tương: Tránh deadlock: Tránh chết đói: TS Trần Cơng Án (Khoa CNTT&TT) [CT107] Ch5 Đồng Bộ Hóa Tiến Trình 55 ... A - 50 W(A) A/B P T1 T2 A/B P R(A) A = A – 50 450 R(B) B = B - 100 W(B) R(B) B = B - 100 W(B) 400 W(A) R(P) P = P + 50 W(P) R(P) P = P + 50 R(P) W(P) 1 050 P = P + 100 W(P) Schedule 1100 400 450 ... Bounded-Buffer) Bài toán Bộ đọc – Bộ ghi (Readers–Writers) Bài toán Các triết gia ăn tối (Dining-Philosophy) TS Trần Cơng Án (Khoa CNTT&TT) [CT107] Ch5 Đồng Bộ Hóa Tiến Trình 36 [CT107] Ch5 Đồng... counter++; } TS Trần Công Án (Khoa CNTT&TT) [CT107] Ch5 Đồng Bộ Hóa Tiến Trình [CT107] Ch5 Đồng Bộ Hóa Tiến Trình Giới thiệu (Background) Cạnh tranh quán liệu Ví Dụ – Bài Toán Nhà SX - Người Tiêu

Ngày đăng: 18/05/2021, 12:59

Từ khóa liên quan

Mục lục

  • Giới thiệu (Background)

  • Vấn đề miền tương trục (Critical-section problem)

  • Các giải pháp cho vấn đề miền tương trục

  • Đồng bộ hóa bằng phần mềm (Software Sync.)

  • Đồng bộ hóa bằng phần cứng (Hardware Sync.)

  • Hiệu báo (Semaphores)

  • Các bài toán đồng bộ hóa

  • Monitors

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

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

Tài liệu liên quan