hệ điều hành nguyễn thanh sơn lecture07 đồng bộ quá trình sinhvienzone com

59 41 0
hệ điều hành nguyễn thanh sơn lecture07 đồng bộ quá trình sinhvienzone com

Đ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

Đồng Bộ Quá Trình BK TP.HCM SinhVienZone.com Khoa Khoa học & Kỹ thuật Máy tính https://fb.com/sinhvienzonevn Nội dung    Khái niệm Tranh chấp “Critical section” Các giải pháp  Sử dụng lệnh máy thông thường     Giải thuật Peterson, giải thuật bakery Sử dụng lệnh cấm ngắt lệnh máy đặc biệt Semaphore Monitor BK TP.HCM SinhVienZone.com Khoa Khoa học & Kỹ thuật Máy tính https://fb.com/sinhvienzonevn Bài tốn đồng  Khảo sát process/thread thực thi đồng thời chia sẻ liệu (ghi shared memory) hệ thống     uniprocessor, shared memory multiprocessor Nếu khơng có kiểm sốt truy cập liệu chia sẻ chúng rơi vào tình trạng khơng nhất qn (inconsistent) Để trì nhất quán liệu, hệ thống cần có chế bảo đảm thực thi có trật tự process đồng thời BK TP.HCM SinhVienZone.com Khoa Khoa học & Kỹ thuật Máy tính https://fb.com/sinhvienzonevn Bài tốn đồng (tt.)  Hai lớp bài toán đồng bộ:  Hợp tác (cooperation)   Bài toán producer-consumer: bounded buffer Tranh giành (contention)   Bài toán loại trừ tương hỗ: đồng nhiều q trình sử dụng tài ngun khơng chia sẻ đồng thời (như printer) Bài toán Dining Philosophers BK TP.HCM SinhVienZone.com Khoa Khoa học & Kỹ thuật Máy tính https://fb.com/sinhvienzonevn Đồng thời vs song song   Trên uniprocessor hay shared memory multiprocessor, trình chạy đồng thời Trên shared memory multiprocessor, trình chạy song song BK TP.HCM SinhVienZone.com Khoa Khoa học & Kỹ thuật Máy tính https://fb.com/sinhvienzonevn Bài tốn Producer-consumer  Ví dụ Bounded buffer, thêm biến đếm count #define BUFFER_SIZE 10 typedef struct { } item; item buffer[BUFFER_SIZE]; int in = 0, out = 0, count = 0; /* 10 buffers */ BK TP.HCM SinhVienZone.com Khoa Khoa học & Kỹ thuật Máy tính https://fb.com/sinhvienzonevn Bài tốn Producer-consumer (tt.)  Q trình Producer item nextProduced; while(1) { while (count == BUFFER_SIZE); /* nothing */ buffer[in] = nextProduced; troû count++; in = (in + 1) % BUFFER_SIZE; }  Quá trình Consumer item nextConsumed; while(1) { while (count == 0); /* nothing */ troû nextConsumed = buffer[out]; count ; out = (out + 1) % BUFFER_SIZE; biến count chia sẻ } producer và consumer BK TP.HCM SinhVienZone.com Khoa Khoa học & Kỹ thuật Máy tính https://fb.com/sinhvienzonevn Bài tốn Producer-consumer (tt.)  BK Các lệnh tăng/giảm biến count tương đương ngôn ngữ máy là: Producer count++: register1 = count register1 = register1 + count = register1 Consumer count : register2 = count register2 = register2 - count = register2 Trong đó, registeri là ghi CPU TP.HCM SinhVienZone.com Khoa Khoa học & Kỹ thuật Máy tính https://fb.com/sinhvienzonevn Đồng lệnh đơn nguyên   Mã máy lệnh tăng và giảm biến count thực thi xen kẽ Giả sử count Chuỗi thực thi sau xảy ra: 1: producer register1 := count {register1 = 5} producer register1 := register1 + {register1 = 6} consumer register2 := count {register2 = 5} consumer register2 := register2 - {register2 = 3: producer count := register1 {count = 6} 4: consumer count := register2 {count = 4} 2: Cả hai process thao tác đồng thời lên biến chung count Trị biến chung không nhất quán thao tác hai process Giải pháp: lệnh count++, count phải đơn nguyên (atomic), nghĩa thực lệnh đơn, không thực thi đan xen BK TP.HCM SinhVienZone.com Khoa Khoa học & Kỹ thuật Máy tính https://fb.com/sinhvienzonevn Race condition  Race condition: nhiều process truy xuất thao tác đồng thời lên liệu chia sẻ (như biến count); kết cuối việc truy xuất đồng thời phụ thuộc thứ tự thực thi lệnh thao tác liệu  Để liệu chia sẻ nhất quán, cần bảo đảm cho process thao tác lên liệu chia sẻ Do đó, cần có chế đồng hoạt động process BK TP.HCM SinhVienZone.com Khoa Khoa học & Kỹ thuật Máy tính https://fb.com/sinhvienzonevn 10 Bài toán “Dining Philosophers” (tt.) Giải thuật Dữ liệu chia sẻ: semaphore chopstick[5]; Khởi đầu biến là Triết gia thứ i: { wait(chopstick[ i ]) wait(chopstick[ (i + 1) % ]) … eat … signal(chopstick[ i ]); signal(chopstick[ (i + 1) % ]); … think … BK } while (1); TP.HCM SinhVienZone.com 3 4 Khoa Khoa học & Kỹ thuật Máy tính https://fb.com/sinhvienzonevn 45 Bài tốn “Dining Philosophers” (tt.)  Giải pháp gây deadlock   Một số giải pháp giải deadlock     Khi tất triết gia đồng thời cầm đũa bên tay trái lấy đủa tay phải  deadlock Cho phép nhiều nhất triết gia ngồi vào bàn Cho phép triết gia cầm đũa hai đũa sẵn sàng (nghĩa là tác vụ cầm đũa phải xảy CS) Triết gia ngồi vị trí lẻ cầm đũa bên trái trước, sau đến đũa bên phải, triết gia vị trí chẵn cầm đũa bên phải trước, sau đến đũa bên trái Starvation? BK TP.HCM SinhVienZone.com Khoa Khoa học & Kỹ thuật Máy tính https://fb.com/sinhvienzonevn 46 Bài toán Readers-Writers Giải thuật   Dữ liệu chia sẻ semaphore mutex = 1; semaphore wrt = 1; int readcount = 0;  Các writer process wait(wrt); writing is performed signal(wrt); Các reader process wait(mutex); readcount++; if (readcount == 1) wait(wrt); signal(mutex); reading is performed wait(mutex); readcount ; if (readcount == 0) signal(wrt); signal(mutex); BK TP.HCM SinhVienZone.com Khoa Khoa học & Kỹ thuật Máy tính https://fb.com/sinhvienzonevn 47 Bài toán Readers-Writers (tt.)     mutex: “bảo vệ” biến readcount wrt  Bảo đảm mutual exclusion writer  Được sử dụng reader cuối cùng vào hay khỏi vùng tranh chấp Nếu writer CS có n reader đợi thì reader xếp hàng đợi wrt và n - reader hàng đợi mutex Khi writer thực thi signal(wrt), hệ thống phục hồi thực thi reader đợi writer đợi BK TP.HCM SinhVienZone.com Khoa Khoa học & Kỹ thuật Máy tính https://fb.com/sinhvienzonevn 48 Các vấn đề với semaphore    BK Nếu tác vụ wait(S) và signal(S) nằm rải rác rất nhiều process  Người lập trình khó nắm bắt hiệu ứng chúng Nếu khơng sử dụng  xảy deadlock starvation Một process bị “die” kéo theo process khác sử dụng biến semaphore signal(mutex) … critical section … wait(mutex) wait(mutex) … critical section … wait(mutex) signal(mutex) … critical section … signal(mutex) TP.HCM SinhVienZone.com Khoa Khoa học & Kỹ thuật Máy tính https://fb.com/sinhvienzonevn 49 Monitor   Phần tử ngôn ngữ cấp cao Xuất nhiều ngôn ngữ lập trình đồng thời   Concurrent Pascal, Modula-3, Java,… Có thể thực semaphore BK TP.HCM SinhVienZone.com Khoa Khoa học & Kỹ thuật Máy tính https://fb.com/sinhvienzonevn 50 Monitor (tt.)  Kiểu module phần mềm, bao gồm    Một nhiều thủ tục (procedure) Một đoạn code khởi tạo (initialization code) Các biến liệu cục (local data variable) operations BK initialization code Ngữ nghĩa monitor    shared data …  entry queue Shared variable truy xuất thủ tục monitor Process “vào monitor” cách gọi thủ tục monitor Các thủ tục monitor loại trừ tương hỗ Mô hình monitor đơn giản TP.HCM SinhVienZone.com Khoa Khoa học & Kỹ thuật Máy tính https://fb.com/sinhvienzonevn 51 Cấu trúc monitor monitor monitor-name { shared variable declarations procedure body P1 (…) { } procedure body P2 (…) { } procedure body Pn (…) { } { initialization code } } BK TP.HCM SinhVienZone.com Khoa Khoa học & Kỹ thuật Máy tính https://fb.com/sinhvienzonevn 52 Condition variable    Nhằm cho phép process đợi “trong monitor”, phải khai báo biến điều kiện (condition variable) condition a, b; Các biến điều kiện cục và truy cập bên monitor Chỉ thao tác lên biến điều kiện hai thủ tục:  a.wait: process gọi tác vụ này bị “block biến điều kiện” a   process này tiếp tục thực thi có process khác thực tác vụ a.signal a.signal: phục hồi trình thực thi process bị block biến điều kiện a   Nếu có nhiều process: chọn Nếu khơng có process: khơng có tác dụng BK TP.HCM SinhVienZone.com Khoa Khoa học & Kỹ thuật Máy tính https://fb.com/sinhvienzonevn 53 Monitor có condition variable shared data a b operations initialization code BK entry queue  Các process đợi entry queue đợi condition queue (a, b,…)  Khi thực lệnh a.wait, process chuyển vào condition queue a  Lệnh a.signal chuyển process từ condition queue a vào monitor • Khi đó, để bảo đảm mutual exclusion, process gọi a.signal bị blocked và đưa vào urgent queue TP.HCM SinhVienZone.com Khoa Khoa học & Kỹ thuật Máy tính https://fb.com/sinhvienzonevn 54 Monitor có condition variable (tt.) entry queue monitor waiting area entrance MONITOR local data condition c1 procedure c1.wait condition variables condition cn cn.wait urgent queue BK cx.signal procedure k initialization code exit TP.HCM SinhVienZone.com Khoa Khoa học & Kỹ thuật Máy tính https://fb.com/sinhvienzonevn 55 Monitor dining philosophers monitor dp { enum {THINKING, HUNGRY, EATING} state[5]; condition self[5]; BK } TP.HCM SinhVienZone.com Khoa Khoa học & Kỹ thuật Máy tính https://fb.com/sinhvienzonevn 56 Monitor dining philosophers (tt.) void pickup(int i) { state[ i ] = HUNGRY; test( i ); if (state[ i ] != EATING) self[ i ].wait(); } void putdown(int i) { state[ i ] = THINKING; // test left and right neighbors test((i + 4) % 5); // left neighbor test((i + 1) % 5); // right … } BK TP.HCM SinhVienZone.com Khoa Khoa học & Kỹ thuật Máy tính https://fb.com/sinhvienzonevn 57 Monitor dining philosophers (tt.) void test(int i) { if ( (state[(i + 4) % 5] != EATING) && (state[ i ] == HUNGRY) && (state[(i + 1) % 5] != EATING) ) { state[ i ] = EATING; self[ i ].signal(); } } void init() { for (int i = 0; i < 5; i++) state[ i ] = THINKING; } BK TP.HCM SinhVienZone.com Khoa Khoa học & Kỹ thuật Máy tính https://fb.com/sinhvienzonevn 58 Monitor dining philosophers (tt.)  Trước ăn, triết gia phải gọi hàm pickup(), ăn xong thì phải gọi hàm putdown() đói dp.pickup(i); ăn dp.putdown(i); suy nghĩ  Giải thuật  khơng gây deadlock gây starvation  không thực phân bố vì điều khiển tập trung BK TP.HCM SinhVienZone.com Khoa Khoa học & Kỹ thuật Máy tính https://fb.com/sinhvienzonevn 59 ... BK TP.HCM SinhVienZone. com Khoa Khoa học & Kỹ thuật Máy tính https://fb .com/ sinhvienzonevn Bài toán đồng  Khảo sát process/thread thực thi đồng thời chia sẻ liệu (ghi shared memory) hệ thống... nhất quán (inconsistent) Để trì nhất qn liệu, hệ thống cần có chế bảo đảm thực thi có trật tự process đồng thời BK TP.HCM SinhVienZone. com Khoa Khoa học & Kỹ thuật Máy tính https://fb .com/ sinhvienzonevn... tài nguyên không chia sẻ đồng thời (như printer) Bài toán Dining Philosophers BK TP.HCM SinhVienZone. com Khoa Khoa học & Kỹ thuật Máy tính https://fb .com/ sinhvienzonevn Đồng thời vs song song 

Ngày đăng: 28/01/2020, 22:26

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