Thực hành Hệ điều hành - Bài thực hành số 7.1: Quản lý bộ nhớ
Trong chế độ quản lý này, toàn bộ code chương trình và dữ liệu phải được nạp vào bộ nhớ
trước khi process tương ứng bắt đầu chạy. Ta có thể dùng 1 trong các chiến lược phân phối
vùng nhớ cho 1 process như sau :
• "First Fit" tìm vùng nhớ đầu tiên có kích thức đủ chứa process.
• "Best Fit" tìm vùng nhớ nhỏ nhất có kích thức đủ chứa process.
• "Worst Fit" tìm vùng nhớ lớn nhất có kích thức đủ chứa process.
trước khi process tương ứng bắt đầu chạy. Ta có thể dùng 1 trong các chiến lược phân phối
vùng nhớ cho 1 process như sau :
• "First Fit" tìm vùng nhớ đầu tiên có kích thức đủ chứa process.
• "Best Fit" tìm vùng nhớ nhỏ nhất có kích thức đủ chứa process.
• "Worst Fit" tìm vùng nhớ lớn nhất có kích thức đủ chứa process.
Bạn đang xem tài liệu "Thực hành Hệ điều hành - Bài thực hành số 7.1: Quản lý bộ nhớ", để tải tài liệu gốc về máy hãy click vào nút Download ở trên.
File đính kèm:
- thuc_hanh_he_dieu_hanh_bai_thuc_hanh_so_7_1_quan_ly_bo_nho.pdf
Nội dung text: Thực hành Hệ điều hành - Bài thực hành số 7.1: Quản lý bộ nhớ
- Trang 2 Nếu chia bộ nhớ thành các block độ dài 10KB, vùng nhớ cho 4 process yêu cầu như câu 1.1 sẽ như thế nào. Ta gọi chiến lược phân phối này là gì ? Giải thích kết quả ? Process P1 chiếm chính xác 220KB (22 block), P2 chiếm 420KB (42 block), P3 chiếm 120KB (12 block) và P4 chiếm 430KB (43 block). Tổng kích thước vùng nhớ đã phân phối cho 4 process là 220K+420KB+120KB+430KB. Tổng không gian bị lãng phí là 8K + 3K + 8K + 4K = 23KB. Ta gọi chiến lược phân phối bộ nhớ này là "chiến lược phân phối theo block", nó giúp ta tránh được việc tạo ra nhiều partition có kích thước quá nhỏ không đủ dùng cho process nào hết và như thế là tránh lãng phí. Nếu chọn kích thước block lớn, không gian bị lãng phí trong việc cấp phát vùng nhớ cho 1 process sẽ lớn. Nếu dùng chiến lược phân phối bộ nhớ ra thành các partition động như câu 1.1, ta có thể di dời vùng nhớ của các partition lại sát nhau để thu hồi các vùng nhớ trống nhỏ rời rạc và dùng lại vùng nhớ trống này. Còn nếu dùng chiến lược phân phối theo block thì mỗi process sẽ không dùng hết block cuối cùng được phân phối, phần thừa này sẽ bị lãng phí vì ta không thề thu hồi chúng để dùng cho process khác. Tuy nhiên vùng lãng phí của từng process thường rất nhỏ vì ta chọn kích thước block nhỏ (thí dụ block = 10KB thì mỗi process lãng phí tối đa 10KB). 2. Segmentation Kỹ thuật quản lý bộ nhớ theo đoạn (Segmentation) cho phép chương trình chia vùng nhớ làm việc của mình thành nhiều segment rời rạc và độc lập nhau. Mỗi segment có kích thước thay đổi theo yêu cầu để chứa thông tin nào đó của chương trình (segment chứa code, segment chứa bảng dữ liệu 1, segment chứa bảng dữ liệu 2, ). Khi cần, mỗi segment được nạp toàn bộ vào 1 vùng nhớ liên tục của máy tính. Ta dùng ký hiệu để miêu tả địa chỉ của 1 ô nhớ : s là chỉ số segment, d là offset cục bộ của ô nhớ cần truy xuất. Giả sử process dùng 3 segment với bảng đặc tả segment như sau : Chỉ số inRam Base Length Modified Used xrw 0 0 132 1 1 7435 400 0 0 011 2 0 325 xrw là các bit miêu tả các quyền các truy xuất segment như thi hành, read, write. Giả sử process thực hiện việc ghi dữ liệu vào ô nhớ . 2.1 Câu hỏi 3 Địa chỉ của ô nhớ RAM thực sự chứa ô nhớ trên là gì ? Segment 1 đang nằm trong RAM ở vùng nhớ bắt đầu ở địa chỉ 7435, ô nhớ cần truy xuất có offset = 260. Vậy ô nhớ này đang nằm ở địa chỉ RAM 7435+260 = 7695. 2.2 Câu hỏi 4 Hệ thống quản lý bộ nhớ sẽ hiệu chỉnh nội dung gì trong bảng đặc tả segment khi process thực hiện truy xuất ô nhớ trên. Bit "Used" của segment tương ứng sẽ bị set lên 1 mỗi khi có truy xuất ô nhớ nào đó trong segment. Ngoài ra hoạt động truy xuất trên là ghi dữ liệu vào ô nhớ nên bit "Modified" của segment cũng được set lên 1.
- Trang 4 Chương trình trên thực hiện công việc như sau : x = N; do {T[X] = S[X] + V; x -= K} while (x >= 0); Sau khi thi hành xong, các trang bị hiệu chỉnh nội dung sẽ được ghi lên lại bộ nhớ ngoài. 3.1 Câu hỏi 7 Biết rằng mỗi lệnh, mỗi hằng và mỗi biến chỉ chiếm 1 ô nhớ, hãy miêu tả không gian địa chỉ của process (số trang, offset trong trang) của từng dữ liệu của chương trình. Ta cần thiết lập quyền truy xuất cho các trang của process như thế nào ? Data Trang/Offset Quyền Data Trang/Offset Quyền E 1 / 508 LX S[0] 11 / 168 L E+3 1 / 511 LX S[343] 11 / 511 L E+4 2 / 0 LX S[344] 12 / 0 LE E+6 2 / 2 LX S[799] 12 / 455 LE N 6 / 500 L T[0] 12 / 456 LE K 8 / 10 L T[55] 12 / 511 LE V 8 / 100 L T[56] 13 / 0 E T[567] 13 / 511 E T[568] 14 / 0 E T[799] 14 / 231 E Các hoạt động quản lý bộ nhớ được miêu tả nhờ những tác vụ cơ bản như sau : Trap (p) : Xử lý lỗi khi truy xuất trang p mà chưa có trong bộ nhớ. Charg (p,c) : Nạp trang ảo p vào trang thật c của RAM. Dech (p,c) : Giải phóng và ghi lại trang ảo p đang chiếm trang thật c của RAM. Mod (p,c,d) : Hiệu chỉnh bảng quản lý trang, p : chỉ số trang ảo của process, c : chỉ số trang thật, d : quyền truy xuất trang này. Giả sử hệ thống dành 6 trang thật có chỉ số 17, 21, 22, 23, 37 và 42 để chạy chương trình trên. Dùng giải thuật phân phối trang FIFO (first-in, first out) và giả sử lúc đầu, chưa có trang nào của process được nạp vào bộ nhớ RAM. 3.2 Câu hỏi 8 Miêu tả trình tự các hoạt động quản lý bộ nhớ để chạy process trên. Hãy cho bảng đặc tả trang của process sau khi chạy xong process. E : TRAP(1), CHARG(1, 17), MOD(1, 17, XL) // bắt đầu chương trình TRAP(6), CHARG(6, 21), MOD(6, 21, L) // tham khảo N E+1 TRAP(12), CHARG(12, 22), MOD(12, 22, LE) // tham khảo S[799] E+2 TRAP(8), CHARG(8, 23), MOD(8, 23, L) // tham khảo V E+3 TRAP(14), CHARG(14, 37), MOD(14, 37, E) // tham khảo T[799] E+4 TRAP(2), CHARG(2, 42), MOD(2, 42, XL) // tiếp tục chương trình Không có lỗi truy xuất trang cho đến khi X = 567.