You are on page 1of 21

1

BÀI 13 QUẢN LÝ BỘ NHỚ ẢO


1. KHÁI NIỆM
2. PHÂN TRANG THEO YÊU CẦU
3. THAY THẾ TRANG
4. CẤP PHÁT KHUNG TRANG
5. TRÌ TRỆ TOÀN HỆ THỐNG
6. BÀI TẬP
2
BÀI 13 QUẢN LÝ BỘ NHỚ ẢO
KHÁI NIỆM
 Bộ nhớ ảo là một kỹ thuật cho phép
một không gian địa chỉ logic lớn có thể
được ánh xạ vào một bộ nhớ vật lý nhỏ
hơn.
 Bộ nhớ ảo có thể được triển khai bằng
cách phân trang hoặc phân đoạn, trong
đó kỹ thuật phân trang thông dụng hơn.
 Bộ nhớ ảo cho phép chạy những tiến
trình cực lớn và cũng cho phép gia tăng
mức độ đa chương được, tăng hiệu suất
sử dụng CPU. Ngoài ra, nó giải phóng
người lập trình ứng dụng khỏi việc lo
lắng về khả năng sẵn có của bộ nhớ.
3
BÀI 13 QUẢN LÝ BỘ NHỚ ẢO
KHÁI NIỆM
Nguyên lý cơ bản của bộ nhớ ảo:
 Bộ phận quản lý bộ nhớ không nạp tất cả các trang/đoạn
của một tiến trình vào bộ nhớ để nó hoạt động, mà chỉ nạp
các trang/đoạn cần thiết tại thời điểm khởi tạo.
 Nếu có một trang/đoạn của một tiến trình cần được nạp vào
bộ nhớ trong tình trạng bộ nhớ không còn khung trang/phân
đoạn trống thì bộ phận quản lý bộ nhớ sẽ đưa một
trang/đoạn không cần thiết tại thời điểm hiện tại ra bộ bộ
nhớ ngoài (hoán vị ra, swap-out), để lấy không gian nhớ
trống đó nạp trang/đoạn vừa có yêu cầu. Sau này,
trang/đoạn bị hoán vị ra sẽ được đưa lại vào bộ nhớ vật lý
tại một thời điểm thích hợp hoặc cần thiết (hoán vị vào,
swap-in).
4
BÀI 13 QUẢN LÝ BỘ NHỚ ẢO
KHÁI NIỆM
Kỹ thuật bộ nhớ ảo:
- Phân trang theo yêu cầu (demand paging)
- Phân đoạn theo yêu cầu (demand segmentation)
5
BÀI 13 QUẢN LÝ BỘ NHỚ ẢO
PHÂN TRANG THEO YÊU CẦU
- Hệ thống phân trang theo yêu cầu là hệ thống sử
dụng kỹ thuật phân trang kết hợp với kỹ thuật
hoán vị.
- Một trang chỉ được nạp vào bộ nhớ chính khi có
yêu cầu.
- Khi có yêu cầu về một trang nào đó, cần có cơ
chế cho biết trang đang ở trong bộ nhớ hay trên
bộ nhớ phụ.
- Các kỹ thuật có thể sử dụng:
 Sử dụng bit kiểm tra.
 Cơ chế phần cứng.
6
BÀI 13 QUẢN LÝ BỘ NHỚ ẢO
THAY THẾ TRANG
- Là cơ chế thay thế một trang đang nằm trong bộ
nhớ nhưng chưa cần sử dụng bằng một trang
đang nằm trong đĩa (bộ nhớ phụ) đang được yêu
cầu.
- Thay thế trang gồm hai thao tác chính:
 Sao chép một trang (trang nạn nhân) từ bộ
nhớ chính ra bộ nhớ phụ (hoán vị ra).
 Sao chép một trang từ bộ nhớ phụ vào bộ
nhớ chính (hoán vị vào).
7
BÀI 13 QUẢN LÝ BỘ NHỚ ẢO
THAY THẾ TRANG
Các bước thay thế trang
8
BÀI 13 QUẢN LÝ BỘ NHỚ ẢO
THAY THẾ TRANG
Thuật toán thay thế trang
- Tiêu chí: Chọn trang nạn nhân là trang mà sau khi
thay thế sẽ gây ra ít lỗi trang nhất!
- Thuật toán:
 FIFO (First In First Out)
 Tối ưu (ít sử dụng nhất trong tương lai)
 LRU (ít sử dụng nhất trong quá khứ)
9
BÀI 13 QUẢN LÝ BỘ NHỚ ẢO
THUẬT TOÁN FIFO
- Ý tưởng:
 Ghi nhận thời điểm một trang được đưa vào bộ nhớ.
 Thay thế trang ở trong bộ nhớ lâu nhất.
 Có thể tạo một hàng đợi FIFO để quản lý các trang
đang ở trong bộ nhớ. Khi cần thay thế trang, chọn
trang ở đầu hàng đợi và xóa nó ra khỏi hàng đợi.
 Khi trang được nạp vào bộ nhớ chính, đưa nó vào
cuối của hàng đợi.
- Ưu điểm: đơn giản, dễ hiểu, dễ cài đặt.
- Nhược điểm: không làm giảm xác suất lỗi trang, thậm
chí xác suất lỗi trang có thể tăng lên khi tăng số lượng
khung trang (nghịch lý Belady).
10
BÀI 13 QUẢN LÝ BỘ NHỚ ẢO
THUẬT TOÁN FIFO – VÍ DỤ 1
 Giả sử 1 tiến trình có 8 trang, đánh số từ 0 đến 7, tiến trình được cấp 3
khung trang. Thứ tự truy xuất các trang của tiến trình như sau 7, 0, 1, 2, 0,
3, 0, 4, 2, 3, 0, 3, 2, 1, 2, 0, 1, 7, 0, 1. Thực hiện giải thuật thay thế trang
FIFO (trang đã ở trong bộ nhớ vật lý lâu nhất) cho chuỗi truy xuất trang
trên.
 Hướng dẫn: Kết quả của việc thay thế trang theo giải thuật FIFO được thể
hiện như bảng sau, dòng "Trang" cho biết trang được yêu cầu truy xuất,
dòng "Khung trang" cho biết trang được nạp vào khung trang nào, dòng
"Lỗi" cho biết lần truy xuất đó có xảy ra lỗi trang hay không. Kết quả cho
thấy có 15 lỗi trang trên 20 lần truy xuất, trong đó có 12 lần thay thế trang.

Trang 7 0 1 2 0 3 0 4 2 3 0 3 2 1 2 0 1 7 0 1
7 7 7 2 2 2 2 4 4 4 0 0 0 0 0 0 0 7 7 7
Khung
0 0 0 0 3 3 3 2 2 2 2 2 1 1 1 1 1 0 0
trang
1 1 1 1 0 0 0 3 3 3 3 3 2 2 2 2 2 1
Lỗi * * * * * * * * * * * * * * *
11
BÀI 13 QUẢN LÝ BỘ NHỚ ẢO
THUẬT TOÁN FIFO – VÍ DỤ 2
 Cho chuỗi truy xuất trang: 1, 2, 3, 4, 1, 2, 5, 1, 2, 3, 4, 5. Hệ
thống có 3 khung trang (3 trang có thể đồng thời trong bộ nhớ
tại mỗi thời điểm)
 Thực hiện giải thuật thay thế trang FIFO (trang đã ở trong bộ
nhớ vật lý lâu nhất) cho chuỗi truy xuất trang trên.

Trang 1 2 3 4 1 2 5 1 2 3 4 5

Khung
trang
Lỗi
 Kết quả: có ? lỗi trang.
12
BÀI 13 QUẢN LÝ BỘ NHỚ ẢO
THUẬT TOÁN FIFO – VÍ DỤ 3
 Cho chuỗi truy xuất trang: 1, 2, 3, 4, 1, 2, 5, 1, 2, 3, 4, 5. Hệ
thống có 4 khung trang
 Thực hiện giải thuật thay thế trang cho chuỗi truy xuất trang
trên.

Trang 1 2 3 4 1 2 5 1 2 3 4 5

Khung
trang

Lỗi
 Kết quả: có ? lỗi trang.
13
BÀI 13 QUẢN LÝ BỘ NHỚ ẢO
THUẬT TOÁN TỐI ƯU
- Ý tưởng: Thay thế trang sẽ lâu được sử dụng nhất
trong tương lai.
- Ưu điểm: xác suất lỗi trang thấp nhất.
- Nhược điểm: Khó cài đặt vì nó yêu cầu thông tin về
tương lai của chuỗi truy xuất.
14
BÀI 13 QUẢN LÝ BỘ NHỚ ẢO
THUẬT TOÁN TỐI ƯU – VÍ DỤ

Trang 7 0 1 2 0 3 0 4 2 3 0 3 2 1 2 0 1 7 0 1
Khung
trang
Lỗi
 Kết quả: có ? lỗi.
15
BÀI 13 QUẢN LÝ BỘ NHỚ ẢO
THUẬT TOÁN LRU (LÂU NHẤT CHƯA ĐƯỢC SỬ DỤNG)
- Ý tưởng:
 Ghi nhận thời điểm cuối cùng trang được truy cập.
 Thay thế trang chưa được truy cập lâu nhất.
- Ưu điểm: tỉ lệ lỗi trang thấp, được áp dụng nhiều
trong thực tế.
- Nhược điểm: Đòi hỏi phải có cơ chế phần cứng hỗ trợ
để xác định thứ tự cho các trang trong bộ nhớ chính
theo thời điểm truy xuất cuối cùng.
16
BÀI 13 QUẢN LÝ BỘ NHỚ ẢO
THUẬT TOÁN LRU (LÂU NHẤT CHƯA ĐƯỢC SỬ DỤNG)
VÍ DỤ

Trang 7 0 1 2 0 3 0 4 2 3 0 3 2 1 2 0 1 7 0 1
Khung
trang
Lỗi
 Kết quả: có ? lỗi.
17
BÀI 13 QUẢN LÝ BỘ NHỚ ẢO
CẤP PHÁT KHUNG TRANG
- Trong hệ đa chương có hai nhu cầu mâu thuẫn nhau:
vừa muốn thực thi cùng lúc nhiều tiến trình lại vừa
muốn đảm bảo tốc độ hoạt động của hệ thống (tức là
muốn số lỗi trang trên toàn hệ thống là ít nhất).
- Cấp phát khung trang nhằm đảm bảo hệ thống có thể
vận hành một cách tối ưu.
- Số khung trang tối thiểu cần cấp cho một tiến trình
được quy định bởi kiến trúc máy tính, trong khi số
khung trang tối đa được xác định bởi dung lượng bộ
nhớ vật lý có thể sử dụng.
18
BÀI 13 QUẢN LÝ BỘ NHỚ ẢO
CẤP PHÁT KHUNG TRANG
Giải thuật cấp phát
- Cấp phát cố định: Mỗi tiến trình sẽ được cấp phát một
số lượng khung trang cố định ngay từ đầu cho đến khi
kết thúc thi hành.
- Cấp phát công bằng: hệ thống có m khung trang, n
tiến trình => mỗi tiến trình có m/n khung trang.
- Cấp phát theo tỉ lệ.
- Cấp phát theo độ ưu tiên: Số khung trang dành cho
mỗi tiến trình phụ thuộc vào độ ưu tiên của tiến trình
tại thời điểm xác định.
19
BÀI 13 QUẢN LÝ BỘ NHỚ ẢO
TRÌ TRỆ TOÀN HỆ THỐNG
- Sự trì trệ (thrashing) là hiện tượng tiến trình thường
xuyên phát sinh lỗi trang và vì thế phải dùng rất nhiều
thời gian sử dụng CPU để thực hiện thay thế trang =>
Thời gian dành cho xử lý công việc còn rất ít => Hệ
thống gần như mất khả năng xử lý công việc.
- Tốc độ phát sinh lỗi trang tang rất cao, không công
việc nào có thể kết thúc vì tất cả tiến trình đều bận rộn
với việc thay thế trang => Tình trạng trì trệ toàn bộ hệ
thống.
- Nguyên nhân là do tiến trình không có đủ các khung
trang để chứa những trang cần thiết cho xử lý công
việc.
20
BÀI 13 QUẢN LÝ BỘ NHỚ ẢO
GIẢI PHÁP
- Để tránh tình trạng trì trệ toàn hệ thống mà
vẫn duy trì được mức độ đa chương cao,
cần phải có các giải pháp xác định và điều
chỉnh mức độ cấp phát khung trang cho
các tiến trình sao cho không thừa không
thiếu.
- Hai trong số các giải pháp đó là mô hình
“Tập làm việc” và “Kiểm soát tần suất lỗi
trang”.
21
BÀI 13 QUẢN LÝ BỘ NHỚ ẢO
BÀI TẬP
Cho chuỗi truy xuất sau (vẽ lại và điền kết quả vào bảng
sau) theo giải thuật thay thế trang:
- FIFO
- Tối ưu (ít sử dụng nhất trong tương lai)
- LRU (trang lâu nhất chưa sử dụng bị thay ra)
Trang 1 2 3 5 2 6 1 6 7 1 5 3 2 5 6 7 3 2 1 5
Khung
trang
(k=4)

Lỗi

You might also like