Danh mục

Bài giảng Hệ điều hành: Chương 3 - Thoại Nam, Lê Ngọc Minh

Số trang: 30      Loại file: pdf      Dung lượng: 379.75 KB      Lượt xem: 31      Lượt tải: 0    
tailieu_vip

Xem trước 3 trang đầu tiên của tài liệu này:

Thông tin tài liệu:

Bài giảng "Hệ điều hành - Chương 3: Đồng bộ và giải quyết tranh chấp" cung cấp cho người học các kiến thức: Khái niệm cơ bản, bài toán Critical-Section, các giải pháp phần mềm, đồng bộ bằng hardware, semaphore,.... Mời các bạn cùng tham khảo nội dung chi tiết.
Nội dung trích xuất từ tài liệu:
Bài giảng Hệ điều hành: Chương 3 - Thoại Nam, Lê Ngọc Minh Chöông 3 Ñoàng boä vaø giaûi quyeát tranh chaáp (Process Synchronization) -1- Noäi dung ‰ Khaùi nieäm cô baûn ‰ Baøi toaùn “Critical-Section” ‰ Caùc giaûi phaùp phaàn meàm – Peterson, Bakery ‰ Ñoàng boä baèng hardware ‰ Semaphore ‰ Caùc baøi toaùn ñoàng boä ‰ Critical Region ‰ Monitor Khoa Coâng Ngheä Thoâng Tin – Ñaïi Hoïc Baùch Khoa Tp.HCM -2- CuuDuongThanCong.com https://fb.com/tailieudientucntt 1 Khaùi nieäm cô baûn ‰ Caùc process/thread thöïc thi ñoàng thôøi chia seû code, chia seû döõ lieäu (qua shared memory, file). ‰ Neáu khoâng coù söï ñieàu khieån khi truy caäp caùc döõ lieäu chia seû thì coù theå xaûy ra tröôøng hôïp khoâng nhaát quaùn döõ lieäu (data inconsistent). ‰ Ñeå duy trì söï nhaát quaùn döõ lieäu, heä thoáng caàn coù cô cheá baûo ñaûm söï thöïc thi coù thöù töï cuûa caùc process ñoàng thôøi. ‰ Ví duï Bounded-Buffer (ch.4) theâm bieán ñeám count #define BUFFER_SIZE 10 # typedef struct { … } item; item buffer[BUFFER_SIZE]; int in = 0, out = 0, count = 0; Khoa Coâng Ngheä Thoâng Tin – Ñaïi Hoïc Baùch Khoa Tp.HCM -3- Bounded Buffer (t.t) ‰ Producer item nextProduced; while (1){ while ( count == BUFFER_SIZE ); /* do nothing */ buffer[in] = nextProduced; count++; in = (in + 1) % BUFFER_SIZE; } ‰ Consumer item nextConsumed; while (1){ while ( count == 0 ); /* do nothing */ buffer[in] = nextConsumed; count--; out = (out + 1) % BUFFER_SIZE; } Khoa Coâng Ngheä Thoâng Tin – Ñaïi Hoïc Baùch Khoa Tp.HCM -4- CuuDuongThanCong.com https://fb.com/tailieudientucntt 2 Race Condition ‰ Race condition: nhieàu ‰ Caùc leänh taêng, giaûm bieán process truy xuaát vaø thao töông ñöông trong ngoân ngöõ taùc ñoàng thôøi treân döõ lieäu maùy laø: chia seû. ‰ (P) count ++; – Keát quaû cuoái cuøng cuûa vieäc – register1 := count truy xuaát ñoàng thôøi naøy phuï – register1 := register1 +1 thuoäc thöù töï thöïc thi cuûa caùc – count := register1 leänh thao taùc döõ lieäu. ‰ (C) count --; ‰ Chuùng ta caàn baûo ñaûm sao – register2 := count cho taïi moãi thôøi ñieåm coù moät – register2 := register2 -1 vaø chæ moät process ñöôïc – count := register2 truy xuaát, thao taùc treân döõ lieäu chia seû. Do ñoù, caàn coù ‰ Trong ñoù, registeri laø caùc thanh cô cheá ñoàng boä hoaït ñoäng ghi cuûa CPU. cuûa caùc process naøy. Khoa Coâng Ngheä Thoâng Tin – Ñaïi Hoïc Baùch Khoa Tp.HCM -5- Ví duï veà Race Condition ‰ Quaù trình thöïc hieän xen keõ cuûa leänh taêng/giaûm bieán count ‰ Hieän taïi: count = 5 0: producer register1 := count {register1 = 5} 1: producer register1 := register1+1 {register1 = 6} 2: consumer register2 := count {register2 = 5} 3: consumer register2 := register2-1 {register2 = 4} 4: producer count := register1 {count = 6} 5: consumer count := register2 {count = 4} 0 Caû hai process thao taùc ñoàng thôøi treân bieán chung count. Keát quaû cuûa bieán chung naøy khoâng nhaát quaùn döôùi caùc thao taùc cuûa hai process ⇒ leänh count++, count-- phaûi laø atomic, nghóa laø thöïc hieän nhö moät leänh ñôn, khoâng bò ngaét nöûa chöøng. Khoa Coâng Ngheä Thoâng Tin – Ñaïi Hoïc Baùch Khoa Tp.HCM -6- CuuDuongThanCong.com ...

Tài liệu được xem nhiều: