Cho đoạn code sau:
while (TRUE) {
while (lock == 1); // wait
lock = 1;
critical-section ();
lock = 0;
Noncritical-section ();
}
Khởi gán giá trị lock=0. Giải pháp này có thể vi phạm điều kiện nào?
A -
có thể vi phạm điều kiện thứ nhất
B -
có thể vi phạm điều kiện thứ hai
C -
có thể vi phạm điều kiện thứ ba
D -
không phạm vi phạm điều kiện nào cả
2-
Cho đoạn code sau:
while (TRUE) {
while (lock == 1); // wait
lock = 1;
critical-section ();
lock = 1;
Noncritical-section ();
}
Cho giá trị lock ban đầu là 0. Hỏi khả năng vi phạm 4 điều kiện trên như thế nào?
A -
không vi phạm 4 điều kiện
B -
thứ nhất và thứ hai
C -
thứ nhất và thứ 4
D -
thứ hai và thứ 3
3-
Giải pháp cờ hiệu có thể vi phạm điều kiện thứ nhất về miền găng, vậy đâu là nguyên nhân?
A -
do không xác định miền găng
B -
không có kiểm tra đồng bộ biến lock
C -
do đặt critical-section sai chỗ
D -
không tìm thấy nguyên nhân sai
4-
Giải pháp kiểm tra luân phiên đề nghị xem xét
A -
cho nhiều tiến trình
B -
giải pháp tổng quát giống kiểu cờ hiệu
C -
cho hai tiến trình
D -
Tất cả đều đúng
5-
Cho hai đoạn code sau:
Đoạn 1: while (TRUE) {
while (turn!= 0); // wait
critical-section ();
turn = 1;
Noncritical-section ();
}
Đoạn 2:
while (TRUE) {
while (turn!= 1); // wait
critical-section ();
turn = 0;
Noncritical-section ();
}
Biến turn có vai trò gì trong hai đoạn code trên
A -
kiểm soát đoạn code
B -
phản ánh tiến trình nào vào miền găng
C -
kiểm soát vòng lặp
D -
biến làm cờ hiệu
6-
Cho hai đoạn code sau:
Mẫu code 1
while (TRUE) {
while (turn!= 0); // wait
critical-section ();
turn = 0;
Noncritical-section ();
}
Mẫu code 2
while (TRUE) {
while (turn!= 1); // wait
critical-section ();
turn = 0;
Noncritical-section ();
}
Hai đoạn code trên có thực hiện đồng bộ được không?
A -
Được, vì biến turn không cho phép khoá tiến trình còn lại
B -
Được, vì đây là mẫu code của giải pháp kiểm tra luân phiên
C -
Không, vì biến turn=0 trong mẫu thứ nhất khoá mẫu code thứ 2
D -
Phải sửa mẫu code thứ 2 while (turn=1); thì đồng bộ được
7-
Cho hai đoạn code sau:
Đoạn 1
while (TRUE) {
while (turn!= 0); // wait
critical-section (); //CS()
turn = 1;
Noncritical-section ();
}
Đoạn 2
while (TRUE) {
while (turn!= 1); // wait
critical-section (); //CS()
turn = 0;
Noncritical-section ();
} Chỉ ra nguyên nhân bảo đảm cho hai tiến trình A, B không vào miền găng CS
A -
khi turn=0, A vào CS, khi ra khỏi CS nó gán turn=1 cho B vào CS
B -
khi turn=1, A vào CS, khi ra khỏi CS nó gán turn=1 cho B vào CS
C -
khi turn=0, A vào CS, khi ra khỏi CS nó gán turn=0 cho B vào CS
D -
Hai đoạn code trên bị sai.
8-
Giải pháp kiểm tra luân phiên có thể vi phạm điều kiện nào trong 4 điều kiện miền găng?
A -
hai
B -
ba
C -
bốn
D -
không vi phạm
9-
Các tiến trình chia sẻ hai biến chung:
int turn; // đến phiên ai
int interesse[2]; // khởi động là FALSE
while (TRUE) {
int j = 1-i; // j là tiến trình còn lại
interesse[i]= TRUE;
turn = j;
while (turn == j && interesse[j]==TRUE);
critical-section ();
interesse[i] = FALSE;
Noncritical-section ();
}
Đoạn code trên bảo đảm được 4 điều kiện miền găng, vì:
A -
ngăn chặn được tình trạng mâu thuẫn truy xuất
B -
khi interesse[i]=interesse[j]=TRUE, turn (0 hoặc 1) chỉ cho 1 tiến trình vào miền găng
C -
Cả a và b đều đúng
D -
Cả a và b đều sai
10-
Nhóm giải pháp busy waiting có chung đặc điểm nào sau đây?