Bài giảng Lập trình hệ điều hành - Chương 8: Virtual Memory cung cấp cho người học các kiến thức: Tổng quan, phân trang theo yêu cầu, thay thế trang, cấp phát khung trang, thrashing, một số tác vụ với kỹ thuật bộ nhớ ảo. Mời các bạn cùng tham khảo nội dung chi tiết.
Khoa Công Nghệ Thông Tin & Truyền Thông Đại học Cần Thơ Giảng viên: Hà Duy An Tổng quan Phân trang theo yêu cầu Thay trang Cấp phát khung trang Thrashing Một số tác vụ với kỹ thuật nhớ ảo 10/28/2013 Chương 8: Virtual Memory • Các mã lệnh phải nhớ để thực thi, tồn chương trình dùng o Các lệnh xử lý lỗi, cấu trúc liệu lớn, tùy chọn tính dùng • Tồn chương trình khơng phải sử dụng lúc • Khả nạp chương trình phần vào nhớ để thực thi: o Giải phóng ràng buộc với giới hạn nhớ thực o Nhiều chương trình thực thi đồng thời o Thao tác I/O để nạp hốn vị tiến trình cần 10/28/2013 Chương 8: Virtual Memory • Bộ nhớ ảo (Virtual memory): tách biệt nhớ luận lý người dùng khỏi nhớ vật lý: o Chỉ phần chương trình cần nhớ để thực thi khơng gian địa luận lý lớn nhiều so với không gian địa vật lý o Cho phép khơng gian địa trải rộng với khoảng trống dành cho việc sử dụng tương lai o Các thư viện chia hay nhớ chia cài đặt cách ánh xạ đối tượng cần chia vào khơng gian luận lý tiến trình o Các trang chia suốt thời gian tạo tiến trình với lời gọi hệ thống fork() => tăng tốc độ tạo tiến trình o Nhiều chương trình đưa vào nhớ để thực thi đồng thời o Cần thao tác I/O nạp hay hoán vị 10/28/2013 Chương 8: Virtual Memory 10/28/2013 Chương 8: Virtual Memory 10/28/2013 Chương 8: Virtual Memory 10/28/2013 Chương 8: Virtual Memory • Bộ nhớ ảo cài đặt: o Phân trang theo yêu cầu o Phân đoạn theo yêu cầu 10/28/2013 Chương 8: Virtual Memory 10 10/28/2013 Chương 8: Virtual Memory • Để ngăn ngừa thrashing, phải cung cấp cho tiến trình số khung mà cần o Vấn đề biết số khung mà tiến trình cần o Một vài kỹ thuật sử dụng • Hai giải pháp ngăn ngừa thrashing o Mơ hình tập làm việc (Working set model) o Sơ đồ tần suất lỗi trang (Page-fault frequency scheme) 10/28/2013 50 Chương 8: Virtual Memory • Mơ hình tập làm việc bắt đầu cách xem xét có khung tiến trình dùng o Phương pháp định nghĩa mơ hình cục (locality model) việc thực thi tiến trình o Một cục tập hợp trang dùng với o Khi tiến trình thực thi, di chuyển từ cục sang cục khác o Một chương trình nói chung tạo thành từ vài cục khác nhau, phủ lấp • Giả sử cấp phát khung đủ cho cục o Tiến trình lỗi (fault) cho trang đến trang nhớ o Tiến trình khơng lỗi thay đổi cục o Nếu cấp phát số khung kích thước cục bộ, thrashing xảy 10/28/2013 51 Chương 8: Virtual Memory • Δ≡ cửa sổ tập làm việc (working-set window) ≡ số lượng cố định tham khảo trang o Xác định Δ tham khảo trang o Ví dụ: 10,000 tham khảo • WSi (tập làm việc tiến trình Pi) = tập hợp trang Δ tham khảo trang gần o Nếu trang dùng, tập làm việc Nếu khơng cịn dùng nữa, khỏi tập làm việc sau Δ đơn vị thời gian o Nếu Δ nhỏ: không bao quát tồn nhóm cục o Nếu Δ q lớn: phủ lấp vài nhóm cục o Nếu Δ = ∞⇒ ta xem xét toàn chương trình 10/28/2013 52 Chương 8: Virtual Memory 10/28/2013 53 Chương 8: Virtual Memory • Thuộc tính quan trọng tập làm việc kích thước o o o o • Gọi WSSi kích thước tập làm việc cho tiến trình i D = Σ WSSi ≡ tổng số khung cần thiết m tổng số khung nhớ sẵn dùng Nếu D > m thrashing Chính sách: D > m, tạm dừng số tiến trình 10/28/2013 54 Chương 8: Virtual Memory • Sử dụng định thời + bit tham khảo • Ví dụ: Δ = 10,000 o Bộ định thời phát ngắt 5000 tham khảo o Giữ nhớ bit cho trang o Mỗi định thời phát ngắt chép xóa nội dung bit tham khảo o Khi có lỗi trang xuất hiện, kiểm tra bit tham khảo bit nhớ để xác định trang có dùng khoảng 10,000 đến 15,000 tham khảo cuối khơng o Nếu có bit ⇒ trang nằm tập làm việc • Giải pháp khơng thật xác, khơng thể biết tham khảo trang xuất lúc khoảng 5,000 tham khảo • Cải tiến: dùng 10 bits phát ngắt 1000 tham khảo 10/28/2013 55 Chương 8: Virtual Memory • Thrashing xem tượng tỷ lệ lỗi trang cao kiểm soát tỷ lệ lỗi trang để hạn chế thrashing • Page-Fault Frequency Scheme (PFF) = số lỗi trang / số thị thực thi • Nếu PFF cao, tiến trình cần thêm khung Ngược lại, PFF q thấp, tiến trình có q nhiều khung • Đặt cận (upper and lower bound) cho PFF • Nếu PFF > cận trên, cấp thêm khung cho tiến trình Nếu khơng có khung sẵn dùng chuyển tiến trình ngồi • Nếu PFF < cận lấy bớt nhớ tiến trình 10/28/2013 56 Chương 8: Virtual Memory 10/28/2013 57 Chương 8: Virtual Memory 58 10/28/2013 Chương 8: Virtual Memory • Copy-on-Write (COW) cho phép tiến trình cha ban đầu chia sẻ trang nhớ o Nếu tiến trình cha sửa đổi trang chia sẻ, trang chép thành Trang đưa vào không gian địa tiến trình đã sửa đổi • COW cho phép việc tạo tiến trình hiệu chép trang bị sửa đổi • Được dùng nhiều HĐH, bao gồm Windows XP, Linux, Solaris 10/28/2013 59 Chương 8: Virtual Memory • Trước tiến trình cập nhật trang C 10/28/2013 60 Chương 8: Virtual Memory • Sau tiến trình cập nhật trang C 10/28/2013 61 Chương 8: Virtual Memory • Giải pháp Memory-mapped file I/O cho phép việc đọc ghi lên tập tin xem thao tác đọc ghi nhớ cách ánh xạ khối đĩa đến trang nhớ • Đầu tiên, tập tin đọc cách sử dụng giải pháp phân trang theo yêu cầu Một phần có kích thước trang tập tin đọc từ hệ thống tập tin vào trang vật lý Sau thao tác đọc ghi lên tập tin coi thao tác đọc ghi nhớ thơng thường • Đơn giản hóa việc truy xuất tập tin cách xử lý vào tập tin thông qua nhớ cách gọi lời gọi hệ thống read(), write() • Cũng cho phép nhiều tiến trình ánh xạ file để trang nhớ sử dụng chia tiến trình 10/28/2013 62 Chương 8: Virtual Memory 10/28/2013 63 Chương 8: Virtual Memory ... Cần thao tác I/O nạp hay hoán vị 10/ 28/ 2013 Chương 8: Virtual Memory 10/ 28/ 2013 Chương 8: Virtual Memory 10/ 28/ 2013 Chương 8: Virtual Memory 10/ 28/ 2013 Chương 8: Virtual Memory • Bộ nhớ ảo cài đặt:... trang gọi pager 10/ 28/ 2013 11 Chương 8: Virtual Memory 10/ 28/ 2013 12 Chương 8: Virtual Memory • Kết hợp với mục từ bảng trang bit valid/invalid (v (1) ⇒in-memory, i (0) ⇒ not-in-memory) • Khởi đầu... trang từ chương trình nhị phân đĩa, xóa trang (khơng hốn vị trang đĩa) cần khung trống o Được dùng Soloris BSD Unix hành 10/ 28/ 2013 22 Chương 8: Virtual Memory 23 10/ 28/ 2013 Chương 8: Virtual