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
152 KB
Nội dung
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 !
[...]... 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 có thể Chỉ hơn 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 set = tập hợp các trang tiến trình đang truy xuất tại 1 thời điểm Hệ điều hành : Chỉ nạp một tiến trình khi có đủ khung... set = tập hợp các trang tiến trình đang truy xuất tại 1 thời điểm Hệ điều hành : Chỉ nạp một tiến trình khi có đủ khung trang tự do cho working set của nó Kiểm soát mức độ đa chương của hệ thống : Nếu tổng số khung trang yêu cầu của các tiến trình trong hệ thống vượt quá các khung trang có thể sử dụng, chọn một tiến trình để tạm dừng, ngược lại, khi tổng working set bé hơn số khung12 trang tự . 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.
nhớ :
lỗi trang (page fault)
17 1
4183 0
177 1
572 1 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