TAILIEUCHUNG - Chuong 07 - Dong bo Process

Chöông 7. Ñoàng Boä Quyeát Tranh Chaáp.(Process Synchronization). -1- Noäi dung. Khaùi nieäm cô baûn. 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 Maùy tính – Tröôøng Ñaïi hoïc Coâng ngheä Thoâng tin. Khoa Kyõ thuaät 2 Khaùi nieäm cô baûn.• 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 Ví duï: bounded buffer (ch. 4), theâm bieán ñeám. count. #define BUFFER_SIZE 10 /* 10 buffers */. typedef struct {. . . } item;. Khoa Kyõ thuaät Maùy tính – Tröôøng Ñaïi hoïc Coâng ngheä Thoâng tin 3 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;. } bieán count ñöôïc chia seû. giöõa producer vaø consumer. Quaù trình Consumer. item nextConsumed;. while(1) {. while (count == 0); /* do nothing */. nextConsumed = buffer[out] ;. count--;. out = (out + 1) % BUFFER_SIZE;. }. Khoa Kyõ thuaät Maùy tính – Tröôøng Ñaïi hoïc Coâng ngheä Thoâng tin 4 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 Khoa Kyõ thuaät Maùy tính – Tröôøng Ñaïi hoïc Coâng ngheä Thoâng tin 5 Bounded buffer (tt). • Maõ maùy cuûa caùc leänh taêng vaø giaûm bieán count coù. theå bò thöïc thi xen keõ. Giaû söû count ñang baèng 5. Chuoãi thöïc thi sau coù theå. xaûy ra:. • 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 = 4}. Caû hai process thao taùc ñoàng thôøi leân bieán chung count count := register2. Trò cuûa bieán chung naøy khoâng nhaát quaùn döôùi caùc thao. taùc cuûa hai process. Giaûi phaùp: caùc leänh count++,. count-- phaûi laø ñôn nguyeân (atomic), nghóa laø thöïc hieän nhö. moät leänh ñôn, khoâng Tröôøng Ñaïi hoïc Coâng ngheä Thoâng tin. Khoa Kyõ thuaät Maùy tính –. bò ngaét nöûa chöøng. 6 Bounded buffer (tt). Race condition: nhieàu process truy xuaát vaø thao. taùc ñoàng thôøi leân döõ lieäu chia seû (nhö. bieán count). – Keát quaû cuoái cuøng cuûa vieäc truy xuaát ñoàng thôøi. naøy phuï thuoäc thöù töï thöïc thi cuûa caùc leänh thao. taùc döõ lieäu Ñeå döõ lieäu chia seû ñöôïc nhaát quaùn, caàn. baûo ñaûm sao cho taïi moãi thôøi ñieåm chæ. coù moät process ñöôïc thao taùc leân döõ lieäu.

TAILIEUCHUNG - Chia sẻ tài liệu không giới hạn
Địa chỉ : 444 Hoang Hoa Tham, Hanoi, Viet Nam
Website : tailieuchung.com
Email : tailieuchung20@gmail.com
Tailieuchung.com là thư viện tài liệu trực tuyến, nơi chia sẽ trao đổi hàng triệu tài liệu như luận văn đồ án, sách, giáo trình, đề thi.
Chúng tôi không chịu trách nhiệm liên quan đến các vấn đề bản quyền nội dung tài liệu được thành viên tự nguyện đăng tải lên, nếu phát hiện thấy tài liệu xấu hoặc tài liệu có bản quyền xin hãy email cho chúng tôi.
Đã phát hiện trình chặn quảng cáo AdBlock
Trang web này phụ thuộc vào doanh thu từ số lần hiển thị quảng cáo để tồn tại. Vui lòng tắt trình chặn quảng cáo của bạn hoặc tạm dừng tính năng chặn quảng cáo cho trang web này.