Bài giảng Hệ điều hành nâng cao - Bài 7: Bộ nhớ ảo - Trần Hạnh Nhi
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
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)
Bạn đang xem tài liệu "Bài giảng Hệ điều hành nâng cao - Bài 7: 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 7: Bộ nhớ ảo - Trần Hạnh Nhi
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 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_7_bo_nho_ao_tran_hanh_nh.ppt