780 likes | 1.19k Views
Chương 9: Bộ nhớ ảo. Hoàng Thị Thúy Vy Phạm Thị Phương Nguyễn Đức Phan. Chương 9: Bộ nhớ ảo. Thứ cấp Nhu cầu phân trang Copy-on-write Trang thay thế Sự phân cấp của các khung Sự trì trệ (Thrashing) Các file ánh xạ bộ nhớ Bộ nhớ ánh xạ tập tin(Memory-Mapped Files) Những đánh giá khác
E N D
Chương 9: Bộ nhớ ảo Hoàng Thị Thúy Vy Phạm Thị Phương Nguyễn Đức Phan
Chương 9: Bộ nhớ ảo • Thứ cấp • Nhu cầu phân trang • Copy-on-write • Trang thay thế • Sự phân cấp của các khung • Sự trì trệ (Thrashing) • Các file ánh xạ bộ nhớ • Bộ nhớ ánh xạ tập tin(Memory-Mapped Files) • Những đánh giá khác • Các ví dụ về hệ diều hành
Mục tiêu: • Chỉ ra lợi ích của bộ nhớ ảo • Giải thích các khái niệm về nhu cầu phân trang,những thuật toán thay thế trang,và sự phân chia các khung trang. • Thảo luận nguyên tắc thiết lập mô hình làm việc.
Thứ cấp • Bộ nhớ ảo_bộ nhớ logic được phân cấp từ bộ nhớ vật lý • Một phần chương trình thực hiện phải được nạp vào bộ nhớ • Vì thế không gian địa chỉ logic phải lớn hơn nhiều so với không gian địa chỉ vật lý • Không gian địa chỉ cho phép được chia sẻ bởi nhiều tiến trình • Cho phép tạo ra các tiến trình một cách có hiệu quả • Bộ nhớ ảo có thể được thực hiện thông qua 2 kỹ thuật: • Phân trang theo yêu cầu(kết hợp với swap). • Phân đoạn theo yêu cầu(kết hợp với swap).
Bộ nhớ ảo lớn hơn bộ nhớ vật lý Bộ nhớ ánh xạ tập tin Bộ nhớ vật lý Bộ nhớ ảo
Thư viện chia sẻ sử dụng bộ nhớ ảo Các trang chia sẻ
Phân trang theo yêu cầu • Chỉ nạp một trang vào bộ nhớ khi nó cần thiết • Ít nhu cầu vào ra hơn • Chiếm ít bộ nhớ hơn • Xử lý nhanh hơn • Có thể xử lý được nhiều tiến trình hơn cùng 1 lúc • Trang cần thiết tham chiếu đến nó • Tham chiếu không hợp lệ huỷ bỏ • Không có trong bộ nhớ đưa vào bộ nhớ • Lazy swapper-Bộ hoán vị lười – chỉ đưa một trang vào bộ nhớ khi nó cần thiết • Việc hoán đổi thực hiện với từng trang riêng lẻ được gọi là pager(Bộ phân trang)
Qúa trình trao đổi một trang bộ nhớ với không gian đĩa bên cạnh Chuyển bộ nhớ đc phân trang tới không gian đĩa liên tục
Valid-Invalid Bit • Mỗi lối vào bảng trang đều được liên kết với 1 bit valid_invalid (hợp lệ_không hợp lệ) (v in-memory,i not-in-memory) • Ban đầu thì bit valid_invalid được thiết lập là itrên tất cả cácđiểm vào • Ví dụ về 1 bảng trang: • Trong khi đọc địa chỉ,nếu bit valid_invalid ở lối vào bảng trang là i lỗi trang Frame # valid-invalid bit v v v v i …. i i Bảng trang
Lỗi trang • Nếu có tham chiếu đến một trang, lần đầu tiên tham chiếu đến trang đó sẽ được giữ lại ở OS : lỗi trang • Hệ điều hành sẽ tìm kiếm ở những trang khác để quyết định: • Tham chiếu không hợp lệ huỷ bỏ • Không có trong bộ nhớ • Lấy khung trang trống • Đưa trang vào khung trang trống đó • Cập nhật lại bảng trang • Thiết lập lại bit hợp lệ = v • Khởi động lại chỉ thị gây ra lỗi trang ở trên.
Lôĩ trang (Cont.) • Khởi động lại chỉ thị • Di chuyển khối • Tự động tăng/giảm một vị trí
Sự hoạt động của phân trang theo yêu cầu • Tỷ lệ lỗi trang nằm trong khoảng 0 p 1.0 • Nếu p = 0 :không có lỗi trang. • Nếu p = 1, mỗi tham chiếu là 1 lỗi. • Effective Access Time (EAT):thời gian truy nhập có hiệu quả) EAT = (1 – p) x thời gian truy nhập + p (tham chiếu gặp lỗi trang + đưa trang ra + nạp trang vào + tái kích hoạt tiến trình)
Ví dụ về phân trang theo yêu cầu • Thời gian truy nhập bộ nhớ = 200 ns • Thời gian trung bình chữa lỗi trang = 8 ms • EAT = (1 – p) x 200 + p (8 ms) = (1 – p x 200 + p x 8,000,000 = 200 + p x 7,999,800 • Nếu 1 trang lỗi vì sự truy cập vượt quá 1000 thì EAT = 8.2 mcs. Đây là sự chậm lại bởi yếu tố 40!!
Tạo ra tiến trình • Bộ nhớ ảo cho phép các tiện ích khác trong khi tạo ra tiến trình: -Copy-on-write . - Các file bộ nhớ ánh xạ (sau).
Copy-on-write • Copy-on-Write (COW) cho phép cả tiến trình cha và con vào lúc ban đầu có thể chia sẻ các trang như nhau trong bộ nhớ.Nếu 1 trong 2 tiến trình sửa đổi 1 trang chia sẻ, thì đó chỉ là trang đã được copy. • COW cho phép tạo ra nhiều tiến trình có hiệu quả như là chỉ sửa đổi các trang đã được copy. • Trang trống được cấp phát từ 1 khối các trang trống ở bên ngoài.
Điều gì sẽ xảy ra nếu không có khung trang trống? • Trang thay thế– tìm kiếm các trang trong bộ nhớ ,nếu trang đó không cần thiết tại thời điểm hiện tại thì đưa ra bộ nhớ ngoài (swap-out) • Thuật toán • Thực hiện – hướng tới 1 thuật toán có tối thiểu số lỗi trang. • Cùng 1 trang có thể được đưa vào bộ nhớ vài lần
Thay thế trang • Ngăn chặn việc phân chia tràn bộ nhớ bằng các thủ tục phục vụ cho việc sửa lỗi trang kể cả trang thay thế. • Sử dụng modify (dirty) bitđể hạn chế việc chuyển đổi các trang trên – chỉ sửa đổi những trang đã được ghi lên đĩa • Trang thay thế hoàn tất việc phân chia giữa bộ nhớ ảo và bộ nhớ vật lý –bộ nhớ ảo lớn hơn có thể được cấp phát trên bộ nhớ vật lý nhỏ hơn.
Thay thế trang cơ sở • Tìm vị trí của trang cần tìm trên đĩa • Tìm 1 trang trống: - Nếu có khung trang trống,sử dụng nó - Nếu không có khung trang trống,sử dụng thuật toán trang thay thế để chọn ra 1 khung trang thoả mãn • Nạp trang vừa tìm thấy vào khung trang trống; cập nhật lại trang và bảng trang. • Tái kích hoạt tiến trình.
Thuật toán thay thế trang • Cần có tỉ lệ lỗi trang thấp nhất • Đánh giá thuật giải bằng việc chạy nó trên 1 chuỗi sự kiện tham chiếu bộ nhớ (chuỗi tham chiếu) và tính số lỗi trang trong chuỗi này • Trong tất cả các ví dụ, chuỗi tham chiếu là 1, 2, 3, 4, 1, 2, 5, 1, 2, 3, 4, 5
Đồ thị biểu diễn số lỗi trang đối với số khung trang
Thuật toán vào trước ra trước (FIFO) • Chuỗi tham chiếu: 1, 2, 3, 4, 1, 2, 5, 1, 2, 3, 4, 5 • 3 khung trang (3 trang được nạp vào bộ nhớ ở mỗi thời điểm của tiến trình) • 4 khung trang • Belady’s Anomaly: more frames more page faults 1 1 4 5 2 2 1 3 9 page faults 3 3 2 4 1 1 5 4 2 2 1 10 page faults 5 3 3 2 4 4 3
FIFO minh họa cho nghịch lý Belady Đường cong lỗi trang cho thay thế trên chuỗi tham khảo
Thuật toán Optinal (tối ưu) • Trang được chọn để thay thế là trang sẽ lâu được sử dụng nhất trong tương lai • 4 khung trang ví dụ 1, 2, 3, 4, 1, 2, 5, 1, 2, 3, 4, 5 • Ta biết điều này bằng cách nào? • Dùng thước đo bằng việc thực hiện các thuật toán 1 4 6 page faults 2 3 4 5
Thuật toán Least Recently Used (LRU) • Chuỗi tham chiếu: 1, 2, 3, 4, 1, 2, 5, 1, 2, 3, 4, 5 • Sử dụng bộ đếm counter • Mỗi entry (điểm vào) trang có 1 bộ đếm; mỗi lần trang được tham chiếu thông qua entry này, sao chép đồng hồ vào bộ đếm counter • Khi cần thay thế 1 trang, nhìn vào bộ đếm counter để quyết định thay thế trang nào 1 1 1 5 1 2 2 2 2 2 5 4 3 4 5 3 3 4 3 4
Thuật toán LRU (tiếp) • Sử dụng Stack – lưu trữ ở stack số hiệu của các trang với 1 hình thức liên kết kép: • Trang tham chiếu: • Chuyển nó lên đỉnh stack • Đòi hỏi 6 con trỏ phải thay đổi • Không cần tìm kiếm trang để thay thế
Sử dụng 1 stack để ghi lại lần tham chiếu gần đây nhất của trang
Thuật toán tính gần đúng LRU • Bit tham chiếu • Với mỗi trang kết hợp với 1 bít, ban đầu = 0 • Khi 1 trang được tham chiếu, bit được đặt bằng 1 • thay thế trang mà bit tham chiếu bằng 0 (nếu nó tồn tại) • Ta không biết thứ tự, tuy nhiên • Khả năng thứ 2 • Cần có bit tham chiếu • Đặt lại đồng hồ • Nếu trang được thay thế (trong thứ tự sử dụng) có bit tham chiếu = 1 thì: • Đặt bit tham chiếu bằng 0 • Lấy trang ra khỏi bộ nhớ • Thay thế trang tiếp theo (trong thứ tự sử dụng), với cùng 1 quy tắc
Thuật toán thay thế trang : khả năng thứ 2 ( sử dụng clock)
Thuật toán đếm • Lưu lại ở bộ đếm counter số lần mà mỗi trang được tham chiếu • Thuật toán LFU: thay thế trang có bộ đếm counter nhỏ nhất • Thuật toán MFU: căn cứ vào đối số của trang có bộ đếm counter nhỏ nhất mà dường như chắc chắn là được đưa vào và chưa được sử dụng
Cấp phát khung trang • Mỗi tiến trình cần 1 số trang tối thiểu • Ví dụ: IBM 370 – 6 trang để điều khiển các lệnh di chuyển SS MOVE: • Các lệnh 6 bytes, có thể kéo dài qua 2 trang • 2 trang để điều khiển from • 2 trang để điều khiển to • 2 chính sách cấp phát chủ yếu: • Cấp phát tĩnh (fixed allocation) • Cấp phát ưu tiên (priority allocation)
Cấp phát tĩnh (Fixed Allocation) • Cấp phát bằng nhau – ví dụ, nếu có 100 khung trang và 5 tiến trình, cấp phát cho mỗi tiến trình 20 khung trang. • Cấp phát tương đương–cấp phát tùy theo kích thước của tiến trình
Cấp phát ưu tiên (Priority Allocation) • Sử dụng kế hoạch cấp phát ưu tiên, sử dụng quyền ưu tiên • Nếu tiến trình Pi phát ra 1 lỗi trang, • Chọn thay thế 1 trang trong tất cả khung trang của nó • Chọn thay thế 1 khung trang từ 1 tiến trình với độ ưu tiên thấp nhất
Cấp phát toàn cục và cục bộ (Global vs. Local Allocation) • Thay thế toàn cục (Global replacement) – tiến trình chọn 1 khung trang thay thế từ tập hợp tất cả các khung trang; tiến trình có thể chọn 1 khung từ tiến trình khác • Thay thế cục bộ (Local replacement) – mỗi tiến trình chỉ chọn 1 khung trang từ tập hợp các khung trang được cấp phát của nó
Sự trì trệ (Thrashing) • Nếu 1 tiến trình không có đủ trang, thì lỗi trang phát ra rất cao. Điều chỉnh: • Việc sử dụng CPU chậm (hiện tượng trì trệ hệ thống) • Hệ điều hành nghĩ rằng nó cần phải tăng thêm mức độ đa chương • Thêm tiến trình khác vào hệ thống • thất bại (Thrashing) 1 tiến trình đang bận swap trang vào và ra
Yêu cầu phân trang và sự trì trệ • Vì sao phải đòi hỏi phân trang làm việc?Mô hình vị trí • Tiến trình chuyển từ 1 vị trí này đến 1 vị trí khác • Các vị trí có thể đè lên nhau • Vì sao xảy ra thất bại? kích thước của vị trí > toàn bộ kích thước của bộ nhớ
Mô hình tập làm việc • mô hình làm việc cửa sổ cố định một số trang tài liệu tham chiếu Example: 10,000 lệnh,hướng dẫn • WSSi (mô hình làm việc của tiến trình Pi) =tổng số trang tham chiếu gần nhất (thay đổi trong thời gian) • Nếu quá nhỏ sẽ ko chứa đựng được toàn bộ các địa phương • Nếu quá lớn sẽ chỉ chứa đựng được 1 số địa phương • Nếu = sẽ chứa đựng toàn bộ chương trình • D = WSSi tổng nhu cầu khung • Nếu D > m Trì trệ (Thrashing) • Chính sách nếu D > m, đình chỉ 1 trong các tiến trình
Mô hình thiết lập làm việc Tham chiếu bảng trang
Theo dõi việc quản lý chế độ làm việc • Gần giống với khoảng thời gian + một chút tham chiếu • Example: = 10,000 • Thời gian ngắt sau mỗi 5000 đơn vị thời gian • Giữ trong bộ nhớ 2 bits cho mỗi trang • Mỗi lần ngắt thì sao chép và đặt ra giá trị tất cả các tham chiếu bằng 0 • Nếu một trong những bits trong bộ nhớ = 1 làm việc ở chế độ thiết lập trang • Tại sao ko hoàn toàn chính xác? • Nâng cao chất lượng = 10 bits và ngắt sau mỗi 1000 đơn vị thời gian