tailieunhanh - Chương V-II: Đồng Bộ và Giải Quyết Tranh Chấp

Tham khảo bài thuyết trình 'chương v-ii: đồng bộ và giải quyết tranh chấp', công nghệ thông tin, hệ điều hành phục vụ nhu cầu học tập, nghiên cứu và làm việc hiệu quả | Chöông V-II Ñoàng Boä vaø Giaûi Quyeát Tranh Chaáp (Process Synchronization) Noäi dung Ñaët vaán ñeà (taïi sao phaûi ñoàng boä vaø giaûi quyeát tranh chaáp ?) Vaán ñeà Critical section Caùc giaûi phaùp phaàn meàm Giaûi thuaät Peterson, vaø giaûi thuaät bakery Ñoàng boä baèng hardware Semaphore Caùc baøi toaùn ñoàng boä Critical region Monitor Ñaët vaán ñeà Khaûo saùt caùc process/thread thöïc thi ñoàng thôøi vaø chia seû döõ lieäu (qua shared memory, file). Neáu khoâng coù söï kieåm soaùt khi truy caäp caùc döõ lieäu chia seû thì coù theå ñöa ñeán ra tröôøng hôïp khoâng nhaát quaùn döõ lieäu (data inconsistency). Ñ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ù traät töï cuûa caùc process ñoàng thôøi. Q L p R Baøi toaùn Producer-Consumer Producer-Consumer P không được ghi dữ liệu vào buffer đã đầy C không được đọc dữ liệu từ buffer đang trống P và C không được thao tác trên buffer cùng lúc P C Buffer (N) Gới hạn, không giới hạn ??? Ñaët . | Chöông V-II Ñoàng Boä vaø Giaûi Quyeát Tranh Chaáp (Process Synchronization) Noäi dung Ñaët vaán ñeà (taïi sao phaûi ñoàng boä vaø giaûi quyeát tranh chaáp ?) Vaán ñeà Critical section Caùc giaûi phaùp phaàn meàm Giaûi thuaät Peterson, vaø giaûi thuaät bakery Ñoàng boä baèng hardware Semaphore Caùc baøi toaùn ñoàng boä Critical region Monitor Ñaët vaán ñeà Khaûo saùt caùc process/thread thöïc thi ñoàng thôøi vaø chia seû döõ lieäu (qua shared memory, file). Neáu khoâng coù söï kieåm soaùt khi truy caäp caùc döõ lieäu chia seû thì coù theå ñöa ñeán ra tröôøng hôïp khoâng nhaát quaùn döõ lieäu (data inconsistency). Ñ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ù traät töï cuûa caùc process ñoàng thôøi. Q L p R Baøi toaùn Producer-Consumer Producer-Consumer P không được ghi dữ liệu vào buffer đã đầy C không được đọc dữ liệu từ buffer đang trống P và C không được thao tác trên buffer cùng lúc P C Buffer (N) Gới hạn, không giới hạn ??? Ñaët vaán ñeà Xeùt baøi toaùn Producer-Consumer vôùi bounded buffer Bounded buffer (ch. 4), theâm bieán ñeám count #define BUFFER_SIZE 10 /* 10 buffers */ typedef struct { . . . } item; item buffer[BUFFER_SIZE]; int in = 0, out = 0, count = 0; Bounded buffer (tt) Quaù trình Producer item nextProduced; while(1) { while (count == BUFFER_SIZE); /* do nothing */ buffer[in] = nextProduced; count++; in = (in + 1) % BUFFER_SIZE; } Quaù trình Consumer item nextConsumed; while(1) { while (count == 0); /* do nothing */ nextConsumed = buffer[out] ; count--; out = (out + 1) % BUFFER_SIZE; } bieán count ñöôïc chia seû giöõa producer vaø consumer Bounded buffer (tt) Caùc leänh taêng, giaûm bieán count töông ñöông trong ngoân ngöõ maùy laø: (Producer) count++: register1 = count register1 = register1 + 1 count = register1 (Consumer) count--: register2 = count register2 = register2 - 1 count = register2 Trong ñoù, caùc registeri laø caùc thanh ghi cuûa CPU. Bounded buffer (tt) Maõ maùy cuûa caùc leänh taêng .

TỪ KHÓA LIÊN QUAN