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ÀI10 : 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 ! . 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. 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