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) + Giải pháp đồng bộ • Busy – waiting tốn thời gian CPU • Sleep Wake up trợ giúp của HĐH 2. Xét 2 tiến trình xử lý đoạn chương trình sau: 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 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 = Ax3; C= A + x4; D= B + C; E = Dx5 + C; Giả sử có 5 process mỗi process sẽ thực hiện 1 biểu thức. 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 ? 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
Trường Đại học Công Nghệ Thông Tin (UIT) Nội Dung Thi • Chương – Chương • Thời gian: 90’ • – câu hỏi • Khơng sử dụng tài liệu • Các dạng tập cấp phát 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 +/ Giải pháp đồng • • Busy – waiting tốn thời gian CPU Sleep & Wake up trợ giúp HĐH Xét giải pháp đồng 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 giải pháp bảo đảm điều kiện không? Gợi Ý : điều kiện giải thuật cần đảm bảo : - Độc quyền truy xuất (Mutual exclusion) thời điểmchỉ có process vào vùng tranh chấp - Progress process khơng nằm vùng CS khơng cản process khác vào vùng CS - Bounded waiting process phải chờ thời gian hữu hạn Giải: (xem slide trang 19-22 chương 5-2) Đối với Pi - Độc quyền truy xuất thỏa turn thời điểm có process truy xuất vào - Progress không thỏa mãn Sau P0 thực thi xong turn = (j = bên P0 ) flag [0] = true; flag [1] = false; sau thực thi xong, thoát vùng CS P0 ngăn cản P1 vào vùng CS Để P1 vào CS turn = 1; flag[0] = false; - Bounded waiting thỏa mãn Xét 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 hóa hoạt động tiến trình này, cho A1 B1 hoàn tất trước A2 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 toán S1 S2 A1 B2 ; B1 A2 Bài toán dùng biến semanphore Value biến điều gán giá trị Sử dụng semaphore S1, S2; S1.value = S2.value = 0; P1: A1 ; Signal(S1); Wait(S2) ; A2 P2: B1 ; Signal(S2); Wait(S1) ; B2 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ó process process thực biểu thức Giải: Sử dụng Process P1,P2,P3,P4,P5 để thực thi biểu thức A, B, C, D, E Mơ hình hóa lại thứ tự thực 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 dùng biến semanphore: S1, S2, S3, S4, S5 Value biến điều gán giá trị 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 Xét trạng thái hệ thống với loại tài nguyên A, B, C, D sau: a Xác định nội dung bảng Need b Hệ thống có trạng thái an tồn khơng? c Nếu tiến trình P2 có u cầu thêm tài nguyên (4,0,0,4), yêu cầu có đáp ứng 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 0 NEED B 6 C D 4 b Tìm chuỗi an tồn, có hệ thống an tồn khơng có hệ thống khơng an tồn Allocation Need Work A B CD Lớn ABCD AB CD P0 2 4 3 P1 0 6 P2 4 khơng làm nhỏ P3 0 12 10 P4 0 5 12 11 15 16 Ta có chuỗi an tồ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 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 tồn không? c Nếu P1 yêu cầu (0, 4, 2, 0) cấp phát cho 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 P1 (1,4,2,0); (0,3,3,0) Available (1,1,0,0) Xét lại hệ thống trạng thái xem có an tồn khơng, an tồn cấp phát cho P1 ngược lại ko cấp phát Bài tập chương Trường Đại học Công Nghệ Thông Tin (UIT) Giả sử nhớ phân thành phân vùng có kích thước 400K, 500K, 600K, 200K ( theo thứ tự ), cho biết tiến trình có kích thước 212K, 417K, 112K 426K ( theo thứ tự ) cấp phát nhớ nào, sử dụng : • Thuật tốn First fit • Thuật tốn Best fit • Thuật tốn Worst fit • Thuật tốn Next fit • Thuật tốn cho phép sử dụng nhớ hiệu qủa trường hợp ? Giải: Thứ tự cấp phát 212K 417K 112K 426K First fit : đưa vào ô trống từ xuống phù hợp Best fit: đưa vào ô trống nhỏ phù hợp Worst fit: đưa vào ô trống lớn phù hợp Next fit: đưa vào ô trống phù hợp từ lên Phần xét trường hợp, ô nhớ cấp phát cho process (Tĩnh) Ô nhớ First fit Best fit 400k 212K 212K 500k 417K 417K 600k 112K 426K 200k 112K ô nhớ 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 đề khơng u cầu rõ sv làm cách đủ điểm Tuy nhiên làm theo cách tồn giải thuật phải làm theo cách Tự nhận xét Xét khơng gian có nhớ luận lý kích thước trang 2KByte Tính số trang độ dời (offset) địa sau: 2.575 ; 11.366 ; 25.000 ; 256 Giải: Đơn vị nhớ luận lý Byte Kích thước trang = 2x 1024 = 2.048 Byte Số trang = phần nguyên (địa / kích thước trang) Offset = phần dư (địa / 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ự Xét khơng gian có nhớ luận lý có 64 trang, trang có 1024 từ, từ byte ánh xạ vào nhớ vật lý có 32 trang: a.Địa nhớ vật lý có bit? b.Địa nhớ luận lý có bit? c.Có mục bảng phân trang? Mỗi mục chứa bit? Giải: Xem xét 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ớ byte Kích thước trang nhớ = 1024* = 2048 byte a Tính số bit nhớ vật lý số bit nhớ vật lý = số trang nhớ vật lý * kích thước trang = 32 * 2048 = 2^5 * 2^11 = 2^16 có 16 bit b Tính số bit nhớ luận lý = 64 * 2048 = 2^6 * 2^11 = 2^17 có 17 bit c từ hình vẽ ta thấy: Số mục phân trang = 64 mục (tổng số trang nhớ luận lý) Mỗi mục có bit (số bit trang nhớ vật lý) Trường Đại học Công Nghệ Thông Tin (UIT) Xét hệ thống sử dụng kỹ thuật phân trang, với bảng trang lưu trữ nhớ a.Nếu thời gian cho lần truy xuất nhớ bình thường 150 ns, thời gian cho thao tác truy xuất nhớ hệ thống ? b.Nếu sử dụng TLBs với hit-ratio ( tỉ lệ tìm thấy) 95%, thời gian để tìm TLBs 20ns , tính thời gian truy xuất nhớ hệ thống ( effective memory reference time) Giải: a Nếu thời gian cho lần truy xuất nhớ bình thường X 2X thời gian cho thao tác truy xuất nhớ hệ thống */Một thao tác truy xuất nhớ hệ thống = pageTable + physical X = 150ns 2X = 300ns 300ns cho thao tác truy xuất nhớ hệ thống b Nếu sử dụng TLBs với hit-ratio ( tỉ lệ tìm thấy) , thời gian để tìm TLBs Thì thời gian truy xuất nhớ hệ thống là: – Khi số trang có TLB (hit) :+ – Khi số trang khơng có 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) Biết thời gian cho thao tác truy xuất nhớ 200ns Nếu hệ thống sử dụng thêm bảng TLB để tăng hiệu suất truy xuất nhớ, biết sác xuất tìm bảng TLB 96% Thời gian cho thao tác truy xuất nhớ có sử dụng TLB 160ns Hỏi thời gian để tìm bảng TLB bao nhiêu? Giải: pageTable = physic pageTable + physic = 200ns pageTable = physic = 100ns (TLB+physic)*0.96 + (TLB+pageTable+physic)*0.04 = 160 TLB = ? Xét khơng gian địa nhớ ảo 22bit kích thước trang 4096 byte a) Có bit dùng để xác định số trang? Bao nhiêu bit dùng để xác định offset? b) Bảng trang có mục? c) Trong suốt trình thực thi, chuyển đổi MMU chuyển đổi nhớ địa ảo sang địa vật lý sau: 0000000101101011010111 0000010110101011010111 0000011110000010110100 0010000001000010110100 0001010001010100010010 0000000101010100010010 0000000101000000010010 0000010110000000010010 Hỏi có bao trang truy xuất MMU sinh địa trên? Cho biết số trang, số frame mà MMU truy xuất Giải: Trường Đại học Công Nghệ Thông Tin (UIT) a ý đơn vị nhớ 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 nhớ ảo – offset = 22 -12 = 10 bit b bảng trang có mục = 2^10 = 1024 mục c Ta cần phân chia phần, phần offset số trang số frame Đếm từ phải sang trái 12 bit offset – 10 bit lại số frame số page, chuyển 10 bit từ nhị phân sang số thập phân MMU truy suất phần mà offset phải 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 trang truy xuất (vì trang truy xuất lần) Địa trang frame truy xuất là: 0000000101 -> 0000010110 (từ trang frame 38 ) 0000011110 -> 0010000001 (tự tính) 0001010001-> 0000000101 (tự tính) 0000000101 -> 0000010110 (tự tính) Tính địa vật lý cho địa logic sau: • 1,200 ; 1,0; 0,700 ; 2,0 ; 2,600 Giải: Địa vật lý = Base(tra bảng) + D (Chú ý xem xét D < Limit hợp lệ ngược lại địa không hợp lệ) 1, 200 1200+200 (xét thấy 200 đưa trang tham khảo cuối hàng đợi bit -> thay trang Sinh viên tự xem slide chương làm theo giải thuật Giải: Cơ hội thứ 2 2 2 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 21 21 21 21 21 21 21 21 20 20 20 71 71 71 71 71 71 71 71 71 71 70 70 51 31 31 31 31 31 31 31 31 31 31 31 30 30 21 21 21 21 21 21 21 21 21 21 41 41 41 41 41 41 41 41 41 41 41 41 41 40 40 31 31 31 31 31 31 31 x x x x Số page-fault = 10 x x x x x x