Chương 3
Quản lý bộ nhớ
1. TỔNG QUAN
1.1 Vì sao phải tổ chức, quản lý bộ nhớ?
CPU chỉ có thể trao đổi thơng tin với bộ nhớ
chính
Các chương trình muốn được thực thi cần được
nạp vào bộ nhớ chính, tạo lập tiến trình tương
ứng để xử lý
Các hệ thống đa chương trên bộ nhớ chính ngồi
HĐH có thể có nhiều tiến trình đang hoạt động
Kích thước bộ nhớ chính là hữu hạn nhưng u
cầu bộ nhớ thì vơ hạn
…
3
1.1 Vì sao phải tổ chức, quản lý bộ nhớ?
Như vậy, HĐH cần phải tổ chức quản lý bộ nhớ
một cách hợp lý để có thể:
Đưa bất kỳ một tiến trình nào đó vào bộ nhớ khi
có u cầu, cho dù khi trên bộ nhớ khơng cịn
khơng gian trống
Bảo vệ các tiến trình của hệ điều hành và các tiến
trình trên bộ nhớ, tránh các trường hợp truy xuất
bất hợp lệ xảy ra.
4
1.2 Nhiệm vụ quản lý bộ nhớ
Tái định vị
Bảo vệ bộ nhớ
Chia sẻ bộ nhớ
Tổ chức bộ nhớ logic
Tổ chức bộ nhớ vật lý
5
Tái định vị (Relocation)
Trong các hệ thống đa chương khơng gian bộ
nhớ chính thường được chia sẽ cho nhiều tiến
trình và yêu cầu bộ nhớ của các tiến trình luôn
lớn hơn không gian bộ nhớ vật lý mà tiến trình
mà hệ thống hiện có
Cần thực hiện cơ chế hốn đổi (Swap):
Một chương trình đang hoạt động trên bộ nhớ sẽ bị
đưa ra đĩa (swap-out) và sẽ được đưa vào lại
(swap-in) tại thời điểm thích hợp
Khi thực hiện swap-in 1 chương trình vào lại bộ
nhớ HĐH phải định vị nó đúng vào vị trí mà trước
khi nó bị swap-out
6
Bảo vệ bộ nhớ (Protection)
Mỗi tiến trình phải được bảo vệ để chống lại sự
truy xuất bất hợp lệ vơ tình hay có chủ ý của các
tiến trình khác.
Mỗi tiến trình chỉ được phép truy suất đến khơng
gian địa chỉ mà HĐH đã cấp cho nó
Bộ phận Qlý bộ nhớ phải biết không gian địa chỉ
của tất cả các tiến trình trên bộ nhớ
Khi tiến trình đưa ra địa chỉ truy xuất bộ phận Qlý
bộ nhớ phải kiểm tra tất cả các yêu cầu truy xuất
bộ nhớ của mỗi tiến trình
7
Chia sẻ bộ nhớ (Sharing)
Bất kỳ một chiến lược nào được cài đặt đều
phải có tính mềm dẻo để cho phép nhiều tiến
trình có thể truy cập đến cùng một địa chỉ trên
bộ nhớ chính
Ví dụ, khi có nhiều tiến trình cùng thực hiện
một chương trình thì việc cho phép mỗi tiến
trình cùng truy cập đến một bản copy của
chương trình sẽ thuận lợi hơn khi cho phép
mỗi tiến trình truy cập đến một bản copy sở
hữu riêng.
8
Tổ chức bộ nhớ logic (Logical organization)
Bộ nhớ chính của hệ thống máy tính được tổ
chức như là một dịng hoặc một mảng
Khơng gian địa chỉ bao gồm một dãy có thứ tự
các byte hoặc các word.
Bộ nhớ phụ cũng được tổ chức tương tự
Cách tổ chức này có sự kết hợp chặt chẻ với
phần cứng máy tính nhưng lại khơng phù hợp với
cách xây dựng của chương trình
Đại đa số các chương trình được tổ chức thành
các modul
9
Tổ chức bộ nhớ vật lý (Physical organization)
Bộ nhớ máy tính được tổ chức theo 2 cấp:
Bộ nhớ chính: tốc độ truy xuất nhanh, nhưng giá
thành cao và dữ liệu khơng thể tồn tại lâu dài trên
nó.
Bộ nhớ phụ: giá rẻ, dung lượng lớn, dữ liệu được
lưu trữ lâu dài nhưng tốc độ truy xuất chậm.
Theo giản đồ 2 cấp này, việc tổ chức luồng thông
tin giữa bộ nhớ chính và bộ nhớ phụ là nhiệm vụ
quan trọng của hệ thống
10
1.3. Không gian địa chỉ và không gian
vật lý
Địa chỉ logic (logical address) – còn gọi là địa chỉ ảo ,
là tất cả các địa chỉ do bộ xử lý tạo ra.
Địa chỉ vật lý (physical address) - là địa chỉ thực tế mà
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.
Việc ánh xạ tại thời điểm thực thi từ địa chỉ ảo tới địa
chỉ vật lý được thực hiện bởi một thiết bị phần cứng
được gọi là bộ quản lý bộ nhớ MMU (memorymanagement unit)
11
Sơ đồ tái định vị động (Dynamic Relocation)
12
CPU sản sinh Địa chỉ lô-gíc
MMU thực hiện: Địa chỉ lô-gíc + Nội dung thanh
ghi tái định vị ==> Địa chỉ vật lý
Vị trí và Chức năng của MMU
(MMU gửi các địa chỉ
vật lý sang Bộ nhớ)
13
SỬ DỤNG BASE REGISTER VÀ LIMIT REGISTER
(Địa chỉ byte
đầu của Job2)
(Số byte của Job2)
14
Memory
THUẬT GIẢI BẢO VỆ BỘ NHỚ
Job i
(CPU sản sinh 1
địa chỉ bộ nhớ)
15
(Bắt lỗi truy cập sai địa chỉ)
Cơ chế overlay
Tại mỗi thời điểm, chỉ giữ lại trong bộ
nhớ những lệnh hoặc dữ liệu cần thiết,
giải phóng các lệnh/dữ liệu chưa hoặc
không cần dùng đến.
Cơ chế này rất hữu dụng khi kích thước
một process lớn hơn không gian bộ nhớ
cấp cho process đó.
Cơ chế này được điều khiển bởi người
sử dụng (thông qua sự hỗ trợ của các
thư viện lập trình) chứ không cần sự hỗ
trợ của hệ điều hành
16
Cơ chế overlay
Pass 1
70K
Pass 2
80K
Symbol table
20K
Đơn vị: byte
symbol
table
20K
common
routines
30K
overlay
driver
10K
Common routines 30K
Assembler
Total memory
available = 150KB
pass 1
17
70K
nạp và thực thi
pass 2
80K
Cơ chế swapping
Một process có thể tạm thời bị swap ra khỏi bộ
nhớ chính và lưu trên một hệ thống lưu trữ phụ.
Sau đó, process có thể được nạp lại vào bộ nhớ
để tiếp tục quá trình thực thi.
Swapping policy: hai ví dụ
Round-robin: swap out P1 (vừa tiêu thụ hết quantum
của nó), swap in P2 , thực thi P3 ,…
Roll out, roll in: dùng trong cơ chế định thời theo độ
ưu tiên (priority-based scheduling)
Process có độ ưu tiên thấp hơn sẽ bị swap out nhường chỗ
cho process có độ ưu tiên cao hơn mới đến được nạp vào
bộ nhớ để thực thi
Hiện nay, ít hệ thống sử dụng cơ chế swapping trên
18
Minh họa cơ chế swapping
19
Phân mảnh (fragmentation)
Phân mảnh ngoại (external fragmentation)
Kích thước không gian nhớ còn trống đủ để thỏa mãn một
yêu cầu cấp phát, tuy nhiên không gian nhớ này không
liên tục có thể dùng cơ chế kết khối (compaction) để
gom lại thành vùng nhớ liên tục.
Phân mảnh nội (internal fragmentation)
Kích thước vùng nhớ được cấp phát có thể hơi lớn hơn
vùng nhớ yêu cầu.
Ví dụ: cấp một khoảng trống 18,464 bytes cho một
process yêu cầu 18,462 bytes.
Hiện tượng phân mảnh nội thường xảy ra khi bộ nhớ thực
được chia thành các khối kích thước cố định (fixed-sized
block) và các process được cấp phát theo đơn vị khối. Ví
dụ: cơ chế phân trang (paging).
20
Phân mảnh nội
operating
system
yêu cầu kế tiếp là
18,462 bytes !!!
(used)
hole kích thước
18,464 bytes
cần quản lý khoảng
trống 2 bytes !?!
OS sẽ cấp phát hẳn khối 18,464 bytes
cho process dư ra 2 bytes không dùng!
21
Phân cấp bộ nhớ
22
NGUYÊN TẮC LƯU GẦN (CACHING)
–
–
–
–
23
Là nguyên tắc quan trọng của hệ thống máy
tính.
Thông tin từ RAM có thể được cơ chế phần
cứng đưa vào bộ nhớ nhanh hơn gọi là Cache.
Khi CPU cần chính thông tin đó, không cần phải
truy xuất RAM, mà lấy ngay từ Cache.
Loại bộ nhớ này không do HĐH quản lý và cấp
phát.
Thực tế, RAM (Bộ nhớ Sơ cấp) là loại Cache
nhanh so với đóa cứng (Bộ nhớ thứ cấp) và HĐH
có chức năng quản lý sự lưu chuyển dữ liệu
giữa 2 loại bộ nhớ
2. KỸ THUẬT CẤP PHÁT BỘ NHỚ
Kỹ thuật phân vùng cố định (Fixed partitioning)
Kỹ thuật phân vùng động (Dynamic partitioning)
Kỹ thuật phân trang (Paging)
Kỹ thuật phân đoạn (Segmentation)
25