Bài giảng Hệ điều hành nâng cao - Bài 10: Bộ nhớ ảo - Trần Hạnh Nhi
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)
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ớ : 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
Bạn đang xem tài liệu "Bài giảng Hệ điều hành nâng cao - Bài 10: Bộ nhớ ảo - Trần Hạnh Nhi", để tải tài liệu gốc về máy hãy click vào nút Download ở trên
Tóm tắt nội dung tài liệu: Bài giảng Hệ điều hành nâng cao - Bài 10: Bộ nhớ ảo - Trần Hạnh Nhi
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 Time t2 t1 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 Hệ đ iều hành : Bộ nhớ ảo ( 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 # 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 7 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 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 AGBDCAB C ABC G ABC victim Cur page A GBDCAB C ABCGABC 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 ! 11 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 12 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.
File đính kèm:
- bai_giang_he_dieu_hanh_nang_cao_bai_10_bo_nho_ao_tran_hanh_n.ppt