No Slide Title 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ự[.]
Trang 1Chương 9: Bộ nhớ ảo
Hoàng Thị Thúy Vy Phạm Thị Phương Nguyễn Đức Phan
Trang 3Mụ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.
Trang 4Thứ 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)
Trang 5Bộ nhớ ảo lớn hơn bộ nhớ vật lý
Bộ nhớ ảo Bộ nhớ ánh xạ
Trang 6Không gian địa chỉ ảo
Trang 7Thư viện chia sẻ sử dụng bộ nhớ ảo
Các trang chia sẻ
Trang 8Phâ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)
Trang 9Qú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
Trang 10i i
….
Frame # valid-invalid bit
Bảng trang
Trang 11Bảng trang khi một số trang không có trong bộ nhớ
chính
Trang 12Lỗ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
1 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ớ
2 Lấy khung trang trống
3 Đưa trang vào khung trang trống đó
4 Cập nhật lại bảng trang
5 Thiết lập lại bit hợp lệ = v
6 Khởi động lại chỉ thị gây ra lỗi trang ở trên.
Trang 13Lôĩ trang (Cont.)
Khởi động lại chỉ thị
Di chuyển khối
Tự động tăng/giảm một vị trí
Trang 14Các bước giải quyết một lỗi trang
Trang 15Sự 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)
Trang 16
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
Trang 17Tạ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).
Trang 19Tiến trình 1 trước khi sửa đổi
trang C
Trang 20Tiến trình 1 sau khi sửa đổi
trang C
Trang 21Đ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
Trang 23Nhu cầu thay thế trang
Trang 24Thay thế trang cơ sở
1 Tìm vị trí của trang cần tìm trên đĩa
2 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
3 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.
4 Tái kích hoạt tiến trình.
Trang 25Thay thế trang
Trang 26Thuật toán thay thế trang
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
1, 2, 3, 4, 1, 2, 5, 1, 2, 3, 4, 5
Trang 27Đồ thị biểu diễn số lỗi trang đối với số khung trang
Trang 28Thuậ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 2 3
1 2 3
4 1 2
5 3 4
9 page faults
1 2 3
1 2 3
5 1 2
4
5 10 page faults 4
Trang 29Thuật toán thay thế trang FIFO
Trang 30FIFO minh họa cho nghịch lý Belady
Đường cong lỗi trang cho thay thế trên chuỗi tham khảo
Trang 31Thuật toán Optinal (tối ưu)
dụng nhất trong tương lai
1, 2, 3, 4, 1, 2, 5, 1, 2, 3, 4, 5
1 2 3
4 6 page faults
4 5
Trang 32Thuật toán thay thế trang Optimal (tối ưu)
Trang 33Thuật toán Least Recently Used (LRU)
Chuỗi tham chiếu: 1, 2, 3, 4, 1, 2, 5, 1, 2, 3, 4, 5
1 2 3 4
1 2
5
4
1 2 5
3
1 2
4
3
Trang 34Thuật toán thay thế trang LRU
Trang 35Thuật toán LRU (tiếp)
các trang với 1 hình thức liên kết kép:
Trang 36Sử dụng 1 stack để ghi lại lần tham chiếu gần đây nhất của trang
Trang 37Thuật toán tính gần đúng LRU
Trang 38Thuật toán thay thế trang : khả năng thứ 2 ( sử dụng
clock)
Trang 39Thuật toán đếm
đượ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
Trang 40Cấp phát khung trang
chuyển SS MOVE:
Trang 41Cấp phát tĩnh (Fixed Allocation)
trang và 5 tiến trình, cấp phát cho mỗi tiến trình 20 khung trang.
thước của tiến trình
m S
s p
a m
s S
p s
i i
i
i
i i
frames of
number total
process of
size
59
64 137
127
5
64 137
10 127 10 64
2 1 2
i
Trang 42Cấp phát ưu tiên (Priority Allocation)
quyền ưu tiên
của nó
độ ưu tiên thấp nhất
Trang 43Cấ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ó
Trang 44thêm mức độ đa chương
thất bại (Thrashing) 1 tiến trình đang bận
swap trang vào và ra
Trang 45Sự trì trệ (tiếp)
Trang 46Yêu cầu phân trang và sự trì trệ
Mô hình vị trí
trí khác
kích thước của vị trí > toàn bộ kích thước của bộ nhớ
Trang 47Vị trí trong 1 mô hình tham chiếu bộ nhớ
Trang 48Mô 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
WSS i (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 = WSS i 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
Trang 49Mô hình thiết lập làm việc
Tham chiếu bảng trang
Trang 50Theo dõi việc quản lý chế độ làm việc
tham chiếu bằng 0
việc ở chế độ thiết lập trang
đơn vị thời gian
Trang 51Lược đồ tần số trang lỗi
Giới hạn cao
Trang 52Bộ nhớ ánh xạ tập tin
Bộ nhớ ánh xạ tập tin I/O cho phép các tệp I/O được đối xử như sự truy cập bộ nhớ thường trình bằng ánh xạ một khối đĩa đến 1 trang trong bộ nhớ
Một file đọc ban đầu sử dụng trang yêu cầu Một phần kik
cỡ trang của file dc đọc từ file hệ thống vào trang vật lý Tập tin đến sau đọc/ghi đến/từ dc đối xử như truy cập bộ nhớ thông thường
Truy nhập tập tin file I/O thông qua bộ nhớ đơn giản hơn
đọc() ghi() lời gọi hệ thống
Một số tiến trình cũng cho phép tham chiếu đến cùng một tập tin trong trang trên bộ nhớ để dc chia sẻ
Trang 54Bộ nhớ ánh xạ tập tin trong Windows
Bộ nhớ chia sẻ
Bộ nhớ ánh xạ tập tin
Trang 55Bộ nhớ ánh xạ tập tin trong JAVA
Trang 57Hệ thống bạn bè
Phân bố bộ nhớ phân đoạn nhất quán với kích thước cố định của các trang vật lý kề nhau
Việc cấp phát bộ nhớ sử dụng bộ cấp phát lũy thừa 2
Kích thước khối nhớ được cấp phát sẽ là lũy thừa 2
Kích thước đó sẽ là kích thước lũy thừa 2 cao nhất gần đó
Trong trường hợp không đủ bộ nhớ để cấp phát thì nó
sẽ chia 2
Cứ tiếp tục như vậy cho đến khi đủ bộ nhớ cấp phát
Trang 58Bộ cấp phát hệ thống bạn bè
Các trang vật lý kề nhau
Trang 59Bộ cấp phát Slab
Chiến lược luân phiên
Slab là một hay nhiều trang vật lý kề nhau
Cache bao gồm một hoặc nhiều slabs
Cache đơn cho mỗi cấu trúc dữ liệu hạt nhân duy nhất
Mỗi cache được phủ đầy bởi những đối tượng – một ví
dụ cụ thể của cấu trúc dữ liệu
Khi cache được tạo ra, các đối tượng điền vào sẽ được đánh dấu còn trống
Khi cấu trúc được lưu, các đối tượng được đánh dấu đã
sử dụng
Nếu một slab đã đầy các đối tượng, đối tượng tiếp theo sẽ được phân bổ vào một slab rỗng
Nếu không có slab rỗng, slab mới sẽ được tạo ra
Các quyền lợi bao gồm sự không phân mảnh, nhanh
chóng làm hài lòng yêu cầu của bộ nhớ
Trang 60Cấp phát slab
Nhân đối tượng
Các trang vật lý
kề nhau
Trang 61Các vấn đề khác-Phân Trang trước
Phân trang trước
Để giảm bớt một số lượng lớn lỗi trang tại thời điểm tiến trình khởi động
Tất cả các trang trước hoặc một số trang của tiến trình
sẽ cần đến, trước khi chúng được tham chiếu
Nhưng nếu những trang trước không được sử dụng, thiết bị vào/ra và bộ nhớ sẽ bị lãng phí
Giả sử s trang được chuẩn bị trước và α những trang
này đang được sử dụng
Sẽ tiêu tốn s * α để lưu những lỗi trang, > hay< hơn
chi phí của việc chuẩn bị trang trước
Có s * (1- α) những trang không cần thiết?
α gần bằng 0 chuẩn bị trang trước sẽ thất bại
Trang 63Các vấn đề khác – Phạm vi TLB
Phạm vi TLB – Số lượng bộ nhớ có thể truy cập từ TLB
Phạm vi TLB = (kích thước TLB) X (kích thước trang)
Theo ý tưởng, mô hình tập làm việc trong mỗi tiến trình sẽ
được lưu trữ trong TLB
Mặt khác sẽ có những lỗi trang ở mức độ cao
Tăng kích thước trang
Điều này dẫn đến việc tăng sự phân đoạn không như tất cả các ứng dụng đòi hỏi kích thước trang lớn
Cung cấp nhiều trang kích thước
Điều này cho phép các ứng dụng yêu cầu kích thước trang lớn cơ hội sử dụng chúng mà không phải tăng sự phân đoạn
TLB – Translation lookaside buffer – Bộ đệm chuyển hóa riêng
Trang 64for (i = 0; i < 128; i++) data[i,j] = 0;
128 x 128 = 16,384 lỗi trang
Program 2 for (i = 0; i < 128; i++) for (j = 0; j < 128; j++) data[i,j] = 0;
128 lỗi trang
Trang 65Các vấn đề khác – Neo thiết bị vào ra
Neo thiết bị vào ra – Đôi lúc cần neo một số
trang trong bộ nhớ
dụng cho việc sao chép một trang từ một thiết
bị được neo bằng việc lựa chọn để thu hồi bởi một thuận toán thay thế trang
Trang 66Lý Do Tại Sao Khung trang sử dụng cho thiết bị vào
ra phải ở trong bộ nhớ
Ổ đĩa
Bộ đệm
Trang 67Một số hệ điều hành ví dụ
Trang 68Windows XP
Sử dụng nhu cầu trang với kỹ thuật clustering.Kỹ thuật
Clustering brings in pages surrounding the faulting page
Các tiến trình được phân công làm việc ở chế độ tối thiểu và tối đa
Làm việc ở chế độ tối thiểu là với số trang nhỏ nhất trong tiến trình được đảm bảo có trong bộ nhớ
Một tiến trình có thể được phân công như nhiều trang để nó làm việc ở chế độ tối đa
Khi số lượng bộ nhớ trống trong hệ thống rớt xuống dưới
ngưỡng, chế độ làm việc tự động sắp xếp được thực hiện
để khôi phục số lượng bộ nhớ trống
Chế độ làm việc sắp xếp loại bỏ các tiến trình đã vượt quá trong chế độ làm việc tối thiểu
Trang 69Solaris
Duy trì một dach sách các trang trống để gán các lỗi tiến trình
Lotsfree – ngưỡng tham số (số lượng bộ nhớ trống) để bắt
đầu phân trang
Desfree – ngưỡng tham số để tăng sự phân trang
Minfree – ngưỡng tham số để bắt đầu swapping
Phân trang được thực hiện bởi tiến trình pageout
Pageout kiểm tra các trang bằng cách sửa đổi thuật toán đồng hồ
Scanrate là tỷ lệ các trang được kiểm tra Nó nằm trong
khoảng slowscan đến fastscan
Pageout được gọi thường xuyên hơn tùy thuộc vào số lượng
bộ nhớ trống sẵn có
Trang 70Solaris 2 Quét Trang
Trang 71Kết thúc chương 9