Bài giảng Hệ điều hành - Chương 5: Đồng bộ hóa tiến trình

88 136 0
Bài giảng Hệ điều hành - Chương 5: Đồng bộ hóa tiến trình

Đ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 nêu lên xử lý đồng hành và các vấn đề, bài toán đồng bộ hóa, các giải pháp đồng bộ hoá, bài toán đồng bộ hoá kinh điển (Producer – Consumer, Readers – Writers, Dinning Philosophers).

Chương : Đồng hóa tiến trình Nội dung giảng  Xử lý đồng hành vấn đề:    Bài tố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á    Vấn đề tranh đoạt điều khiển (Race Condition) Vấn đề phối hợp xử lý Busy waiting Sleep & Wakeup Các toán đồng hoá kinh điển    Producer – Consumer Readers – Writers Dinning Philosophers Nhiều tiến trình “chung sống hồ bình” hệ thống ? ĐỪNG HY VỌNG An tồn tiến trình hồn tồ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 Các vấn đề  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 ?   Luôn nguy hiểm ?   Khó biết , thường sai Không, đủ để cân nhắc kỹ Phối hợp  Các tiến trình khơng biết 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 Nội dung giảng  Xử lý đồng hành vấn đề:    Bài tố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á    Vấn đề tranh đoạt điều khiển (Race Condition) Vấn đề phối hợp xử lý Busy waiting Sleep & Wakeup Các toán đồng hoá kinh điển    Producer – Consumer Readers – Writers Dinning Philosophers Tranh đoạt điều khiển - Ví dụ  Đế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 = P2 P1 hits = hits +1; hits = hits + 1; Kết cuối ? Tranh đoạt điều khiển - Ví dụ hits = P1 time (1) read hits (0) (3) hits = + P2 (2)read hits (0) (4)hits = + hits = Tranh đoạt điều khiển - Ví dụ hits = P1 time P2 (1) read hits (0) (2) hits = + (3) read hits (1) hits = (4) hits = + Tranh đoạt điều khiển - Ví dụ 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 ? Tranh đoạt điều khiển - Nhận xét  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 10 Ưu tiên ? 74 Readers & Writers   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 75 Readers & Writers : Giải pháp Semaphore  Các biến dùng chung Rs Ws  semaphore db = 1; // Kiểm tra truy xuất CSDL 76 R&W : Giải pháp Semaphore (1) 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 ! 77 R&W : Giải pháp Semaphore (2) Reader() { Writer() { rc = rc +1; down(&db); if (rc ==1) write-db(Database); down(&db); read-db(Database); rc = rc – 1; if (rc == 0) up(&db); } up(&db); }  Đúng chưa ?  rc biến dùng chung Reader  CS  78 Readers & Writers : Giải pháp Semaphore   Các biến dùng chung Rs Ws  semaphore db = 1; // Kiểm tra truy xuất CSDL Các biến dùng chung Rs  int rc; // Số lượng tiến trình Reader // Kiểm tra truy xuất rc  semaphore mutex = 1; 79 R&W : Giải pháp Semaphore (3) Reader() { Writer() { down(&mutex); down(&db); rc = rc +1; write-db(Database); if (rc ==1) up(&db); down(&db); } up(mutex); read-db(Database); down(mutex); Ai ưu tiên ? rc = rc – 1; if (rc == 0) up(&db); up(mutex); } 80 R&W : Giải pháp Semaphore (Thinking ) 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); ??? hê, hê,  rc = rc – 1; up(mutex); if (rc == 0) up(&db); } 81 R&W: Giải pháp Monitor monitor ReaderWriter procedure W1(); Database; { procedure R1(); } ? { } procedure R (); procedure W (); { } { } 82 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); } procedure BeginWrite() { if (busy || rc != 0) wait(OKWrite); busy = true; } procedure FinishWrite() { busy = false; if (OKRead.Queue) signal(OKRead); else signal(OKWrite); } end monitor; 83 Reader&Writer : Giải pháp Monitor Reader() Writer(); { { } RW.BeginRead(); RW.BeginWrite(); Read-db(Database); Write-db(Database); RW.FinishRead(); RW.FinishWrite(); } 84 Dining Philosophers  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 ? 85 Dining Philosophers: Tình nguy hiểm  triết gia “giành giật” nĩa  Tranh chấp  Cần đồng hoá hoạt động triết gia 86 Dining Philosophers : Giải pháp đồng 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; } Deadlock 87 Dining Philosophers : Thách thức  Cần đồng cho:   Không có deadlock Khơng có starvation 88 ... 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 hồn tất trọn vẹn q trình truy xuất tài ngun chung trước có tiến trình. .. đảm trình tự thực Job1 - Job2 ?  P1 P2 thực “hẹn hò” (Rendez-vous) với  Hỗ trợ Rendez-vous : Bảo đảm tiến trình phối hợp với theo trình tự xử lý định trước 18 Nội dung giảng  Xử lý đồng hành. .. CPU ? Tranh đoạt điều khiển - Nhận xét  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 10 Tranh đoạt điều khiển - Nhận xét  Xử

Ngày đăng: 30/01/2020, 01:42

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