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 : OverlayOverlay Hệ điều hành : Bộ nhớ ảo (Virtual MemoryVirtual 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 # of references 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 . 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. nhớ : lỗi trang (page fault) 17 1 418 3 0 17 7 1 57 21 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í. Hệ điều hành : Bộ nhớ ảo (Virtual MemoryVirtual 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