Bài giảng Hệ điều hành - Chương 3: Quản lý bộ nhớ - Ngô Hữu Dũng

pdf 64 trang ngocly 1890
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Hệ điều hành - Chương 3: Quản lý bộ nhớ - Ngô Hữu Dũng", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên

Tài liệu đính kèm:

  • pdfbai_giang_he_dieu_hanh_chuong_3_quan_ly_bo_nho_ngo_huu_dung.pdf

Nội dung text: Bài giảng Hệ điều hành - Chương 3: Quản lý bộ nhớ - Ngô Hữu Dũng

  1. HỆ ĐIỀU HÀNH (OPERATING SYSTEM CONCEPTS) Wiley - Operating System Concepts(Silberschatz).9th
  2. Giới thiệu môn học . Mục tiêu môn học . Vai trò của HĐH . Nguyên lý hoạt động của HĐH đa nhiệm . Nội dung . Phần 1: Tổng quan (Overview) . Phần 2: Quản lý tiến trình (Process Management) . Phần 3: Quản lý bộ nhớ (Memory Management) . Phần 4: Quản lý I/O (I/O Management) . Phần 5: Quản lý hệ thống file (Storage Management) 1.2
  3. Memory Management CHƯƠNG 3: QUẢN LÝ BỘ NHỚ 1.3
  4. Dẫn nhập: . Bộ nhớ chính là thiết bị lưu trữ duy nhất thông qua đó CPU có thể trao đổi thông tin với môi trường ngoài . Bộ nhớ chính được tổ chức như một mảng một chiều các từ nhớ (word), mỗi từ nhớ có một địa chỉ . Hầu hết các hệ điều hành hiện đại đều cho phép chế độ đa nhiệm => có nhiều process trong bộ nhớ tại một thời điểm => cần vai trò quản lý bộ nhớ của OS 1.4
  5. Chức năng quản lý bộ nhớ của OS . Sự tương ứng giữa địa chỉ logic và địa chỉ vật lý (physic) : làm cách nào để chuyển đổi một địa chỉ tượng trưng (symbolic) trong chương trình thành một địa chỉ thực trong bộ nhớ chính? . Quản lý bộ nhớ vật lý: làm cách nào để mở rộng bộ nhớ có sẵn nhằm lưu trữ được nhiều tiến trình đồng thời? . Chia sẻ thông tin: làm thế nào để cho phép hai tiến trình có thể chia sẻ thông tin trong bộ nhớ? . Bảo vệ: làm thế nào để ngăn chặn các tiến trình xâm phạm đến vùng nhớ được cấp phát cho tiến trình khác? 1.5
  6. Địa chỉ và chuyển đổi địa chỉ (1) . Địa chỉ . Logic => không gian địa chỉ logic . Vật lý => không gian đia chỉ vật lý . Chuyển đổi địa chỉ logic => vật lý . 3 thời điểm chuyển đổi . Được thực hiện bởi ai? . Ưu nhược điểm ? 1.6
  7. Địa chỉ và chuyển đổi địa chỉ (2) Test.c pp Bộ nhớ chính 1.7
  8. Địa chỉ và chuyển đổi địa chỉ (3) . Các bước chuyển đổi chương trình 1.8
  9. Địa chỉ và chuyển đổi địa chỉ (4) 1.9
  10. Các loại địa chỉ . Địa chỉ logic: con gọi là địa chỉ ảo, là tất cả các địa chỉ do bộ xử lý tạo ra . Địa chỉ physic: là địa chỉ thực tế mà chương trình quản lý bộ nhớ nhìn thấy và thao tác . Không gian địa chỉ: là tập hợp tất cả các địa chỉ ảo phát sinh bởi một chương trình . Không gian vật lý: là tập hợp tất cả các địa chỉ vật lý tương ứng với các địa chỉ ảo 1.10
  11. Chuyển đổi địa chỉ (1) . Việc chuyển đổi địa chỉ logic -> địa chỉ vật lý có thể thực hiện vào một trong 3 thời điểm . compile time . load time . execution time . Nhận xét . Compile time : . Thực hiện vào thời điểm biên dịch . Phải biết trước vị trí nap tiến trình trong bộ nhớ -> biêndịchlại cho những lần nạp sau 1.11
  12. Chuyển đổi địa chỉ (2) • Nhận xét . load time . Thựchiện bởi bộ loader, khi nạp vào bộ nhớ . Khi có sự thay đổi vị trí của tiến trình (sau đó) cần load lại để tính toán lại địa chỉ . Execution (run) time . Nếu trong quá trình thực thi tiến trình có di chuyển vị trí tiến trình thì thời điểm chuyển đổi địa chỉ là run time . Cần dùng cơ chế phần cứng đặc biệt 1.12
  13. Chuyển đổi địa chỉ (3) . MMU (memory-management unit)– phần cứng giúp chuyển đổi địa chỉ vào thời điểm run-time 1.13
  14. Các yêu cầu quản lý bộ nhớ . Tăng hiệu suất sử dụng CPU . Cần hỗ trợ multiprogramming . Lưu trữ nhiều tiến trình trong BNC? . Các yêu cầu tổ chức lưu trữ tiến trình: . Relocation . Protection . Sharing . Logical Organization . Physical Organization 1.14
  15. Các mô hình tổ chức bộ nhớ . Tiến trình được nạp toàn bộ vào bộ nhớ . Vùng nhớ cấp cho tiến trình có thể : . Liên tục . Fixed partitioning . Dynamic partitioning . Không liên tục . Segmentation . Paging 1.15
  16. Cấp phát liên tục . Nguyên tắc: . Chương trình được nạp toàn thể vào BNC để thi hành . Cần 1 vùng nhớ liên tục, đủ lớn để chứa Chương trình . KGĐC: liên tục . KGVL: có thể tổ chức . Fixed partition . Variable partition (Dynamic partition) . 2 mô hình đơn giản . Linker Loader . Base & Bound 1.16
  17. Cấp phát liên tục – fixed partitioning . Fixed partitioning . Có 2 loại partition : . Kích thước bằng nhau . Không bằng nhau 1.17
  18. Cấp phát liên tục – fixed partitioning . Fixed partitioning . Chiến lược cấp phát . Sử dụng hàng đợi . Nhiều hàng đợi . 1 hàng đợi 1.18
  19. Cấp phát liên tục – fixed partitioning . Fixed partitioning- Nhận xét : . Phân mảnh nội (internal fragmentation) . Mức độ đa chương phụ thuộc bởi số partition 1.19
  20. Cấp phát liên tục – dynamic partitioning . Dynamic partitioning 1.20
  21. Cấp phát liên tục – dynamic partitioning . Dynamic partitioning – nhận xét . Phân mảnh ngoại (external fragmentation) 1.21
  22. Cấp phát liên tục dynamic partitioning 1.22
  23. Cấp phát liên tục dynamic partitioning Cấp phát bộ nhớ kích thước X được thực hiện như thế nào? First-fit: cấp phát vùng trống đầu tiên đủ cho yêu cầu. Best-fit: cấp phát vùng trống nhỏ nhất vừa đủ yêu cầu; phải duyệt toàn danh sách, nếu không sắp theo thứ tự. Sẽ tạo ra vùng nhớ trống dư ra nhỏ nhất. Worst-fit: cấp phát vùng trống lớn nhất; phải duyệt toàn danh sách. Sẽ tạo những ô trống dư ra lớn nhất. First-fit và best-fit tốt hơn worst-fit về mặt tốc độ và việc tận dụng bộ nhớ. 1.23
  24. Cấp phát liên tục dynamic partitioning 1.24
  25. . Bài tập 1 Trong mô hình cấp phát bộ nhớ liên tục, có bốn phân mảnh bộ nhớ theo thứ tự với kích thước là 600KB, 500KB, 200KB, 300KB. Giả sử có 4 tiến trình đang chờ cấp phát bộ nhớ theo thứ tự P1, P2, P3, P4. Kích thước tương ứng của các tiến trình trên là: 212 KB, 417 KB, 112 KB, 426 KB. Hãy cấp phát bộ nhớ cho các tiến trình trên theo thuật toán First-fit, Best-fit, Worst-fit. 1.25
  26. Memory Compaction (Garbage Collection) . Giải quyết vấn đề External Fragmentaion: . Dồn các vùng bị phân mảnh lại với nhau để tạo thành partition liên tục đủ lớn để sử dụng . Chi phí thực hiên cao 1.26
  27. Khuyết điểm của cấp phát liên tục . Không có vùng nhớ liên tục đủ lớn đê nạp tiến trình? . Bó tay . Sử dụng BNC không hiệu quả 1.27
  28. Cấp phát không liên tục . Cho phép nạp tiến trình vào BNC ở nhiều vùng nhớ không liên tục . Không gian địa chỉ (logic) : phân chia thành nhiều partition . Segmentation . Paging . Không gian địa chỉ vật lý : có thể được tổ chức . Variable (Dynamic) partitions : segmentation . Fixed partitions : paging 1.28
  29. Cấp phát không liên tục Segmentation (0) . Lập trình viên: chương trình là một tập các segments . Một segment là một đơn vị chương trình bao gồm các đối tượng có cùng nhóm ngữ nghĩa . Ví dụ: main program, procedure, function, local variables, global variables common block, stack, symbol table, arrays, . Các segment có thể có kích thước khác nhau . Mô hình Segmentation: . KGĐC: phân chia thành các segment . KGVL: tổ chức thành các dynamic partitions . Nạp tiến trình: . Mỗi segment cần được nạp vào 1 partition liên tục, tự do, đủ lớn cho segment . Partition nào? Dynamic allocation! . Các segment của cùng 1 chương trình có thể được nạp vào những partition không liên tục 1.29
  30. Cấp phát không liên tục Segmentation (1) 1.30
  31. Cấp phát không liên tục Segmentation (2) . Đ/chỉ logic: . Đ/chỉ physic: . Chuyển đổi địa chỉ: . Chuyển đổi địa chỉ vào lúc run-time - MMU thi hành - sử dụng segment table để lưu thông tin cấp phát bộ nhớ - mỗi tiến trình có một segment table . Lưu trữ segment table : - Cache : nếu đủ nhỏ - Bộ nhớ chính : segment-table base register, segment-table length register - Số phần tử của segment table = số segment của chương trình 1.31
  32. Cấp phát không liên tục Segmentation (3) . Chuyển đổi địa chỉ trong mô hình Segmentation 1.32
  33. Cấp phát không liên tục Segmentation (4) 1.33
  34. Cấp phát không liên tục Segmentation (5) 1.34
  35. Cấp phát không liên tục Segmentation (6) . Logical-to-Physical Address Translation in Segmentation 1.35
  36. Cấp phát không liên tục Segmentation (7) . Bài tập : một segment table Segment Limit Base 0 500 215 1 25 2100 2 100 120 Xác định địa chỉ vật lý của các địa chỉ logic sau ? . 0.410 . 1.12 . 2.300 1.36
  37. Cấp phát không liên tục Segmentation (8) NHẬN XÉT MÔ HÌNH SEGMENTATION .Cấp phát không liên tục tận dụng bộ nhớ hiệu quả .Hỗ trợ tái định vị . Từng segment .Hỗ trợ bảo vệ và chia sẻ được ở mức module . Ý nghĩa của “mức module”? .Chuyển đổi địa chỉ phức tạp . Đã có MMU .Sử dụng dynamic partirion: chịu đựng . Dynamic allocation: chọn vùng nhớ để cấp cho 1 segment . First fit, Best fit, Worst fit .  External Fragmentation: . Memory Compaction: chi phí cao 1.37
  38. Cấp phát không liên tục Paging (1) . Hỗ trợ HĐH khắc phục bài toán cấp phát bộ nhớ động và loại bỏ external fragmentation . Mô hình Paging . KGĐC: Phân chia chương trình thành các page có kích thước bằng nhau . KGVL ( bộ nhớ) được tổ chức thành các fixed partitions có kích thước bằng nhau, gọi là frame . Page size = frame size . Nạp tiến trình: . Mỗi page cần được nạp vào 1 frame tự do . Các pages của cùng 1 chương trình có thể được nạp vào những frames không kế cận nhau . Tiến trình kích thước N pages cần N frame tự do để nạp 1.38
  39. Cấp phát không liên tục Paging (2) 1.39
  40. Cấp phát không liên tục Paging (3) . Địa chỉ logic: . Địa chỉ physic: . Chuyển đổi địa chỉ: . Chuyển đổi địa chỉ vào thời điểm thi hành . MMU thi hành . Sử dụng Page table để luu thông tin cấp phát BNC, làm cơ sở thực hiện ánh xạ địa chỉ . Mội tiến trình có 1 page table . Page table . Số phần tử của Page table = số page trong KGĐC của chương trình . Mỗi phần tử của bảng page table mô tả cho 1 page, và có cấu trúc: . Frame: số hiệu frame trong BNC chứa page . Lưu trữ page table? . Cache: không đủ . BNC page table base register (PTBR),page table length register (PTLR) 1.40
  41. Cấp phát không liên tục Paging (4) . Chuyển đổi địa chỉ trong mô hình paging 1.41
  42. Cấp phát không liên tục Paging (5) 1.42
  43. Cấp phát không liên tục Paging (6) . Bài tập : Một tiến trình được nạp vào bộ nhớ theo mô hình phân trang với kích thước trang là 1024 byte. Bảng trang P F 0 1 1 4 2 2 3 6 Chuyển địa chỉ logic thành địa chỉ vật lý : 1642 3671 1.43
  44. . 1642 xác định p? d? 1642 div 1024 = 1 => p =1 1642 mod 1024 = 618 => d = 618 Xác định f ? Theo bảng trang : f =4 Xác định địa chỉ vật lý : 1642 => 4 * 1024 + 618 = 4714 1.44
  45. . 3671 Xác định p? d? 3671 div 1024 = 3 => p =3 3671 mod 1024 = 599 =>d = 599 Xác định f ? F = 6 Xác định địa chỉ vật lý ? 3671 => 6 * 1024 + 599 = 6743 1.45
  46. Cấp phát không liên tục Paging (7) NHẬN XÉT MÔ HÌNH PAGING .Loại bỏ . Dynamic Allocation . External Fragmentation .Hỗ trợ bảo vệ và chia sẻ ở mức page . Internal Fragmentation . Lưu trữ Page Table trong bộ nhớ . Tốn chỗ . Tăng thời gian chuyển đổi địa chỉ 1.46
  47. Cấp phát không liên tục Paging (8) . Lưu trữ Page table : tiết kiệm không gian . Sử dụng bảng trang đa cấp . Chỉ lưu thường trực bảng trang cấp 1, sau đó khi cần sẽ nạp bảng trang thích hợp . Sử dụng bảng trang nghịch đảo . Mô tả không gian vật lý thay vì KGĐC 1.47
  48. Cấp phát không liên tục Paging (9) 1.48
  49. Cấp phát không liên tục Paging (10) 1.49
  50. Cấp phát không liên tục Paging (11) . Bảng trang nghịch đảo : . Sử dụng duy nhất một bảng trang nghịch đảo cho tất cả các tiến trình . Mỗi phần tử trong bảng trang nghịch đảo mô tả một frame có cấu trúc . : số hiệu page mà frame đang chứa . : id của tiến trình đang sở hữu trang . Địa chỉ ảo là 1.50
  51. Cấp phát không liên tục Paging (12) 1.51
  52. Bộ nhớ ảo . Các mô hình quản lý bộ nhớ đã học : . Nạp toàn bộ tiến trình vào bộ nhớ rồi thi hành Vấn đề : (1) Nếu kích thước tiến trình lớn hơn dung lượng bộ nhớ chính (2) Tại một thời điểm chỉ có 1 chỉ thị được thi hành . Mô hình bộ nhớ ảo : . Nạp và thi hành từng phần của tiến trình 1.52
  53. Bộ nhớ ảo . Bộ nhớ ảo với cơ chế phân trang . Phân chia Không gian địa chỉ logic thành các page . Dùng bộ nhớ phụ (disk) để mở rộng bộ nhớ chính, lưu trữ các phần của tt chưa được nạp . Bổ sung bit cờ hiệu trong Page Table để nhận dạng tình trạng của một page đã được nạp vào bộ nhớ chính chưa . Cơ chế chuyển đổi giữa BNC và BNP : swapping 1.53
  54. Lỗi trang và thay thế trang . Truy suất đến một trang được đánh dấu bất hợp lệ (invalid) sẽ làm phát sinh lỗi trang, hdh sẽ thực hiện : 1. Xác định vị trí trang muốn truy suất trên đĩa 2. Tìm một khung trang trống trong bộ nhớ chính 1. Nếu tìm thấy -> đến bước 3 2. Nếu ko còn khung trang trống -> chọn 1 nạn nhân 3. Chuyển trang từ đĩa vào bnc; cập nhật nội dung bảng trang, bảng khung trang 4. Tái kích hoạt tiến trình của người dùng 1.57
  55. Các thuật toán thay thế trang . Mục tiêu : chọn trang “nạn nhân” là trang mà sau khi thay thế sẽ gây ra ít lỗi trang nhất . Các thuật toán : . FIFO . Ghi nhận thời điểm trang vào bnc => trang ở lâu nhất được chọn . OPT ( tối ưu) . Thay thế trang sẽ lâu được sử dụng nhất trong tương lai => ko khả thi . LRU (least recently used) . Ghi nhận thời điểm cuối cùng trang được truy cập =>trang lâu nhất chưa được truy suất là trang được chọn 1.58
  56. . Bài tâp Xét chuỗi truy xuất bộ nhớ sau: 1, 2, 3, 4, 2, 1, 5, 6, 2, 1, 2, 3, 7, 6, 3 Giả sử bộ nhớ vật lí có 4 khung trang. Minh họa kết quả trình thay thế trang với các thuật toán thay thế sau: a) FIFO b) OPT c) LRU 1.59
  57. . FIFO 1 2 3 4 2 1 5 6 2 1 2 3 7 6 3 * * * * * * * * * * *  1 1 1 1 1  5 5 5 5  3 3 3  2 2 2 2 2  6 6 6 6  7 7  3 3 3 3 3  2 2 2 2  6  4 4 4 4 4  1 1 1 1 1 -Sử dụng 4 khung trang -Ban đầu cả 4 khung trang đều trống -* : có lỗi trang -  : trang được nạp từ đĩa vào bộ nhớ 1.60
  58. . OPT 1 2 3 4 2 1 5 6 2 1 2 3 7 6 3 * * * * * * *  1 1 1 1 1 1 1 1 1 1 1  7 7  2 2 2 2 2 2 2 2 2 2 2 2 2  3 3 3 3 3 3 3 3 3 3 3 3  4 4   6 6 6 6 6 6 6 1.61
  59. . LRU 1 2 3 4 2 1 5 6 2 1 2 3 7 6 3 * * * * * * * * *  1 1 1 1 1 1 1 1 1 1 1 1  6  2 2 2 2 2 2 2 2 2 2 2 2 2  3 3 3  5 5 5 5  3 3 3  4 4 4  6 6 6 6  7 7 1.62
  60. . Đánh giá . Số lỗi trang : FIFO > LRU > OPT . FIFO : dễ cài đặt ; 1.63
  61. . Xem xét chuỗi tham chiếu trang sau: 1,2,3,4,2,1,5,6,2,1,4,5,7,6,3,1 Bao nhiêu page_fault xuất hiện đối với giải thuật thay page FIFO, OPT, LRU (giả thuyết là được cấp 4 frame). 1.64