BÁO CÁO NHÓM 12 minh họa bài toán người thợ cắt tóc sleeping barber problem

17 138 0
BÁO CÁO NHÓM 12 minh họa bài toán người thợ cắt tóc sleeping barber problem

Đ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

Trường đại học Bách Khoa Hà Nội Hanoi University of Science and Technology BÁO CÁO NHÓM 12 Minh họa tốn người thợ cắt tóc Sleeping Barber Problem Giảng viên: Tsĩ Đỗ Quốc Huy Thành viên nhóm : - Lê Duy Anh Dũng – 20198170 - Trần Trung Dũng – 20198171 - Lê Đức Mạnh - 20198189 MỤC LỤC 01 TÀI NGUYÊN GĂNG 02 GIẢI PHÁP ĐIỀU ĐỘ DEADLOCK VÀ STARVATION 03 MƠ TẢ BÀI TỐN VÀ THUẬT TỐN 04 MINH HỌA CHƯƠNG TRÌNH 01 TÀI NGUYÊN GĂNG DEADLOCK VÀ STARVATION TÀI NGUYÊN GĂNG  Là tài nguyên hạn chế khả sử dụng chung Các tiến trình hoạt động đồng thời thường cạnh tranh việc sử dụng tài nguyên dùng chung (cùng ghi vào không gian nhớ chung hay ghi liệu vào file chia sẻ)  Dùng chung tài nguyên găng dẫn đến khơng đảm bảo tính tồn vẹn liệu Cần có chế đồng hóa tiến trình U CẦU ĐỒNG BỘ HĨA TIẾN TRÌNH  Loại trừ lẫn (Mutal Exclusion): Khơng có hai tiến trình lúc đoạn găng  Tiến triển (Progress): Tài nguyên găng khả phục vụ tồn tiến trình muốn vào đoạn găng, tiến trình phải sử dụng tài nguyên găng  Chờ đợi có hạn (Bounded wait): Nếu tài nguyên găng hết khả phục vụ tồn tiến trình muốn vào đoạn găng, tiến trình phải xếp hàng chờ đợi chờ đợi hữu hạn DEADLOCK DEADLOCK xuất    hiệnhay khi:nhiều tiến trình phải chờ để giải phóng tài nguyên Hai Nhiều tiến trình chờ sử dụng tài nguyên trạng thái mãi Các tiến trình chờ kiện khơng xảy DEADLOCK xuất điều     kiện xảy ra: Tồn tài nguyên găng Chờ đợi trước vào đoạn găng Khơng có hệ thống phân phối lại tài ngun găng Chờ đợi vịng trịn STARVATION Một tiến trình bị trưng dụng tài nguyên nhiều lần => gây chết đói Giải pháp: ghi lại số lần bị trưng dụng 02 CÁC GIẢI PHÁP ĐIỀU ĐỘ GIẢI PHÁP SEMAPHORE Semaphore biến ngun khơng tính tốn đến tốn tử khởi tạo, truy cập thơng qua hai tốn tử ngun tố wait signal Có loại Semaphore: Semaphore nhị phân Semaphore 03 MƠ TẢ BÀI TỐN VÀ THUẬT TỐN MƠ TẢ BÀI TOÁN DEADLOCK VÀ STARVATION  Deadlock - xảy khách hàng thợ cắt tóc chờ đợi lẫn  Starvation xảy khách hàng phải chờ đợi thời gian dài, khách hàng khác không tuân theo trật tự, thợ cắt tóc gọi khách cách ngẫu nhiên DEADLOCK STARVATION THUẬT TOÁN THUẬT TOÁN Giải vấn đề deadlock starvation => sử dụng ba biến semaphore :    Customers: Đếm số khách hàng phòng chờ Barber (mang giá trị 1): Kiểm tra tình trạng thợ cắt tóc xem có hay khơng làm việc AccessSeat: Cho phép khách hàng truy cập vào số lượng ghế cịn trống tăng giảm số lượng Biến dùng để thực thao tác loại trừ lẫn  Cần thêm biến FreeSeat để đếm số lượng ghế trống tại, khách hàng ngồi vào cịn ghế trống, khơng, khách hàng rời THUẬT TOÁN Giải vấn đề deadlock starvation => sử dụng ba biến semaphore:    Customers: Đếm số khách hàng phòng chờ Barber (mang giá trị 1): Kiểm tra tình trạng thợ cắt tóc xem có hay khơng làm việc AccessSeat: Cho phép khách hàng truy cập vào số lượng ghế cịn trống tăng giảm số lượng Biến dùng để thực thao tác loại trừ lẫn  Cần thêm biến FreeSeat để đếm số lượng ghế trống tại, khách hàng ngồi vào cịn ghế trống, khơng, khách hàng rời THUẬT TOÁN Semaphore Customers = 0; Semaphore Barber = 0; Semaphore AccessSeat = 1; Customer { while(true) { int FreeSeats = N; /*Chỉ cho phép khách hàng bước vào phòng đợi thời điểm.*/ wait(AccessSeat); /*Nếu số lượng ghế hàng đợi trống lớn 0*/ if(FreeSeats > 0) { Barber { /*Khách hàng ngồi xuống, biến FreeSeats giảm 1*/ while(true) { FreeSeats ; /*Trạng thái ngủ - chờ đợi khách hàng */ wait (Customers);   /*Thơng báo tới thợ cắt tóc*/ signal(Customers); /*Giảm biến semaphore, bảo vệ số lượng ghế khả dụng.*/ wait(AccessSeat); /*Giải phóng khóa AccessSeat */ signal(AccesSeat); /*Ghế trống tăng lên.*/ FreeSeats++; /* Đưa khách hàng cắt tóc*/ cut_hair(); /*Nếu thợ cắt tóc bận, đợi phòng chờ*/ wait(Barber); signal(Barber); /*Giải phóng biến mutex ghế.*/ // Khách hàng cắt tóc } else { signal(AccessSeat); /*Người thợ cắt tóc*/ /*Giải phóng khóa AcessSeat */ signal(AccessSeat); } } //Khách hàng rời } } } 04 CHƯƠNG TRÌNH MINH HỌA ... FreeSeats++; /* Đưa khách hàng cắt tóc*/ cut_hair(); /*Nếu thợ cắt tóc bận, đợi phịng chờ*/ wait (Barber) ; signal (Barber) ; /*Giải phóng biến mutex ghế.*/ // Khách hàng cắt tóc } else { signal(AccessSeat);... deadlock starvation => sử dụng ba biến semaphore :    Customers: Đếm số khách hàng phòng chờ Barber (mang giá trị 1): Kiểm tra tình trạng thợ cắt tóc xem có hay không làm việc AccessSeat: Cho... deadlock starvation => sử dụng ba biến semaphore:    Customers: Đếm số khách hàng phòng chờ Barber (mang giá trị 1): Kiểm tra tình trạng thợ cắt tóc xem có hay không làm việc AccessSeat: Cho

Ngày đăng: 07/02/2022, 21:51

Mục lục

    MÔ TẢ BÀI TOÁN

Tài liệu cùng người dùng

Tài liệu liên quan