1
BÀI 7 : BỘ NHỚ ẢO
Cho đến nay : Nạp toàn bộ tiến trình vào bộ nhơ rồi
thực hiện nó
Chậm, lãng phí bộ nhớ
Nếu kích thước tiến trình lớn hơn dung lương bộ nhớ chính ?
Lưu ý : tại 1 thời điểm chỉ có một chỉ thò được thực hiện
0x1000
test.exe
0x3000
0x3000
test.exe
jump 0x2000
jump 0x5000
0x7000
OS
(base)
2
Giải pháp
Nạp từng phần chương trình khi cần thiết
Demand paging
Real memory
Real memory
Page0
emacs
Timet2t1
Page0
emacs
Page1
Page2
3
Cơ chế
Sử dụng bộ nhớ phụ để lưu trữ tạm thời các trang chưa sử
dụng
Ai chòu trách nhiệm chuyển đổi ?
Lập trình viên :
Overlay
Overlay
Hệ điều hành : Bộ nhớ ảo (
Virtual Memory
Virtual Memory)
P
RAM
DISK
4
Bộ nhớ ảo = “lời nói dối vó đại“
Người dùng : sở hữu bộ nhớ “vô hạn”, “riêng biệt”
Hệ điều hành : “thầm lặng” thực hiện quá trình swapping
RAM
DISK
#
o
f
r
e
f
e
r
e
n
c
e
s
Memory address
10% RAM
+
90% DISK
5
Thực hiện Bộ nhớ ảo
Bảng trang : thêm 1 bit valid/invalid để nhận diện
trang
đã hay chưa được nạp vào RAM
Truy xuất đến một trang chưa được nạp vào bộ nhớ
:
lỗi trang (page fault)
17 1
4183 0
177 1
5721 0
Disk
Mem
Frame
valid/invalid
6
Xử lý lỗi trang
Bộ nhớ vật lý
M
Bộ nhớ
ảo
nạp
M
OS
Bảng trang
truy xuất
1
2
lỗi trang
3
xác đònh vò trí lưu trang
trên đóa
3’
swap out
trang nạn
nhân
4
mang
trang cần
truy xuất
vào bộ nhớ
5
cập nhật
bảng trang
6
tái kích
hoạt tiến
trình
frame trống
i
7
Các câu hỏi
1. Chọn trang nạn nhân ? => Chiến lược thay thế
trang
2. Chọn trang nào để nạp ? => Chiến lược nạp
8
Chiến lược thay thế trang
FIFO: trang “già” nhất
Công bằng ?
Không xét đến tính sủ dụng !
TỐI ƯU : trang lâu sử dụng
đến nhất trong tương lai
Tần suất lỗi trang thấp nhất
Không khả thi !
LRU :trang lâu nhất chưa sử
dụng đến trong quá khứ
Dự đoán tương lai LRU =
MIN ?
add
victim
AGBDCABCABCGABC
victim
Cur page
AGBDCABCABCGABC
victim
Cur page
9
Chiến lược nạp
Demand paging : nạp trang được yêu cầu
Khi nào ?
Nạp sau : tần suất lỗi trang cao ? => pure demand
paging
Nạp trước : làm sao biết ? =>prepaging
ld init pages
ld page
ld page
ld page
init pages = ?
10
Thrashing = ảo tưởng sụp đổ !
Tất cả tiến trình đầu bận rộn xử lý lỗi trang !
IO hoạt động 100 %, CPU rảnh !
Hệ thống ngừng trệ
Real mem
P1
P2
P3
Các tiến trình trong hệ thống yêu cầu bộ nhớ nhiều
hơn khả năng cung cấp của hệ thống !
11
Nguyên nhân Thrashing
Chỉ có thể kiểm soát thrashing do nguyên nhân 3.
1. Tiến trình không tái sử dụng bộ nhớ (quá khứ !=
tương lai)
2. Tiến trình tái sử dụng bộ nhớ, nhưng với kích thươc
lớn hơn
3. Quá nhiều tiến trình trong hệ thống
Không có nhận xét nào:
Đăng nhận xét