1. Trang chủ
  2. » Giáo án - Bài giảng

hệ điều hànhbài05 đồng bộ hóa sinhvienzone com

85 35 0

Đ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

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

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