Tải bản đầy đủ (.pdf) (7 trang)

hệ điều hành trần thị như nguyệt kiểm tra 1 đáp ánclc sinhvienzone com

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (909.17 KB, 7 trang )

KIỂM TRA
A. Trắc nghiệm
1. Giả sử máy tính có n tiến trình chạy đồng thời. Khi chạy, các tiến trình này đều yêu cầu truy xuất tài nguyên R. Biết
máy tính có k thực thể của tài nguyên R (k < n). Một Semaphore S dùng chung giữa các process để giải quyết vấn đề truy
xuất này, như code mẫu bên dưới. Value của Semaphore S được khởi tạo bằng k.
Process Pi
while (true)
{
wait(S);
…vùng code truy xuất vào một thực thể của R…
signal(S);
}
Giả sử k tiến trình đang truy xuất vào k thực thể của R, tiến trình thứ k+1 tới tiến trình thứ n đang chờ ở hàng đợi của
Semaphore S (các tiến trình đánh số từ 1 tới n).
Tìm phát biểu đúng:
a. Tại thời điểm này giá trị của value của S là k – n
b. Tại thời điểm này giá trị của value của S là k – n + 1
c. Tại thời điểm này giá trị của value của S là n – k
d. Tại thời điểm này giá trị của value của S là n – k + 1
2. Chọn phát biểu đúng với Monitor
a. Các process có thể đợi ở “entry queue” của Monitor hoặc đợi ở các “condition queue” của các biến điều kiện
(condition)
b. Cũng giống như Semaphore, chỉ có thể thao tác lên biến điều kiện của Monitor bằng hai hàm wait và signal
c. Khác hoàn toàn với Semaphore, Monitor là một cấu trúc dữ liệu không thể sử dụng để giải quyết bài toán
đồng bộ giữa các tiến trình
d. Câu a và b đúng
3. Cho process P1 (kích thước 200 KByte) cấp phát trong bộ nhớ theo phân hoạch có thứ tự như sau: 1 (300 KB), 2
(100 KB), 3 (250 KB), 4 (200 KB). Biết con trỏ đang nằm ở vùng nhớ thứ 2, vùng nhớ thứ 2 này đã được cấp phát trong
khi các vùng nhớ 1, 3 và 4 vẫn còn trống.
3.1 Hỏi process P1 sẽ được cấp pháp trong vùng nhớ nào, nếu dùng giải thuật next-fit:
a. 1


b. 2
c. 3
d. 4
3.2 Hỏi process P1 sẽ được cấp pháp trong vùng nhớ nào, nếu dùng giải thuật best-fit:
a. 1
b. 2
c. 3
d. 4

Đề khác:
Cho process P1 (kích thước 200 KByte) cấp phát trong bộ nhớ theo phân hoạch có thứ tự như sau: 1 (200 KB), 2 (100
KB), 3 (550 KB), 4 (300 KB). Biết con trỏ đang nằm ở vùng nhớ thứ 2, vùng nhớ thứ 2 này đã được cấp phát trong khi
các vùng nhớ 1, 3 và 4 vẫn còn trống.
1

SinhVienZone.com

/>

1.1 Hỏi process P1 sẽ được cấp pháp trong vùng nhớ nào, nếu dùng giải thuật next-fit:
a. 1
b. 2
c. 3
d. 4
1.2 Hỏi process P1 sẽ được cấp pháp trong vùng nhớ nào, nếu dùng giải thuật best-fit:
a. 1
b. 2
c. 3
d. 4
4. Xét một hệ thống sử dụng kỹ thuật phân trang, với bảng trang được lưu trữ trong bộ nhớ chính. Thời gian cho một

lần truy xuất bộ nhớ bình thường là 300 nanoseconds. Nếu sử dụng TLBs với hit-ratio (tỉ lệ tìm thấy) là 75%, thời gian
để tìm trong TLBs xem như bằng 0, tính thời gian truy xuất bộ nhớ trong hệ thống (effective memory reference time)
a. 300ns
c. 600ns

b. 375ns
d. 225ns

5. Xét 3 process P1, P2, P3 thực thi đồng thời, với P1 {A1, A2}; P2 {B1, B2}; P3 {C1, C2} (Tức P1 phải hoàn thành
lần lượt từng lệnh A1, A2; P2 phải hoàn thành lần lượt từng lệnh B1, B2; P3 phải hoàn thành lần lượt các lệnh C1 và C2
và các lệnh này đều là đơn nguyên). Với các điều kiện như sau:
B1 phải thực thi sau A1 (điều kiện 1); C1 và C2 thực thi sau B2 (điều kiện 2)
Dùng Semaphore S1 cho điều kiện 1 và Semaphore S2 cho điều kiện 2 và khởi tạo value cho các Semaphore bằng 0.
Đặt các lệnh wait() và signal() của các Semaphore vào dấu “……” bên dưới sao cho hợp lý để đồng bộ theo yêu cầu đề
bài (chỗ nào không cần điền có thể bỏ trống)
P1

P2

P3

……
A1
signal(S1)
A2
……
}

{
wait(S1)

B1
……
B2
signal(S2)
}

{
wait(S2)
C1
……
C2
……
}

{

Đề khác:
B1 phải thực thi sau A1 (điều kiện 1); C2 thực thi sau B2 (điều kiện 2)
P1
{
……
A1
signal(S1)
A2
……
}

P2
{
wait(S1)

B1
……
B2
signal(S2)
}

P3
{
……
C1
wait(S2)
C2
……
}

2

SinhVienZone.com

/>

B1 phải thực thi sau A1 (điều kiện 1); C2 thực thi sau B1 (điều kiện 2)
P1
{
……
A1
signal(S1)
A2
……
}


P2
{
wait(S1)
B1
signal(S2)
B2
……
}

P3
{
……
C1
wait(S2)
C2
……
}

B. Tự luận
1. Cho 2 process P0 và P1 chạy đồng thời với code như sau:

Với turn là biến chia sẻ giữa 2 process và nếu turn = i thì Pi được phép vào critical section (i = 0 hoặc 1)
Giả sử vùng remainder section của process P0 rất lớn trong khi vùng remainder section của P1 rất nhỏ, giải thích ngắn
gọn có vấn đề gì xảy ra không?
Trả lời: Khi vùng remainder section của P0 rất lớn trong khi vùng remainder section của P1 rất nhỏ, có thể có vấn đề xảy
ra như sau:
Giả sử bắt đầu turn = 0, process P0 vào vùng critical section, process P1 đang lặp vòng ở “while (turn != 1);”
Khi P0 ra khỏi vùng critical section, turn chuyển thành 1, và P0 vào vùng remainder section của mình. Lúc này
P1 vào critical section.

▬ Khi P1 thực thi xong trong critical section, turn chuyển thành 0, và P1 vào remainder section của mình. Lúc này
giả sử P0 vẫn còn trong remainder section của mình (vì đề cho vùng remainder section của P0 rất lớn)
▬ Vì remaider section của P1 rất nhỏ, nên P1 có thể nhanh chóng thực hiện xong phần này vào quay lại từ đầu nhờ
vào while. Lúc này, P1 sẽ lại bị lặp vòng ở lệnh “while (turn != 1);” do turn đang bằng 0. Trong khi đó với P0,
lúc này do remainder section của nó rất lớn, nên P0 hoàn toàn có thể vẫn còn đang ở remainder section.
Vấn đề xảy ra lúc này là: critical section đang không có process nào thực hiện trong đó, nhưng P1 không thể vào được,
P1 đang bị lặp vòng, không vào được critical section. Trong khi đó, P0 đang ở remainder section của mình, chỉ khi nào
P0 thực thi xong remainder section, quay lại vào critical section, sau đó đưa turn đang ở 0 thành 1, thì lúc này P1 mới
vào critical section được.
Vì vậy, code này vi phạm điều kiện 2 (Progress) của một bài toán đồng bộ vùng tranh chấp, tức: P0 đang ở trong
remainder section, không trong critical section, nhưng đang cản trở việc vào critical section của P1.



2. Xét một không gian địa chỉ luận lý có 256 trang, mỗi trang có kích thước 4 Kbyte. Ánh xạ vào bộ nhớ vật lý có 64
khung trang. Hỏi cần mấy bits để biểu diễn địa chỉ luận lý và mấy bits để biểu diễn địa chỉ vật lý.
Trả lời:
3

SinhVienZone.com

/>

Địa chỉ luận lý cần 20 bits để biểu diễn
Địa chỉ vật lý cần 18 bits để biểu diễn
Đề khác:
Xét một không gian địa chỉ luận lý có 512 trang, mỗi trang có kích thước 4 Kbyte. Ánh xạ vào bộ nhớ vật lý có 128
khung trang. Hỏi cần mấy bits để biểu diễn địa chỉ luận lý và mấy bits để biểu diễn địa chỉ vật lý.
Trả lời:
Địa chỉ luận lý cần 21 bits để biểu diễn

Địa chỉ vật lý cần 19 bits để biểu diễn
Xét một không gian địa chỉ luận lý có 512 trang, mỗi trang có kích thước 4 Kbyte. Ánh xạ vào bộ nhớ vật lý có 64 khung
trang. Hỏi cần mấy bits để biểu diễn địa chỉ luận lý và mấy bits để biểu diễn địa chỉ vật lý.
Trả lời:
Địa chỉ luận lý cần 21 bits để biểu diễn
Địa chỉ vật lý cần 18 bits để biểu diễn
Xét một không gian địa chỉ luận lý có 64 trang, mỗi trang có kích thước 8 Kbyte. Ánh xạ vào bộ nhớ vật lý có 128 khung
trang. Hỏi cần mấy bits để biểu diễn địa chỉ luận lý và mấy bits để biểu diễn địa chỉ vật lý.
Trả lời:
Địa chỉ luận lý cần 19 bits để biểu diễn
Địa chỉ vật lý cần 20 bits để biểu diễn

3. Cho địa chỉ luận lý là 3085 sẽ được chuyển thành địa chỉ vật lý bao
nhiêu? Biết rằng kích thước mỗi frame là 1K bytes, và bảng ánh xạ địa
chỉ như hình.

Đáp án: luận lý 3085 thành vật lý 7181
Đề khác:
Đáp án: vật lý 5085 có địa chỉ luận lý tương ứng là 2013
Đáp án: luận lý 4085 thành vật lý 8181
Đáp án: vật lý 7577 có địa chỉ luận lý tương ứng 3481

Lưu ý: Đáp án bên dưới chỉ là một phần trong đề các bạn làm. Đề các bạn làm thực tế dài hơn và có nhiều câu cô
thay số khác nhau. Đáp án này chỉ chọn một vài câu để giải
4. Xét chuỗi truy xuất bộ nhớ sau của một tiến trình, biết tiến trình có 7 trang (page) đánh số từ 1 tới 7:
1, 2, 3, 4, 2, 1, 5, 6, 2, 1, 2, 3, 7, 6, 3, 2, 1, 2, 3, 6.
Giả sử một tiến trình được cấp 4 khung trang (frame) trong bộ nhớ vật lý, ban đầu các frame này đều đang trống.
Vẽ bảng minh họa thuật toán và tính số lỗi trang (page fault) khi:
Tiến trình truy xuất chuỗi trang nhớ trên và hệ điều hành thay trang theo giải thuật LRU
4


SinhVienZone.com

/>

Trả lời:
1
2
1
1
2
*

*

3
1
2
3
*

4
1
2
3
4
*

2
1

2
3
4

1
1
2
3
4

5
1
2
5
4
*

6
1
2
5
6
*

2
1
2
5
6


1
1
2
5
6

2
1
2
5
6

3
1
2
3
6
*

7
1
2
3
7
*

6
6
2
3

7
*

3
6
2
3
7

2
6
2
3
7

1
6
2
3
1
*

2
6
2
3
1

3
6

2
3
1

6
6
2
3
1

Tổng số page fault là 10

Đề khác:
Xét chuỗi truy xuất bộ nhớ sau của một tiến trình, biết tiến trình có 7 trang (page) đánh số từ 1 tới 7:
1, 3, 5, 4, 2, 1, 5, 6, 2, 1, 2, 3, 7, 6, 3, 2, 1, 2, 3, 6.
Giả sử một tiến trình được cấp 4 khung trang (frame) trong bộ nhớ vật lý, ban đầu các frame này đều đang trống.
Vẽ bảng minh họa thuật toán và tính số lỗi trang (page fault) khi:
Tiến trình truy xuất chuỗi trang nhớ trên và hệ điều hành thay trang theo giải thuật Optimal (OPT)
Đáp án:
1
1

3
1
3

5
1
3
5


*

*

*

4
1
3
5
4
*

2
1
3
5
2
*

1
1
3
5
2

5
1
3

5
2

6
1
3
6
2
*

2
1
3
6
2

1
1
3
6
2

2
1
3
6
2

3
1

3
6
2

7
7
3
6
2
*

6
7
3
6
2

3
7
3
6
2

2
7
3
6
2

1

1
3
6
2
*

2
1
3
6
2

3
1
3
6
2

6
1
3
6
2

Tổng số page fault là 8

Đề khác:
Cho biết hiện trạng của hệ thống như sau (với 5 process từ P0 tới P4 và 4 tài nguyên A, B, C, D):
Allocation
Max

Available
ABC D
A BCD ABC D
P0 0 0 1 2
0 0 1 2 1 5 2 0
P1 1 0 0 0
1 7 5 0
P2 1 3 5 4
2 3 5 6
P3 0 6 3 2
0 6 5 2
P4 0 0 1 4
0 6 5 6
Hệ điều hành giải quyết deadlock bằng cách tránh deadlock (Deadlock Avoidance) và dùng giải thuật Banker để kiểm tra
độ an toàn của hệ thống. Trả lời các câu hỏi sau:
Nếu process P1 yêu cầu thêm tài nguyên (0, 3, 2, 0), yêu cầu được đáp ứng không, tại sao?
Trả lời:
5

SinhVienZone.com

/>

Need P1 = (0, 7, 5, 0)
P1 yêu cầu tài nguyên (0, 3, 2, 0)
(0, 3, 2, 0) < (0, 7, 5, 0): hợp lệ
Nếu yêu cầu của (0, 3, 2, 0) của P1 được cấp, trạng thái hệ thống sẽ chuyển thành:

P0
P1

P2
P3
P4

Allocation
ABC D
0 0 1 2
1 3 2 0
1 3 5 4
0 6 3 2
0 0 1 4

Max
A BCD
0 0 1 2
1 7 5 0
2 3 5 6
0 6 5 2
0 6 5 6

Available
ABC D
1 2 0 0

Need
ABC D
0 0 0 0
0 4 3 0
1 0 0 2
0 0 2 0

0 6 4 2

Dùng giải thuật Banker kiểm tra xem hệ thống có an toàn không:
Work = Available = (1, 2, 0, 0)
Với Work = (1, 2, 0, 0)  Có thể cấp tài nguyên cần cho P0
Sau khi P0 thực thi xong, Allocation (0, 0, 1, 2) của P0 được trả cho hệ điều hành  Work = (1, 2, 1, 2)
Với Work = (1, 2, 1, 2)  Có thể cấp tài nguyên cần cho P2
Sau khi P2 thực thi xong, Allocation (1, 3, 5, 4) của P2 được trả cho hệ điều hành  Work = (2, 5, 6, 6)
Với Work = (2, 5, 6, 6)  Có thể cấp tài nguyên cần cho P1 hoặc P3. Giả sử cấp cho P3
Sau khi P3 thực thi xong, Allocation (0, 6, 3, 2) của P3 được trả cho hệ điều hành  Work = (2, 11, 9, 8)
Với Work = (2, 11, 9, 8)  Có thể cấp tài nguyên cần cho P1 hoặc P4. Giả sử cấp cho P1.
Sau khi P1 thực thi xong, Allocation (1, 3, 2, 0) của P1 được trả cho hệ điều hành  Work = (3, 14, 11, 8)
Với Work = (3, 14, 11, 8), cuối cùng, P4 được cấp phát tài nguyên cần. Sau khi P4 thực thi xong, Allocation (0, 0, 1, 4)
của P4 được trả cho hệ điều hành  Work = (3, 14, 12, 12)

Chuỗi an toàn là: P0, P2, P3, P1, P4
Vậy hệ thống vẫn an toàn nếu cấp phát cho P1 (0, 3, 2, 0)  Yêu cầu này được đáp ứng.

Đề khác:
Cho biết hiện trạng của hệ thống như sau (với 5 process từ P0 tới P4 và 4 tài nguyên A, B, C, D):
Allocation
Max
Available
ABC D
A BCD ABC D
P0 0 0 1 2
0 0 1 2 1 5 2 0
P1 1 0 0 0
1 7 5 0
P2 1 3 5 4

2 3 5 6
P3 0 6 3 2
0 6 5 2
P4 0 0 1 4
0 6 5 6

Hệ điều hành giải quyết deadlock bằng cách tránh deadlock (Deadlock Avoidance) và dùng giải thuật Banker
để kiểm tra độ an toàn của hệ thống. Trả lời các câu hỏi sau:
Hệ thống có an toàn không? Có bao nhiêu chuỗi an toàn tổng cộng?
Trả lời:
6

SinhVienZone.com

/>

Allocation
ABC D
P0 0 0 1 2
P1 1 0 0 0
P2 1 3 5 4
P3 0 6 3 2
P4 0 0 3 4

Max
Available
A BCD ABC D
0 0 1 2 1 4 2 0
1 6 4 0
2 3 5 6

0 6 5 2
0 6 9 6

Need
ABC D
0 0 0 0
0 6 4 0
1 0 0 2
0 0 2 0
0 6 6 2

Tìm chuỗi an toàn:
Đặt Work = Available = (1, 4, 2, 0)
Với Work = (1, 4, 2, 0)  Có thể cấp tài nguyên cần cho P0 hoặc P3. Giả sử cấp cho P0
Sau khi P0 thực thi xong, Allocation (0, 0, 1, 2) của P0 được trả cho hệ điều hành  Work = (1, 4, 3, 2)
Với Work = (1, 4, 3, 2)  Có thể cấp tài nguyên cần cho P2 hoặc P3. Giả sử cấp cho P2
Sau khi P2 thực thi xong, Allocation (1, 3, 5, 4) của P2 được trả cho hệ điều hành  Work = (2, 7, 8, 6)
Với Work = (2, 7, 8, 6)  Có thể cấp tài nguyên cần cho P1 hoặc P3, hoặc P4. Giả sử cấp cho P1
Sau khi P1 thực thi xong, Allocation (1, 0, 0, 0) của P1 được trả cho hệ điều hành  Work = (3, 7, 8, 6)
Với Work = (3, 7, 8, 6)  Có thể cấp tài nguyên cần cho P3 hoặc P4. Giả sử cấp cho P3.
Sau khi P3 thực thi xong, Allocation (0, 6, 3, 2) của P3 được trả cho hệ điều hành  Work = (3, 13, 11, 8)
Với Work = (3, 13, 11, 8), cuối cùng, P4 được cấp phát tài nguyên cần. Sau khi P4 thực thi xong, Allocation (0, 0, 3, 4)
của P4 được trả cho hệ điều hành  Work = (3, 13, 14, 12)

Chuỗi an toàn là: P0, P2, P1, P3, P4
Có chuỗi an toàn tồn tại  hệ thống an toàn
Tổng cộng 36 chuỗi an toàn trong trường hợp này

7


SinhVienZone.com

/>


×