Bài giảng Hệ điều hành - Chương 6: Memory management cung cấp cho người học các kiến thức: Các khái niệm cơ sở, các kiểu địa chỉ nhớ, chuyển đổi đại chỉ nhớ, Overlay và swapping, mô hình quản lý bộ nhớ đơn giản. Mời các bạn cùng tham khảo.
6 Memory Management Khái niệm sở Các kiểu địa nhớ Chuyển đổi địa nhớ Overlay swapping Mô hình quản lý nhớ đơn giản – Fixed partitioning – Dynamic partitioning Khoa Công Nghệ Thông Tin – Đại Học Bách Khoa Tp.HCM -9.1- Khái niệm sở Quản lý nhớ công việc hệ điều hành với hỗ trợ phần cứng nhằm phân phối, xếp process nhớ cho hiệu Mục tiêu cần đạt nạp nhiều process vào nhớ tốt (gia tăng mức độ đa chương) Trong hầu hết hệ thống, kernel chiếm phần cố định nhớ; phần lại phân phối cho process Các yêu cầu việc quản lý nhớ – – – – – Cấp phát nhớ cho process Tái định vị (relocation): swapping, Bảo vệ: phải kiểm tra truy xuất nhớ có hợp lệ không? Chia sẻ: cho phép process chia sẻ vùng nhớ chung Kết gán địa nhớ luận lý user vào địa thực (physical) Khoa Công Nghệ Thông Tin – Đại Học Bách Khoa Tp.HCM CuuDuongThanCong.com -9.2- https://fb.com/tailieudientucntt Các kiểu địa nhớ Địa vật lý (physical address) (địa thực, địa tuyệt đối) vị trí thực nhớ Địa luận lý (logical address) tham chiếu đến vị trí nhớ độc lập với cấu trúc, tổ chức vật lý nhớ – Các trình biên dịch (compiler) tạo mã lệnh chương trình mà tham chiếu nhớ địa luận lý Địa tương đối (relative address) kiểu địa luận lý địa biểu diễn tương đối so với điểm xác định chương trình (ví dụ: 12 byte so với điểm bắt đầu chương trình, ) Khi lệnh thực thi, tham chiếu đến địa luận lý phải chuyển đổi thành địa thực Thao tác chuyển đổi thường có hỗ trợ phần cứng để đạt hiệu suất cao Khoa Công Nghệ Thông Tin – Đại Học Bách Khoa Tp.HCM -9.3- Nạp chương trình vào nhớ(t.t) Bộ linker: kết hợp object module thành file nhị phân khả thực thi gọi load module Bộ loader: nạp load module vào nhớ System Library static linking dynam ic linking Khoa Công Nghệ Thông Tin – Đại Học Bách Khoa Tp.HCM CuuDuongThanCong.com System Library -9.4- https://fb.com/tailieudientucntt Cơ chế thực linking 0 M odule A C A LL B R elocatable O bjectM odules Length L L-1 R eturn M odule A JM P “L” L-1 R eturn L M odule B JM P “L+M ” Load M odule Length M C A LL C M odule B L+M -1 R eturn M -1 R eturn L+M M odule C M odule C Length N L+M +N -1 R eturn N -1 R eturn Khoa Công Nghệ Thông Tin – Đại Học Bách Khoa Tp.HCM -9.5- Chuyển đổi địa nhớ Chuyển đổi địa – trình ánh xạ địa từ không gian địa sang không gian địa khác Biểu diễn địa nhớ – Trong source code: symbolic (các biến, hằng, pointer, ) – Thời điểm biên dịch (compile): địa khả tái định vị (relocatable address), địa tương đối (relative address) Ví dụ: a vị trí 14 bytes so với phần header module – Thời điểm linking/loading: địa tuyệt đối Ví dụ: liệu nằm địa nhớ thực: 2030 int I; goto p1; 2000 250 2250 p1 Sym bolic Address R e-locatable Address Absolute Address (PhysicalM em ory) Khoa Công Nghệ Thông Tin – Đại Học Bách Khoa Tp.HCM CuuDuongThanCong.com -9.6- https://fb.com/tailieudientucntt Chuyển đổi địa (t.t) Địa lệnh (instruction) liệu (data) chuyển đổi thành địa vật lý nhớ thực xảy ba thời điểm khác – Compile time: biết trước địa nhớ kết gán địa vật lý (địa thực) lúc biên dịch ⇒ Ví dụ: chương trình COM MS-DOS, phát biểu assemply org xxx ⇒ Khuyết điểm: phải biên dịch lại thay đổi địa – Load time: thời điểm biên dịch, địa thực vào thời điểm loading, phải chuyển đổi địa khả tái định vị (re-locatable) theo mốc chuẩn (base address) Địa thực tính toán lại vào thời điểm chương trình thực thi ⇒ phải tiến hành reload địa base thay đổi Khoa Công Nghệ Thông Tin – Đại Học Bách Khoa Tp.HCM -9.7- Chuyển đổi vào thời điểm dịch Absolute Addresses (PhysicalM em ory Addresses) Sym bolic Addresses PR O G R AM Absolute Addresses (PhysicalM em ory Addresses) 1024 JU M P i 1024 JU M P 1424 i JU M P 1424 1424 LO AD j 1424 LO A D 2224 C om pile LO A D 2224 Link/Load D ATA j 2224 Source C ode 2224 Absolute Load M odule Process Im age Khoa Công Nghệ Thông Tin – Đại Học Bách Khoa Tp.HCM CuuDuongThanCong.com -9.8- https://fb.com/tailieudientucntt Chuyển đổi vào thời điểm nạp R elative (R elocatable) Addresses Sym bolic Addresses PR O G R AM Absolute Addresses (PhysicalM em ory Addresses) 1024 JU M P i JU M P 400 i JU M P 1424 400 LO AD j 1424 LO A D 1200 C om pile LO A D 2224 Link/Load D ATA j 1200 Source C ode 2224 R elative Load M odule Process Im age Khoa Công Nghệ Thông Tin – Đại Học Bách Khoa Tp.HCM -9.9- Chuyển đổi địa (t.t) Execution time: trình chuyển đổi trì hoãn đến thời điểm thực thi (run time) – Trong trình thực thi, process di chuyển từ segment sang segment khác nhớ – CPU tạo địa tương đối cho process – Cần hỗ trợ phần cứng cho việc ánh xạ địa (ví dụ có ghi base limit, ) – Sử dụng đa số OS đa dụng (general-purpose) có chế swapping, paging, segmentation R elative (R elocatable) Addresses JM P 400 400 LO A D 1200 1200 M AX =2000 Khoa Công Nghệ Thông Tin – Đại Học Bách Khoa Tp.HCM CuuDuongThanCong.com -9.10- https://fb.com/tailieudientucntt Dynamic Linking Quá trình link số module (external module) thực sau tạo xong load module (i.e file thực thi – executable) – Ví dụ Windows: module file DLL Unix, module file so (shared library) Load module chứa tham chiếu (reference) đến external module Các tham chiếu chuyển đổi vào hai thời điểm sau: – Loading time (load-time dynamic linking) – Run time: có lời gọi đến thủ tục định nghóa external module (run-time dynamic linking) OS chịu trách nhiệm tìm external module kết nối vào load module (kiểm tra xem external module nạp vào nhớ chưa) Khoa Công Nghệ Thông Tin – Đại Học Bách Khoa Tp.HCM -9.11- Ưu điểm Dynamic Linking Thông thường, external module thủ tục, thư viện cung cấp tiện ích OS Các chương trình thực thi dùng phiên khác external module mà không cần sửa đổi, biên dịch lại Chia sẻ mã (code sharing): external module cần nạp vào nhớ lần Các process cần dùng external module chia sẻ đoạn mã external module ⇒ tiết kiệm không gian nhớ đóa Phương pháp dynamic linking cần hỗ trợ OS việc kiểm tra xem thủ tục chia sẻ process phần mã riêng process ( có OS có quyền thực việc kiểm tra này) Khoa Công Nghệ Thông Tin – Đại Học Bách Khoa Tp.HCM CuuDuongThanCong.com -9.12- https://fb.com/tailieudientucntt Dynamic Loading Cơ chế: gọi đến thủ tục nạp vào nhớ ⇒ tăng độ hiệu dụng nhớ (memory utilization) thủ tục dùng không chiếm chỗ nhớ Rất hiệu trường hợp tồn khối lượng lớn mã chương trình có tần suất sử dụng thấp, không sử dụng thường xuyên (ví dụ thủ tục xử lý lỗi) Không cần hỗ trợ đặc biệt hệ điều hành – Thông thường, user chịu trách nhiệm thiết kế thực chương trình có dynamic-loading – Hệ điều hành chủ yếu cung cấp số thủ tục thư viện hỗ trợ, tạo điều kiện dễ dàng cho lập trình viên Khoa Công Nghệ Thông Tin – Đại Học Bách Khoa Tp.HCM -9.13- Cơ chế Overlay Tại thời điểm, giữ lại nhớ lệnh liệu cần thiết, giải phóng lệnh/dữ liệu chưa không cần dùng đến Cơ chế hữu dụng kích thước process lớn không gian nhớ cấp cho process Cơ chế điều khiển người sử dụng (thông qua hỗ trợ thư viện lập trình) không cần hỗ trợ hệ điều hành Khoa Công Nghệ Thông Tin – Đại Học Bách Khoa Tp.HCM CuuDuongThanCong.com -9.14- https://fb.com/tailieudientucntt Cơ chế Overlay (t.t) Pass 70K Pass 80K Sym Table 20K sym bol table 20K com m on routines 30K overlay driver 10K C om m on R outines 30K Assem bler TotalM em ory Available = 150K 80K pass pass 70K Khoa Công Nghệ Thông Tin – Đại Học Bách Khoa Tp.HCM -9.15- Cơ chế swapping Một process tạm thời bị swap khỏi nhớ lưu hệ thống lưu trữ phụ Sau đó, process nạp lại vào nhớ để tiếp tục trình thực thi – Round-robin: swap-out A, swap-in B, thực thi C – Roll out, roll in – dùng chế định thời theo độ ưu tiên ( priority-based scheduling) Process có độ ưu tiên thấp bị swap-out nhường chỗ cho process có độ ưu tiên cao nạp vào nhớ để thực thi – Medium-term scheduler Khoa Công Nghệ Thông Tin – Đại Học Bách Khoa Tp.HCM CuuDuongThanCong.com -9.16- https://fb.com/tailieudientucntt Minh họa chế swapping Khoa Công Nghệ Thông Tin – Đại Học Bách Khoa Tp.HCM -9.17- Mô hình quản lý nhớ thực Trong chương này, mô hình quản lý nhớ mô hình đơn giản, nhớ ảo Một process phải nạp hoàn toàn vào nhớ thực thi (ngoại trừ việc sử dụng chế overlay) Các chế quản lý nhớ thực sau (hầu không còn) dùng hệ thống đại, nhiên ý tưởng sở cho mô hình quản lý nhớ ảo sau này: – – – – Phân chia cố định (fixed partitioning) Phân chia động (dynamic partitioning) Phân trang đơn giản (simple paging) Phân đoạn đơn giản (simple segmentation) Khoa Công Nghệ Thông Tin – Đại Học Bách Khoa Tp.HCM CuuDuongThanCong.com -9.18- https://fb.com/tailieudientucntt Phân mảnh (fragmentation) Phân mảnh ngoại (external fragmentation) – Kích thước không gian nhớ trống đủ để thỏa mãn yêu cầu cấp phát, nhiên không gian nhớ không liên tục ⇒ phải dùng chế kết khối (compaction) Phân mảnh nội (internal fragmentation) – Kích thước vùng nhớ cấp phát lớn vùng nhớ yêu cầu Ví dụ: cấp khoảng trống 18,464 bytes cho process yêu cầu 18,462 bytes – Hiện tượng phân mảnh nội thường xảy nhớ thực (physical memory) chia thành khối kích thước cố định(fixed-sized block) process cấp phát theo đơn vị khối Ví dụ: chế phân trang (paging) Khoa Công Nghệ Thông Tin – Đại Học Bách Khoa Tp.HCM -9.19- Phân mảnh nội operating system yêu cầu 18,462 bytes !!! (used) hole kích thước 18,464 bytes cần quản lý khoảng trống bytes !?! OS cấp phát hẳn khối 18,464 bytes cho yêu cầu process ⇒ dư bytes không dùng ! Khoa Công Nghệ Thông Tin – Đại Học Bách Khoa Tp.HCM CuuDuongThanCong.com -9.20- https://fb.com/tailieudientucntt 10 Fixed Partitioning Chia nhớ thành nhiều phần không trùng lấp lên gọi partition có kích thước khác Process có kích thước nhỏ kích thước partition nạp vào partition Nếu chương trình có kích thước lớn partition phải dùng chế overlay Nhận xét – Không hiệu bị phân mảnh nội: chương trình dù lớn hay nhỏ chiếm trọn partition Khoa Công Nghệ Thông Tin – Đại Học Bách Khoa Tp.HCM -9.21- Chiến lược placement Partition có kích thước – Còn partition trống ⇒ process nạp vào partition – Không partition trống có process bị blocked ⇒ swap process nhớ phụ nhường chỗ cho process Partition có kích thước không – Gán process vào partition nhỏ phù hợp với – Có hàng đợi cho partition – Giảm thiểu phân mảnh nội – Vấn đề: có số hàng đợi trống không (vì process với kích thước tương ứng) hàng đợi dày đặc Khoa Công Nghệ Thông Tin – Đại Học Bách Khoa Tp.HCM CuuDuongThanCong.com -9.22- https://fb.com/tailieudientucntt 11 Chiến lược placement (t.t) Partition có kích thước không – Chỉ có hàng đợi chung cho partition – Khi cần nạp process vào nhớ ⇒ chọn partition nhỏ trống Khoa Công Nghệ Thông Tin – Đại Học Bách Khoa Tp.HCM -9.23- Dynamic Partitioning Số lượng partition không cố định partition có kích thước khác Mỗi process cấp phát xác dung lượng nhớ cần thiết Gây tượng phân mảnh ngoại (external fragmentation) Khoa Công Nghệ Thông Tin – Đại Học Bách Khoa Tp.HCM CuuDuongThanCong.com -9.24- https://fb.com/tailieudientucntt 12 Chiến lược placement Dùng để định cấp phát khối nhớ trống cho process Mục tiêu: giảm thiểu chi phí compaction (time consuming) Các chiến lược placement – Best-fit: chọn khối nhớ trống nhỏ – First-fit: chọn khối nhớ trống phù hợp kể từ đầu nhớ – Next-fit: chọn khối nhớ trống phù hợp kể từ vị trí cấp phát cuối – Worst fit: chọn khối nhớ trống lớn Khoa Công Nghệ Thông Tin – Đại Học Bách Khoa Tp.HCM CuuDuongThanCong.com -9.25- https://fb.com/tailieudientucntt 13 ... trình có dynamic-loading – Hệ điều hành chủ yếu cung cấp số thủ tục thư viện hỗ trợ, tạo điều kiện dễ dàng cho lập trình viên Khoa Công Nghệ Thông Tin – Đại Học Bách Khoa Tp.HCM -9 .1 3- Cơ chế Overlay... thực thi – Medium-term scheduler Khoa Công Nghệ Thông Tin – Đại Học Bách Khoa Tp.HCM CuuDuongThanCong.com -9 . 1 6- https://fb.com/tailieudientucntt Minh họa chế swapping Khoa Công Nghệ Thông Tin –... process Cơ chế điều khiển người sử dụng (thông qua hỗ trợ thư viện lập trình) không cần hỗ trợ hệ điều hành Khoa Công Nghệ Thông Tin – Đại Học Bách Khoa Tp.HCM CuuDuongThanCong.com -9 .1 4- https://fb.com/tailieudientucntt