Tải bản đầy đủ (.docx) (21 trang)

BÀI TẬP HỆ ĐIỀU HÀNH ( CÁC GIẢI THUẬT LẬP LỊCH, CẤP PHÁT BỘ NHỚ, GIẢI PHÁP ĐỒNG BỘ,... CÓ LỜI GIẢI)

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 (1.41 MB, 21 trang )

Trường Đại học Công Nghệ Thông Tin (UIT)

Nội Dung Thi


Chương 2 – Chương 8



Thời gian: 90’



4 – 6 câu hỏi



Không sử dụng tài liệu.



Các dạng bài tập cấp phát bộ nhớ



First in frist out



Round robin





Trường Đại học Công Nghệ Thông Tin (UIT)


Trường Đại học Công Nghệ Thông Tin (UIT)


Trường Đại học Công Nghệ Thông Tin (UIT)


Trường Đại học Công Nghệ Thông Tin (UIT)


Trường Đại học Công Nghệ Thông Tin (UIT)


Trường Đại học Công Nghệ Thông Tin (UIT)

Bài tập chương 5
+/ Giải pháp đồng bộ



Busy – waiting  tốn thời gian CPU
Sleep & Wake up  trợ giúp của HĐH

1. Xét giải pháp đồng bộ hóa sau:
Pi



Trường Đại học Công Nghệ Thông Tin (UIT)
while (TRUE) {
int j = 1-i;
flag[i]= TRUE;

turn = j;

while (turn == j && flag[j]==TRUE);
critical-section ();
flag[j] = FALSE;
Noncritical-section ();
}
Đây có phải là một giải pháp bảo đảm 3 điều kiện không?

Gợi Ý : 3 điều kiện của giải thuật cần đảm bảo :
- Độc quyền truy xuất (Mutual exclusion)  tại 1 thời điểmchỉ có 1 process vào vùng
tranh chấp.
- Progress  khi 1 process không nằm trong vùng CS thì không cản các process khác vào
vùng CS
- Bounded waiting  các process phải chờ trong thời gian hữu hạn.
Giải: (xem slide trang 19-22 chương 5-2)
Đối với mỗi Pi
- Độc quyền truy xuất thỏa  turn tại 1 thời điểm chỉ có 1 process truy xuất vào
- Progress  không thỏa mãn
Sau khi P0 thực thi xong thì turn = 0 (j = 1 bên P0 ) flag [0] = true; flag [1] = false;
 sau khi thực thi xong, thoát ra vùng CS nhưng P0 vẫn ngăn cản P1 vào vùng CS
Để P1 vào CS được thì turn = 1; flag[0] = false;
- Bounded waiting  thỏa mãn

2. Xét 2 tiến trình xử lý đoạn chương trình sau:


Trường Đại học Công Nghệ Thông Tin (UIT)
process P1 { A1 ; A2 }

process P2 { B1 ; B2 }

Đồng bộ hóa hoạt động của 2 tiến trình này, sao cho cả A1 và B1 đều hoàn tất trước khi
A2 và B2 bắt đầu

Gợi Ý: sử dụng semaphore
Semanphore  value, wait, signal
Giải :
Mô hình hóa lại thứ tự thực thi theo yêu cầu bài toán.
S1

S2

A1  B2 ; B1  A2
Bài toán này dùng 2 biến semanphore
Value của 2 biến này điều gán giá trị là 0.
Sử dụng 2 semaphore S1, S2; S1.value = S2.value = 0;
P1: A1 ; Signal(S1); Wait(S2) ; A2
P2: B1 ; Signal(S2); Wait(S1) ; B2

3. Sử dụng semaphore để viết lại chương trình sau theo mô hình xử lý đồng hành:
A = x1 + x2; B = A*x3; C= A + x4; D= B + C; E = D*x5 + C;
Giả sử có 5 process mỗi process sẽ thực hiện 1 biểu thức.
Giải:

Sử dụng 5 Process P1,P2,P3,P4,P5 để lần lượt thực thi 5 biểu thức A, B, C, D, E
Mô hình hóa lại thứ tự thực hiện bài toán
S1

P1

S1

P2 S2
S3

P3

P4

S5

S4

P5


Trường Đại học Công Nghệ Thông Tin (UIT)
Bài toán này dùng 5 biến semanphore: S1, S2, S3, S4, S5
Value của 5 biến này điều gán giá trị là 0.
S1.value = S2.value = S3.value = S4.value = S5.value = 0;
P1: A; Signal (S1); Signal (S1);
P2: wait (S1); B; signal (S2);
P3: wait(S1); C; signal (S3); signal (S4);
P4: wait(S2); wait(S3); D; signal (S5);

P5: wait(S4); wait(S5); E;

Chương 6
1. Xét trạng thái hệ thống với các loại tài nguyên A, B, C, và D như sau:

a. Xác định nội dung bảng Need
b. Hệ thống có ở trạng thái an toàn không?
c. Nếu tiến trình P2 có yêu cầu thêm tài nguyên (4,0,0,4), yêu cầu này có được đáp
ứng ngay lập tức hay không?
Gợi ý:


Trường Đại học Công Nghệ Thông Tin (UIT)
a. Bảng Need = Bảng Max – Bảng Allocation

P0
P1
P2
P3
P4

A
2
0
4
0
0

NEED
B

4
6
1
0
6

C
0
1
0
2
5

D
1
0
4
0
4

b. Tìm chuỗi an toàn, nếu có thì hệ thống an toàn nếu không có thì hệ thống không an
toàn

Allocation

Need

Work
A B CD
2 6 2 1

Lớn hơn

ABCD

AB CD

P0

2 0 1 2

2 4 0 1

4 6 3 3

P1

1 0 4 0

0 6 1 0

5 6 7 3

P2

1 3 5 2

4 1 0 4

không làm vì nhỏ hơn


P3

0 6 3 2

0 0 2 0

5 12 10 5

P4

0 0 1 2

0 6 5 4

5 12 11 7
6 15 16 9

Ta có chuỗi an toàn P0(4,6,3,3) -> P1(5,6,7,3) -> P3(5,12,10,5) -> P4(5,12,11,7)->
P2(6,15,16,9)
-> Hệ Thống An Toàn


Trường Đại học Công Nghệ Thông Tin (UIT)
c. Xét P2(4,0,0,4)  Available (2,6,2,1)  Sai  Không cấp phát.

2. Cho Sơ đồ cấp phát tài nguyên hệ thống ở thời điểm T0

a.Tìm Need .
b. Hệ thống có an toàn không?
c. Nếu P1 yêu cầu (0, 4, 2, 0) thì có thể cấp phát cho nó hay không?

Giải.
a. Tự giải
b. Tự giải
c. Xét P1(0,4,2,0)  Available (1,5,2,0)  Đúng
Xét lại hệ thống ở thời điểm T1.
Thay đổi bảng Allocation, Need của P1  (1,4,2,0); (0,3,3,0) và Available (1,1,0,0)
Xét lại hệ thống ở trạng thái mới xem có an toàn không, nếu an toàn thì cấp phát cho P1
ngược lại thì sẽ ko cấp phát.

Bài tập chương 7


Trường Đại học Công Nghệ Thông Tin (UIT)
1. Giả sử bộ nhớ chính được phân thành các phân vùng có kích thước là 400K, 500K,
600K, 200K ( theo thứ tự ), cho biết các tiến trình có kích thước 212K, 417K, 112K và
426K ( theo thứ tự ) sẽ được cấp phát bộ nhớ như thế nào, nếu sử dụng :


Thuật toán First fit



Thuật toán Best fit



Thuật toán Worst fit




Thuật toán Next fit



Thuật toán nào cho phép sử dụng bộ nhớ hiệu qủa nhất trong trường hợp trên ?

Giải:
Thứ tự cấp phát 212K  417K  112K  426K
First fit : đưa vào ô trống đầu tiên từ trên xuống phù hợp.
Best fit: đưa vào ô trống nhỏ nhất phù hợp
Worst fit: đưa vào ô trống lớn nhất phù hợp
Next fit: đưa vào ô trống đầu tiên phù hợp từ dưới lên.
Phần này sẽ xét 2 trường hợp,
 1 ô nhớ chỉ được cấp phát cho 1 process (Tĩnh)
Ô nhớ
First fit
Best fit
400k
212K
212K
500k
417K
417K
600k
112K
426K
200k
112K
 1 ô nhớ được cấp phát cho nhiều process (Động)
Ô nhớ

400k
500k
600k
200k

First fit
212K, 112K
417K
426K

Best fit
212K, 112K
417K
426K

Worst fit
112K
417K
212K

Next fit

Worst fit
112K
417K
212K

Next fit

417K

212K
112K

417K
212K
112K


Trường Đại học Công Nghệ Thông Tin (UIT)
Nếu đề bài không yêu cầu rõ thì sv làm cách nào cũng được đủ điểm. Tuy nhiên làm theo
cách nào thì toàn bộ các giải thuật phải làm theo cách đó.
Tự nhận xét.
2. Xét một không gian có bộ nhớ luận lý kích thước 1 trang là 2KByte. Tính số trang và
độ dời (offset) của từng địa chỉ sau:
2.575 ; 11.366 ; 25.000 ; 256
Giải:
Đơn vị của bộ nhớ luận lý là Byte.
Kích thước của 1 trang là = 2x 1024 = 2.048 Byte
Số trang = phần nguyên của (địa chỉ / kích thước trang)
Offset = phần dư của (địa chỉ / kích thước trang)

2.575  số trang = 2.575/ 2.048 = 1; offset = 2.575 - 2.048*1 = 527
Còn lại tương tự.

3. Xét một không gian có bộ nhớ luận lý có 64 trang, mỗi trang có 1024 từ, mỗi từ là 2
byte được ánh xạ vào bộ nhớ vật lý có 32 trang:
a.Địa chỉ bộ nhớ vật lý có bao nhiêu bit?
b.Địa chỉ bộ nhớ luận lý có bao nhiêu bit?
c.Có bao nhiêu mục trong bảng phân trang? Mỗi mục chứa bao nhiêu bit?


Giải: Xem xét quá trình chuyển đổi trang nhớ từ luận lý  vật lý


Trường Đại học Công Nghệ Thông Tin (UIT)

Chú ý đơn vị trang nhớ là byte.
Kích thước của trang nhớ = 1024* 2 = 2048 byte.
a. Tính số bit bộ nhớ vật lý
số bit bộ nhớ vật lý = số trang bộ nhớ vật lý * kích thước của trang
= 32 * 2048 = 2^5 * 2^11 = 2^16  có 16 bit.
b. Tính số bit bộ nhớ luận lý
= 64 * 2048 = 2^6 * 2^11 = 2^17  có 17 bit.
c.
từ hình vẽ ta sẽ thấy:
Số mục phân trang = 64 mục (tổng số trang của bộ nhớ luận lý)
Mỗi mục có 5 bit (số bit trang của bộ nhớ vật lý).


Trường Đại học Công Nghệ Thông Tin (UIT)
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.
a.Nếu thời gian cho một lần truy xuất bộ nhớ bình thường là 150 ns, thì mất bao nhiêu
thời gian cho một thao tác truy xuất bộ nhớ trong hệ thống này ?
b.Nếu sử dụng TLBs với hit-ratio ( tỉ lệ tìm thấy) là 95%, thời gian để tìm trong TLBs là
20ns , tính thời gian truy xuất bộ nhớ trong hệ thống ( effective memory reference time)
Giải:

a. Nếu thời gian cho một lần truy xuất bộ nhớ bình thường là X thì mất 2X thời gian cho
một thao tác truy xuất bộ nhớ trong hệ thống này.
*/Một thao tác truy xuất bộ nhớ trong hệ thống = pageTable + physical

X = 150ns  2X = 300ns  mất 300ns cho một thao tác truy xuất bộ nhớ trong hệ thống
này.

b. Nếu sử dụng TLBs với hit-ratio ( tỉ lệ tìm thấy) là , thời gian để tìm trong TLBs là 
Thì thời gian truy xuất bộ nhớ trong hệ thống là:
– Khi chỉ số trang có trong TLB (hit)

:+

– Khi chỉ số trang không có trong TLB (miss)

:+X+X

 = ( + X) + ( + 2X)(1 – ) = (20+150)*0.95 + (20+300)*0.05 = ?? ns.

X


Trường Đại học Công Nghệ Thông Tin (UIT)
5. Biết thời gian cho một thao tác truy xuất trong bộ nhớ là 200ns. Nếu hệ thống sử
dụng thêm bảng TLB để tăng hiệu suất truy xuất bộ nhớ, biết sác xuất tìm trong bảng
TLB là 96%. Thời gian cho một thao tác truy xuất trong bộ nhớ có sử dụng TLB là 160ns.
Hỏi thời gian để tìm trong bảng TLB là bao nhiêu?
Giải:
pageTable = physic
pageTable + physic = 200ns
 pageTable = physic = 100ns
(TLB+physic)*0.96 + (TLB+pageTable+physic)*0.04 = 160
 TLB = ?
6. Xét một bộ không gian địa chỉ bộ nhớ ảo 22bit và kích thước trang là 4096 byte.

a) Có bao nhiêu bit dùng để xác định số trang? Bao nhiêu bit dùng để xác định
offset?
b) Bảng trang có bao nhiêu mục?
c) Trong suốt quá trình thực thi, bộ chuyển đổi MMU chuyển đổi bộ nhớ địa chỉ ảo
sang địa chỉ vật lý như sau:
0000000101101011010111  0000010110101011010111
0000011110000010110100  0010000001000010110100
0001010001010100010010  0000000101010100010010
0000000101000000010010  0000010110000000010010
Hỏi có bao bao nhiêu trang được truy xuất bởi MMU sinh ra các địa chỉ trên? Cho biết
các chỉ số trang, số frame mà MMU truy xuất
Giải:


Trường Đại học Công Nghệ Thông Tin (UIT)

a. chú ý đơn vị bộ nhớ là byte.
4096 = 2^12
Offset = số bit biểu diễn cho kích thước trang = 12 bit.
Số bit xác định số trang = không gian địa chỉ bộ nhớ ảo – offset = 22 -12 = 10 bit.
b. bảng trang có bao nhiêu mục = 2^10 = 1024 mục.
c.
Ta cần phân chia ra 2 phần, phần offset và chỉ số trang hoặc chỉ số frame.
Đếm từ phải sang trái 12 bit offset – 10 bit còn lại là chỉ số frame và chỉ số page, chuyển
10 bit này từ nhị phân sang số thập phân
MMU chỉ truy suất phần nào mà offset phải bằng nhau
0000000101|101011010111  0000010110|101011010111  Đúng
0000011110|000010110100  0010000001|000010110100  Đúng



Trường Đại học Công Nghệ Thông Tin (UIT)
0001010001|010100010010  0000000101|010100010010  Đúng
0000000101|000000010010  0000010110|000000010010  Đúng
 3 trang được truy xuất. (vì trang 5 truy xuất 2 lần)
Địa chỉ trang và frame truy xuất là:
0000000101 -> 0000010110 (từ trang 5  frame 38 )
0000011110 -> 0010000001 (tự tính)
0001010001-> 0000000101 (tự tính)
0000000101 -> 0000010110 (tự tính)

7. Tính địa chỉ vật lý cho từng địa chỉ logic sau:



1,200 ; 1,0; 0,700 ; 2,0 ; 2,600

Giải:
Địa chỉ vật lý = Base(tra bảng) + D (Chú ý xem xét D < Limit  hợp lệ ngược lại địa chỉ
không hợp lệ)
1, 200  1200+200 (xét thấy 200<500) = 1400
1, 0  1200+0 = 1200


Trường Đại học Công Nghệ Thông Tin (UIT)
0, 700  300+ 700 = 1000
2,0  tương tự
2,600  tương tự.

Bài tập chương 8
1. Xét chuỗi truy xuất bộ nhớ sau:

1, 2 , 3 , 4 , 3 , 5 , 1 , 6 , 2 , 1 , 2 , 3 , 7 , 5 , 3 , 2 , 1 , 2 , 3 , 6
Có bao nhiêu lỗi trang xảy ra khi sử dụng các thuật toán thay thế sau đây, giả sử có 4
khung trang và ban đầu các khung trang đều trống ?


LRU



FIFO



Optimal



Cơ hội thứ 2

Giải:
PFSR:
- chuyển process – blocked
- đọc trang tham chiếu vào 1 frame trống hoặc frame được thay thế, process đợi I/O
nhường CPU cho process khác
- I/O hoàn tất, HĐH gây ra ngắt  PFSR gây ra ngắt HĐH: cập nhật page table và chuyển
process về trạng thái ready

Giải thuật.
FiFO: trang cũ nhất được thay thế
OPT: thay thế trang nhớ sẽ được thay thế trễ nhất trong tương lai



Trường Đại học Công Nghệ Thông Tin (UIT)
LRU: Thay thế cho trang không được tham chiếu lâu nhất
Cơ hội thứ 2:Sừ dụng giải thuật thay thề giống FIFO tuy nhiên có sử dụng thêm 1 bit, khi
frame mới được nạp vào vùng nhớ thì bật lên bit 1. có 1 con trỏ duyệt các bit này. Nếu đi
qua 1 bit xét.
bit 1 -> 0 và đưa trang tham khảo về cuối hàng đợi
bit 0 -> thay trang này

Sinh viên tự xem slide chương 8 và làm theo giải thuật.
Giải: Cơ hội thứ 2

1 2 3 4 3 5 1 6 2 1 2 3 7 5 3 2 1 2 3 6 5 1 5 1 5 5
11 11 11 11 11 10 10 61 61 61 61 61 61 61 61 61 61 61 61 61 60 11 11 11 11 1
1

21 21 21 21 21 21 21 21 20 20 20 71 71 71 71 71 71 71 71 71 71 70 70 51 5
1

31 31 31 31 31 31 31 31 31 31 31 30 30 21 21 21 21 21 21 21 21 21 21 2
1

41 41 41 41 41 41 41 41 41 41 41 41 41 40 40 31 31 31 31 31 31 31 3
1

x

x


x

x

Số page-fault = 10.

x

x

x

x

x

x



×