1. Trang chủ
  2. » Giáo Dục - Đào Tạo

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 161 0

Đ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

Thông tin cơ bản

Định dạng
Số trang 17
Dung lượng 37,78 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

MỤC LỤC01 03 02 MÔ TẢ BÀI TOÁN VÀ THUẬT TOÁN 04 MINH HỌA CHƯƠNG TRÌNH TÀI NGUYÊN GĂNG DEADLOCK VÀ STARVATION GIẢI PHÁP ĐIỀU ĐỘ... Các tiến trình hoạt động đồng thời thường cạnh tranh nha

Trang 1

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

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

Sleeping Barber Problem

Trường đại học Bách Khoa Hà Nội

Hanoi University of Science and Technology

Trang 2

MỤC LỤC

01

03

02

MÔ TẢ BÀI TOÁN

VÀ THUẬT TOÁN

04

MINH HỌA CHƯƠNG TRÌNH

TÀI NGUYÊN GĂNG

DEADLOCK VÀ STARVATION

GIẢI PHÁP ĐIỀU ĐỘ

Trang 3

TÀI NGUYÊN GĂNG

DEADLOCK VÀ STARVATION

01

Trang 4

TÀI NGUYÊN GĂNG

 Là các tài nguyên hạn chế về khả năng sử dụng chung Các tiến trình hoạt động đồng thời thường cạnh tranh nhau trong việc sử dụng tài nguyên dùng chung (cùng ghi vào không gian nhớ chung hay cùng ghi dữ liệu vào một file chia sẻ)

 Dùng chung tài nguyên găng có thể dẫn đến không đảm bảo tính toàn vẹn dữ liệu

Cần có cơ chế đồng bộ hóa tiến trình

Trang 5

YÊU CẦU ĐỒNG BỘ HÓA TIẾN TRÌNH

Loại trừ lẫn nhau (Mutal Exclusion): Không có hai tiến trình cùng lúc trong đoạn găng

Tiến triển (Progress): Tài nguyên găng còn khả năng phục vụ và tồn tại tiến trình muốn vào đoạn găng, thì tiến trình đó phải được 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ả năng phục vụ và vẫn tồn tại tiến trình muốn vào đoạn găng, thì tiến trình đó phải được

xếp hàng chờ đợi và sự chờ đợi là hữu hạn

Trang 6

 Hai hay nhiều tiến trình phải chờ nhau để giải phóng tài nguyên

 Nhiều tiến trình chờ sử dụng các tài nguyên trong trạng thái mãi mãi

 Các tiến trình chờ một sự kiện không bao giờ xảy ra

DEADLOCK xuất

hiện khi:

DEADLOCK

DEADLOCK xuất hiện khi cả 4 điều kiện xảy ra:

 Tồn tại tài nguyên găng

 Chờ đợi trước khi vào đoạn găng

 Không có hệ thống phân phối lại tài nguyên găng

 Chờ đợi vòng tròn

Trang 7

Một tiến trình bị trưng dụng tài nguyên quá nhiều lần => gây ra sự chết đói Giải pháp: ghi lại số lần bị trưng dụng

Trang 8

CÁC GIẢI PHÁP ĐIỀU ĐỘ

02

Trang 9

GIẢI PHÁP SEMAPHORE

Semaphore là một biến nguyên nếu không tính toán đến toán tử khởi tạo, nó chỉ có

thể truy cập thông qua hai toán tử nguyên tố là wait và signal

Có 2 loại Semaphore:

Semaphore nhị phân Semaphore

Trang 10

MÔ TẢ BÀI TOÁN

VÀ THUẬT TOÁN

03

Trang 11

MÔ TẢ BÀI TOÁN

Trang 12

DEADLOCK VÀ STARVATION

DEADLOCK

STARVATION

Starvation xảy ra khi một khách hàng phải chờ đợi trong một thời

gian dài, khi những khách hàng khác không tuân theo trật tự, hoặc thợ cắt tóc gọi khách một cách ngẫu nhiên.

Deadlock - xảy ra khi cả khách hàng và thợ cắt tóc đều cùng chờ đợi

lẫn nhau.

Trang 13

THUẬT TOÁN

Trang 14

Customers: Đếm số khách hàng trong phòng chờ

Barber (mang giá trị 0 và 1): Kiểm tra tình trạng của 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 và có thể tăng hoặc giảm số lượng Biến này dùng để thực

hiện thao tác loại trừ lẫn nhau

Cần thêm một biến FreeSeat để đếm số lượng ghế trống hiện tại, khách hàng sẽ ngồi vào nếu còn ghế trống, nếu không, khách

hàng rời đi

THUẬT TOÁN

Giải quyết vấn đề deadlock và starvation => sử dụng ba biến semaphore :

Trang 15

Customers: Đếm số khách hàng trong phòng chờ

Barber (mang giá trị 0 và 1): Kiểm tra tình trạng của 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 và có thể tăng hoặc giảm số lượng Biến này dùng để thực

hiện thao tác loại trừ lẫn nhau

Cần thêm một biến FreeSeat để đếm số lượng ghế trống hiện tại, khách hàng sẽ ngồi vào nếu còn ghế trống, nếu không, khách

hàng rời đi

THUẬT TOÁN Giải quyết vấn đề deadlock và starvation => sử dụng ba biến semaphore:

Trang 16

THUẬT TOÁN

Semaphore Customers = 0;

Semaphore Barber = 0;

Semaphore AccessSeat = 1;

int FreeSeats = N;

Barber {

while(true) {

/*Trạng thái ngủ - chờ đợi khách hàng */

wait (Customers); 0

  /*Giảm biến semaphore, bảo vệ số lượng ghế khả dụng.*/

wait(AccessSeat); 0

/*Ghế trống tăng lên.*/

FreeSeats++; 5

/* Đưa khách hàng đi cắt tóc*/

signal(Barber); 1

/*Giải phóng biến mutex về ghế.*/

signal(AccessSeat); 1

/*Người thợ cắt tóc*/

}

}

Customer { while(true) {

/*Chỉ cho phép một khách hàng bước vào phòng đợi tại một thời điểm.*/

wait(AccessSeat); 0

/*Nếu số lượng ghế hàng đợi trống còn lớn hơn 0*/

if(FreeSeats > 0) {

/*Khách hàng ngồi xuống, biến FreeSeats giảm đi 1*/

FreeSeats ; 4

/*Thông báo tới thợ cắt tóc*/

signal(Customers); 0

/*Giải phóng khóa AccessSeat */

signal(AccesSeat); 1 cut_hair();

/*Nếu thợ cắt tóc đang bận, đợi tại phòng chờ*/

wait(Barber); 0

// Khách hàng được cắt tóc

} else {

/*Giải phóng khóa AcessSeat */

signal(AccessSeat);

//Khách hàng rời đi.

} }

Trang 17

CHƯƠNG TRÌNH MINH HỌA

04

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

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w