Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 12 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
12
Dung lượng
151,5 KB
Nội dung
1
BÀI 10 : 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 !
[...]...Nguyên nhân Thrashing 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 Chỉ có thể kiểm soát thrashing do nguyên nhân 3 3 Quá nhiều tiến trình trong hệ thống 11 Giải quyết thrasing với mô hình Working set Working . 1
BÀI 10 : 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. 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”