- Đọc/Ghi ngày, tháng, năm
QUẢN LÝ BỘ NHỚ
Chƣơng “QUẢN LÝ BỘ NHỚ" sẽ giới thiệu và giải thích các vấn đề sau:
4.1 Các vấn đề phát sinh khi quản lý bộ nhớ. 4.2 Các mơ hình cấp phát bộ nhớ.
4.3 Bộ nhớ ảo
4.1 CÁC VẤN ĐỀ PHÁT SINH KHI QUẢN LÝ BỘ NHỚ
+ Chuyển đổi địa chỉ tƣơng đối trong chƣơng trình thành địa chỉ thực trong bộ nhớ chính. + Quản lý bộ nhớ đã cấp phát và chƣa cấp phát.
+ Các kỹ thuật cấp phát bộ nhớ sao cho:
- 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. - Cho phép nhiều tiến trình cĩ thể dùng chung một phần bộ nhớ của nhau.
- Mở rộng bộ nhớ để cĩ thể lƣu trữ đƣợc nhiều tiến trình đồng thời.
4.1.1 Chuyển đổi địa chỉ tƣơng đối sang tuyệt đối
Các địa chỉ trong chƣơng trình thực thi (dạng exe) là địa chỉ tƣơng đối, và cần đƣợc chuyển đổi các địa chỉ này thành các địa chỉ tuyệt đối trong bộ nhớ chính. Việc chuyển đổi cĩ thể xảy ra vào một trong những thời điểm sau:
+ Thời điểm biên dịch (compile time):
Nếu tại thời điểm biên dịch, cĩ thể biết vị trí mà tiến trình sẽ đƣợc nạp vào trong bộ nhớ, trình biên dịch cĩ thể phát sinh ngay mã với các địa chỉ tuyệt đối. Tuy nhiên, nếu về sau cĩ sự thay đổi vị trí của chƣơng trình, cần phải biên dịch lại chƣơng trình. Ví dụ các chƣơng trình .com chạy trên hệ điều hành MS-DOS cĩ mã tuyệt đối ngay khi biên dịch.
+ Thời điểm nạp (load time):
Nếu tại thời điểm biên dịch, chƣa thể biết vị trí mà tiến trình sẽ đƣợc nạp vào trong bộ nhớ, trình biên dịch chỉ phát sinh mã tƣơng đối. Khi nạp chƣơng trình vào bộ nhớ, hệ điều hành sẽ chuyển các địa chỉ tƣơng đối thành địa chỉ tuyệt đối do đã biết vị trí bắt đầu lƣu trữ tiến trình. Khi cĩ sự thay đổi vị trí lƣu trữ, cần nạp lại chƣơng trình để thực hiện lại việc chuyển đổi địa chỉ, khơng cần biên dịch lại chƣơng trình.
+ Thời điểm xử lý (execution time):
Nếu cĩ nhu cầu di chuyển tiến trình từ vùng nhớ này sang vùng nhớ khác trong quá trình tiến trình xử lý, thì việc chuyển đổi địa chỉ sẽ đƣợc thực hiện vào lúc tiến trình thực thi. Chức năng chuyển đổi địa chỉ do phần cứng cung cấp gọi là MMU (memory management unit). Các hệ điều hành thƣờng dùng việc chuyển đổi theo cách này.
4.1.2 Khơng gian địa chỉ ảo và khơng gian địa chỉ vật lý
+ Địa chỉ ảo (địa chỉ logic): là địa chỉ do bộ xử lý (CPU) tạo ra.
+ Địa chỉ vật lý (địa chỉ physic): là địa chỉ thực trong bộ nhớ chính, địa chỉ vật lý cịn gọi là địa
chỉ tuyệt đối/địa chỉ thực.
+ Khơng gian địa chỉ ảo của tiến trình: là tập hợp tất cả các địa chỉ ảo của một tiến trình.
+ Khơng gian điạ chỉ vật lý của tiến trình: 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.
Khi chƣơng trình nạp vào bộ nhớ các địa chỉ tƣơng đối trong chƣơng trình đƣợc CPU chuyển thành địa chỉ ảo, khi thực thi, địa chỉ ảo đƣợc hệ điều hành kết hợp với phần cứng MMU chuyển thành địa chỉ vật lý .Tĩm lại chỉ cĩ khái niệm địa chỉ ảo nếu việc chuyển đổi địa chỉ xảy ra vào thời điểm xử lý, khi đĩ tiến trình chỉ thao tác trên các địa chỉ ảo, địa chỉ vật lý chỉ đƣợc xác định khi thực hiện truy xuất bộ nhớ vật lý.
Hình 4.1: CPU gởi địa chỉ ảo tới MMU, MMU chuyển địa chỉ ảo thành địa chỉ vật lý
4.1.3 Quản lý bộ nhớ đã cấp phát và chƣa cấp phát
Hệ điều hành cần lƣu trữ thơng tin về phần bộ nhớ đã cấp phát và phần bộ nhớ chƣa cấp phát. Nếu đã cấp phát thì cấp cho tiến trình nào. Khi cần cấp phát bộ nhớ cho một tiến trình thì làm sao tìm đƣợc phần bộ nhớ trống thích hợp nhanh chĩng và khi bộ nhớ bị phân mảnh thì cần dồn bộ nhớ lại để tận dụng bộ nhớ và để tiến trình thực thi nhanh hơn.
4.1.3.1 Các phƣơng pháp quản lý việc cấp phát bộ nhớ:
a/ Sử dụng dãy bit : bít thứ i bằng 1 là khối thứ i đã cấp phát, bằng 0 là chƣa cấp phát.