Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 85 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
85
Dung lượng
6,67 MB
Nội dung
Mơn học: Hệ điều hành SinhVienZone.com https://fb.com/sinhvienzonevn • Xử lý đồng hành vấn đề: – Vấn đề tranh đoạt điều khiển (Race Condition) – Vấn đề phối hợp xử lý • Bài toán đồng hóa – Yêu cầu độc quyền truy xuất (Mutual Exclusion) – Yêu cầu phối hợp xử lý (Synchronization) • Các giải pháp đồng hoá – Busy waiting – Sleep & Wakeup • Các toán đồng hoá kinh điển – Producer – Consumer – Readers – Writers – Dinning Philosophers SinhVienZone.com https://fb.com/sinhvienzonevn • ĐỪNG HY VỌNG • An toàn tiến trình hoàn toàn độc lập – Làm có ?? • Thực tế – Các tiến trình chia sẻ tài nguyên chung ( file system, CPU ) – Concurrent access => bugs • Ví dụ : Dê qua cầu Xử lý đồng hành = nhức đầu SinhVienZone.com https://fb.com/sinhvienzonevn • Tranh chấp – Nhiều tiến trình truy xuất đồng thời tài nguyên mang chất không chia sẻ Xảy vấn đề tranh đoạt điều khiển (Race Condition) – Kết ? • Khó biết , thường sai – Luôn nguy hiểm ? • Không, đủ để cân nhắc kỹ • Phối hợp – Các tiến trình tương quan xử lý để điều chỉnh hoạt động nhòp nhàng Cần phối hợp xử lý (Rendez-vous) – Kết : khó biết, không bảo đảm ăn khớp SinhVienZone.com https://fb.com/sinhvienzonevn • Xử lý đồng hành vấn đề: – Vấn đề tranh đoạt điều khiển (Race Condition) – Vấn đề phối hợp xử lý • Bài toán đồng hóa – Yêu cầu độc quyền truy xuất (Mutual Exclusion) – Yêu cầu phối hợp xử lý (Synchronization) • Các giải pháp đồng hoá – Busy waiting – Sleep & Wakeup • Các toán đồng hoá kinh điển – Producer – Consumer – Readers – Writers – Dinning Philosophers SinhVienZone.com https://fb.com/sinhvienzonevn Đếm số người vào Altavista : dùng threads cập nhật biến đếm hits=> P1 P2 chia sẻ biến hits hits = P1 read hits; hits = hits +1; P2 read hits; hits = hits + 1; Keát cuối ? SinhVienZone.com https://fb.com/sinhvienzonevn hits = time P1 (1) read hits (0) (3) hits = + P2 (2)read hits (0) (4)hits = + hits = SinhVienZone.com https://fb.com/sinhvienzonevn hits = time P1 P2 (1) read hits (0) (2) hits = + hits = (3) read hits (1) (4) hits = + SinhVienZone.com https://fb.com/sinhvienzonevn i=0; Thread a: while(i < 10) i = i +1; print “A won!”; Thread b: while(i > -10) i = i - 1; print “B won!”; • Ai thắng ? • Có bảo đảm có người thắng ? • Nếu tiến trình xử lý CPU ? SinhVienZone.com https://fb.com/sinhvienzonevn Kết thực tiến trình phụ thuộc vào kết điều phối Cùng input, không output Khó debug lỗi sai xử lý đồng hành Xử lý Làm lơ Dễ , có phải giải pháp Không chia sẻ tài nguyên chung : dùng biến hits1,hits2; xây cầu lane Nên dùng có thể, không đảm bảo đủ tài nguyên, không giải pháp cho trường hợp Giải pháp tổng quát : có hay không ? Lý xảy Race condition ? Bad interleavings : tiến trình “xen vào” trình truy xuất tài nguyên tiến trình khác Giải pháp : bảo đảm tính atomicity cho phép tiến trình hoàn tất trọn vẹn trình truy xuất tài nguyên chung trước có tiến trình khác can thiệp 10 SinhVienZone.com https://fb.com/sinhvienzonevn 71 SinhVienZone.com https://fb.com/sinhvienzonevn • W độc quyền truy xuất CSDL • W kết thúc cập nhật CSDL : vào ? – Cho W khác vào, Rs phải đợi • Ưu tiên Writer, Reader starvation – Cho Rs vào, Ws khác phải đợi • Ưu tiên Reader, Writer starvation 72 SinhVienZone.com https://fb.com/sinhvienzonevn • Các biến dùng chung Rs Ws – semaphore db = 1; CSDL // Kieåm tra truy xuaát 73 SinhVienZone.com https://fb.com/sinhvienzonevn Reader() { Writer() { down(&db); down(&db); read-db(Database); write-db(Database); up(&db); up(&db); } } Chuyện xảy ? Chỉ có Reader đọc CSDL thời điểm ! SinhVienZone.com https://fb.com/sinhvienzonevn 74 Reader() { Writer() { if (rc == 0) down(&db); down(&db); write-db(Database); rc = rc +1; read-db(Database); rc = rc – 1; if (rc == 0) up(&db); } up(&db); } Đúng chưa ? rc biến dùng chung Reader CS SinhVienZone.com https://fb.com/sinhvienzonevn 75 • Các biến dùng chung Rs Ws – semaphore db = 1; CSDL // Kiểm tra truy xuất • Các biến dùng chung Rs – int rc; // Số lượng tiến trình Reader – semaphore mutex = 1; // Kiểm tra truy xuất rc 76 SinhVienZone.com https://fb.com/sinhvienzonevn Reader() { Writer() { down(&mutex); down(&db); if (rc == 0) write-db(Database); down(&db); rc = rc +1; up(&db); } up(mutex); read-db(Database); down(mutex); Ai ưu tiên ? rc = rc – 1; if (rc == 0) up(&db); up(mutex); } SinhVienZone.com https://fb.com/sinhvienzonevn 77 Reader() { Writer() { down(&mutex); down(&db); rc = rc +1; write-db(Database); up(mutex); up(&db); if (rc ==1) } down(&db); read-db(Database); down(mutex); ??? heâ, heâ, heâ rc = rc – 1; up(mutex); if (rc == 0) up(&db); } SinhVienZone.com https://fb.com/sinhvienzonevn 78 monitor ReaderWriter ? Database; procedure R1(); { procedure W1(); { } procedure W (); { } procedure R (); } { } SinhVienZone.com https://fb.com/sinhvienzonevn 79 monitor ReaderWriter condition OKWrite, OKRead; int rc = 0; Boolean busy = false; procedure BeginRead() { if (busy) wait(OKRead); rc++; signal(OKRead); } procedure FinishRead() { rc ; if (rc == 0) signal(OKWrite); } SinhVienZone.com procedure BeginWrite() { if (busy || rc != 0) wait(OKWrite); busy = true; } procedure FinishWrite() { busy = false; if (OKRead.Queue) signal(OKRead); else signal(OKWrite); } end monitor; https://fb.com/sinhvienzonevn 80 Reader() Writer(); { { RW.BeginRead(); RW.BeginWrite(); Read-db(Database); Write-db(Database); RW.FinishRead(); RW.FinishWrite(); } } SinhVienZone.com https://fb.com/sinhvienzonevn 81 • Năm triết gia ngồi chung quanh bàn ăn spaghetti (yum yum) – Trên bàn có nóa đặt đóa (xem hình) – Để ăn spaghetti người cần có nóa • Triết gia thứ i: – Thinking – Eating Chuyện xảy ? SinhVienZone.com https://fb.com/sinhvienzonevn 82 triết gia “giành giật” nóa Tranh chấp Cần đồng hoá hoạt động triết gia SinhVienZone.com https://fb.com/sinhvienzonevn 83 semaphore fork[5] = 1; Philosopher (i) { while(true) { down(fork[i]); down(fork[i+1 mod 5]) eat; up(fork[i]); up(fork[i+1 mod 5]); think; } SinhVienZone.com Deadlock https://fb.com/sinhvienzonevn 84 • Cần đồng cho: – Không có deadlock – Không có starvation SinhVienZone.com https://fb.com/sinhvienzonevn 85 ... 1; Kết cuối ? SinhVienZone. com https://fb .com/ sinhvienzonevn hits = time P1 (1) read hits (0) (3) hits = + P2 (2)read hits (0) (4)hits = + hits = SinhVienZone. com https://fb .com/ sinhvienzonevn... trình khác can thiệp 10 SinhVienZone. com https://fb .com/ sinhvienzonevn hits = time P1 P2 read hits (0) hits = + read hits(1) hits = + hits = 11 SinhVienZone. com https://fb .com/ sinhvienzonevn Miền... miền 12 găn(gCS) SinhVienZone. com https://fb .com/ sinhvienzonevn • Xử lý đồng hành vấn đề: – Vấn đề tranh đoạt điều khiển (Race Condition) – Vấn đề phối hợp xử lý • Bài toán đồng hóa – Yêu cầu độc