You are on page 1of 5

Để tránh sụp đổ, người ta chỉ có cho phép tối đa 3 xe lưu thông đồng thời qua một cây

cầu rất cũ. Hãy xây dựng thủ tục ArriveBridge(int direction) và ExitBridge() kiểm
soát giao thông trên cầu sao cho :

Tại mỗi thời điểm, chỉ cho phép tối đa 3 xe lưu thông trên cầu.

Tại mỗi thời điểm, chỉ cho phép tối đa 3 xe lưuthông cùng hướng
trên cầu.

Mỗi chiếc xe khi đến đầu cầu sẽ gọi ArriveBridge(direction) để kiểm tra điều kiện
lên cầu, và khi đã qua cầu được sẽ gọi ExitBridge() để báo hiệu kết thúc.

Giả sử hoạt động của mỗi chiếc xe được mô tả bằng một tiến trình Car() sau đây:

Car(int direction) /* direction xác định hướng di chuyển của mỗi chiếc xe.*/
{

RuntoBridge(); // Đi về phía cầu


ArriveBridge(direction);
PassBridge(); // Qua cầu
Exit Bridge();
RunfromBridge(); // Đã qua cầu

Đoạn găng: là đoạn đi trên cầu PassBridge()

-Cầu là tài nguyên chung: Các tiến trình (Card) chia sẻ cầu để thực hiện công việc
- Khi số tiến trình vượt qua 3 thì hệ thống xảy ra mâu thuẩn.

Để vượt qua sông, các nhân viên Microsof và các Linux hacker cùng sử dụng một bến
sông và phải chia sẻ một số thuyền đặc biệt. Mỗi chiếc thuyền này chỉ cho phép chở 1
lần 4 người, và phải có đủ 4 người mới khởi hành được. Để bảo đảm an toàn cho cả 2
phía, cần tuân thủ các luật sau :

a. Không chấp nhận 3 nhân viên Microsoft và 1 Linux hacker trên cùng một
chiếc thuyền.
b. Ngược lại, không chấp nhận 3 Linux hacker và 1 nhân viên Microsoft trên
cùng một chiếc thuyền.
c. Tất cả các trường hợp kết hợp khác đều hợp pháp.
d. Thuyền chỉ khởihành khi đã có đủ 4 hành khách.

Cần xây dựng 2 thủ tục HackerArrives() và EmployeeArrives() được gọi tương ứng
bởi 1 hacker hoặc 1 nhân viên khi họ đến bờ sông để kiểm tra điều kiện có cho phép
họ xuống thuyền không ? Các thủ tục này sẽ sắp xếp những người thích hợp có thể lên
thuyền. Những người đã được lên thuyền khi thuyền chưa đầy sẽ phải chờ đến khi
người thứ 4 xuống thuyền mới có thể khởi hành qua sông. (Không quan tâm đến số
lương thuyền hay việc thuyền qua sông rồi trở lại…Xem như luôn có thuyền để sắp
xếp theo các yêu cầu hợp lệ)

Giả sử hoạt động của mỗi hacker được mô tả bằng một tiến trình Hacker() sau đây:

Hacker()
{

RuntoRiver(); // Đi đến bờ sông


HackerArrives (); // Kiểm tra điều kiện xuống thuyền
CrossRiver(); // Khởi hành qua sông

và hoạt động của mỗi nhân viên được mô tả bằng một tiến trình Employee()
sau đây:

Employee()
{

RuntoRiver(); // Đi đến bờ sông


EmployeeArrives (); // Kiểm tra điều kiện xuống thuyền
CrossRiver(); // Khởi hành qua sông

Đoạn Găng: CrossRive(): Thuyền là tai nguyên tranh chấp. Khi có nhiều hơn số tiến trình (
Hacker, Employee) được phép trong đoạn găng sẽ xảy ra mâu thuẫn ( chìm thuyền)

Đồng bộ: Đủ 4 người và 2 hacker, 2 nhân viên:

Yêu cầu đồng bộ xảy ra khi kiểm tra điều kiện xuống thuyền, phải có đủ 2 tiến trình nhân
viên và 2 tiến trình hacker thì mới thực hiện được CrossRiver();

Bài thi giữa kỳ:


Bài 1: Một hệ thống có 3 loại tài nguyên (A,B,C) và 5 tiến trình (P0,P1,P2,P3,P4) kèm theo
các thông số được mô tả trong bảng sau:
Allocation Max Available
A B C A B C A B C
P0 3 0 1 10 7 4 6 2 2
P1 3 2 1 8 5 3
P2 2 1 3 6 3 4
P3 0 3 0 9 6 3
P4 1 1 2 7 4 5

Tiến trình P1 yêu cầu tài nguyên là (2,0,1) . Sử dụng giải thuật banker , cho biết có thể thực
hiện yêu cầu cấp phát tài nguyên này hay không?
Bài 2: Một hệ thống có 3 loại tài nguyên (A,B,C) và 5 tiến trình (P0,P1,P2,P3,P4) kèm theo
các thông số được mô tả trong bảng sau:
Allocation Max Available
A B C A B C A B C
P0 3 0 1 10 7 4 6 2 2
P1 3 2 1 8 5 3
P2 2 1 3 6 3 4
P3 0 3 0 9 6 3
P4 1 1 2 7 4 5

Tiến trình P1 yêu cầu tài nguyên là (1,1,0) . Sử dụng giải thuật banker , cho biết có thể thực
hiện yêu cầu cấp phát tài nguyên này hay không?
Bài 3: Cho hệ thống có 5 tiến trình và 3 loại tài nguyên (A,B,C) . Giả sử hệ thống đang ở
trạng thái sau:
Max Allocation Available
A B C A B C A B C
P1 2 3 2 0 1 2 2 3 3
P2 3 7 5 0 0 1
P3 3 4 3 2 0 0
P4 2 2 2 1 1 1
P5 2 9 0 2 4 0
a) Tính số tài nguyên mỗi loại của hệ thống
b) Hãy tìm một trạng thái an toàn
c) Nếu tiến trình P3 có yêu cầu thêm tài nguyên (A:0,B:0,C:3) áp dụng giải thuật banker
xét xem có nên cấp phát cho P3 hay không? Tại sao?
Bài 4: Cho hệ thống có 5 tiến trình và 3 loại tài nguyên (A,B,C) . Giả sử hệ thống đang ở
trạng thái sau:
Max Allocation Available
A B C A B C A B C
P1 3 4 3 2 0 0 2 3 3
P2 3 7 5 0 0 1
P3 2 3 2 0 1 0
P4 2 9 0 2 4 0
P5 2 2 2 1 1 1
a) Tính số tài nguyên mỗi loại của hệ thống
b) Hãy tìm một trạng thái an toàn
c) Nếu tiến trình P3 có yêu cầu thêm tài nguyên (A:1,B:2,C:0) áp dụng giải thuật banker
xét xem có nên cấp phát cho P3 hay không? Tại sao?
Bài 5:Cho hệ thố ng có 5 tiế n trình và 4 loa ̣i tài nguyên (A, B, C, D). Giả sử hệ thố ng
đang ở tra ̣ng thái sau:
Max Allocation Available
A B C D A B C D A B C D
P1 0 0 1 2 0 0 1 1 1 5 2 0
P2 1 7 5 0 1 0 0 0
P3 2 3 5 6 1 3 5 4
P4 0 6 5 2 0 6 3 2
P5 0 9 5 6 0 0 1 4

a) Tính số tài nguyên mỗi loa ̣i của hệ thố ng.
b) Tiń h nhu cầ u còn la ̣i (Need) của hệ thố ng.
c) Hay ̃ tìm một tra ̣ng thái an toàn (safe state).
̀ h P2 có yêu cầ u thêm tài nguyên (A: 0, B: 4, C: 2, D: 0), áp
d) Nế u tiế n trin
du ̣ng giải thuật nhà băng (Banker’s Algorithm), xét xem có nên cấ p phát
cho P2 hay không? Ta ̣i sao?

Bài 6: Một hệ thống có 4 tiến trình P1,P2,P3,P4 và 5 loại tài nguyên R1,R2,R3,R4,R5. Trong
đó:

R1 có 1 thể hiện

R2 có 2 thể hiện

R3 có 1 thể hiện

R4 có 3 thể hiện

R5 có 2 thể hiện

P1 đang giữ 1 thể hiện của R2 và yêu cầu 1 thể hiện của R1

P2 đang giữ 1 thể hiện của R1 và yêu cầu 1 thể hiện của R3

P3 đang giữ 1 thể hiện của R3 và yêu cầu 1 thể hiện của R4

P4 đang giữ 1 thể hiện của R4 và yêu cầu 1 thể hiện của R2

a) Hãy vẽ đồ thị cấp phát tài nguyên như mô tả trên.


b) Trạng thái trên có xảy ra deaklock không, tại sao?

Bài 7: Giả sử chuỗi tiến trình trong hằng đợi sẵn sàng có thứ tự từ P1-P5 . Vẽ biểu đồ găng,
tính thời gian hoàn thành và thời gian đợi cho các thuật toán FCFS, và lập lịch ưu tiên.

Process Burst time Priority


P1 10 3
P2 1 1
P3 2 3
P4 1 4
P5 5 2

Bài 8: Cho chuỗi tham chiếu trang sau:

1,2,3,4,5,5,4,3,2,1,6,7,1,9,1,7,6,5,8,3,2,1

Giả sử tại thời điểm ban đầu mọi frame đều rỗi. Trong trường hợp hệ thống có 6 frame, vẽ
lược đồ phân phối frames theo các giải thuật FIFO, LRU, OPT tính số lỗi trang.

Bài 9: Trong chế độ phân trang 2 mức địa chỉ logic dạng <p1,p2,D>, hệ thống sử dụng 10 bit
cho P1, kích thước mỗi page là 1024 byte, dung lượng bộ nhớ vật lý là 2^30 byte.

Tính P2
Địa chỉ (10,1010,1025) có hợp lệ không. Tại sao?

Địa chỉ (10,1030,1020) có hợp lệ không. Tại sao?

Bài 9: Cho chuỗi tham chiếu trang sau:

1,2,3,4,5,5,4,3,2,1,6,7,1,9,1,7,6,5,8,3,2,1

Giả sử tại thời điểm ban đầu các trang 7,8,9 đang có mặt trong bộ nhớ theo đúng thứ tự.
Trong trường hợp hệ thống có 3 frames, vẽ lược đồ phân phối trang frames theo các giải thuật
FIFO, LRU và tính số lỗi trang.

Bài 10; Trình bày ý tưởng thuật toán lập lịch ổ đĩa SSTF. Cho hằng đợi yêu cầu: 98, 1983,
37,122,14,124,65,67. Đầu từ đĩa đăng ở cylinder 53. Vẽ lược đồ và tính quãng đường khi sử
dụng lập lịch SSTF, SCAN, C-SAN

You might also like