Bài giảng Hệ điều hành nâng cao - Bài 7: Bộ nhớ ảo - Trần Hạnh Nhi

n Cho đến nay : Nạp toàn bộ tiến trình vào bộ nhơ rồi thực hiện nó.

n Chậm, lãng phí bộ nhớ

n Nếu kích thước tiến trình lớn hơn dung lương bộ nhớ chính ?

n Lưu ý : tại 1 thời điểm chỉ có một chỉ thị được thực hiện

 

ppt12 trang | Chuyên mục: Hệ Điều Hành | Chia sẻ: yen2110 | Lượt xem: 369 | Lượt tải: 0download
Tóm tắt nội dung Bài giảng Hệ điều hành nâng cao - Bài 7: Bộ nhớ ảo - Trần Hạnh Nhi, để xem tài liệu hoàn chỉnh bạn click vào nút "TẢI VỀ" ở trên
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) 
1 
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 
Time 
t2 
t1 
Page0 
emacs 
Page1 
Page2 
2 
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 
 Hệ điều hành : Bộ nhớ ảo ( Virtual Memory ) 
P 
RAM 
DISK 
3 
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 
# of references 
Memory address 
10% RAM 
+ 
90% DISK 
4 
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 
5 
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 
6 
Các câu hỏi 
Chọn trang nạn nhân ? => Chiến lược thay thế trang 
Chọn trang nào để nạp ? => Chiến lược nạp 
7 
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 
AGBDCAB C ABC G ABC 
victim 
Cur page 
A GBDCAB C ABCGABC 
victim 
Cur page 
8 
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 = ? 
9 
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 ! 
10 
Nguyên nhân Thrashing 
 Chỉ có thể kiểm soát thrashing do nguyên nhân 3. 
Tiến trình không tái sử dụng bộ nhớ ( quá khứ != tương lai ) 
Tiến trình tái sử dụng bộ nhớ , nhưng với kích thươc lớn hơn 
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 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ố khung trang tự do, nạp thêm tiến trình. 
12 

File đính kèm:

  • pptbai_giang_he_dieu_hanh_nang_cao_bai_7_bo_nho_ao_tran_hanh_nh.ppt