Chương 9: Bộ nhớ ảo
Post on 16-Mar-2016
76 Views
Preview:
DESCRIPTION
Transcript
Chương 9: Bộ nhớ ảoHoàng Thị Thúy VyPhạm Thị PhươngNguyễ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ớ ảo Bộ nhớ ánh xạ tập tin
Bộ nhớ vật lý
Không gian địa chỉ ả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à i trê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
vvvvi
ii
….
Frame # valid-invalid bit
Bảng trang
Bảng trang khi một số trang không có trong bộ nhớ chính
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 trang1. 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ống3. Đưa trang vào khung trang trống đó4. Cập nhật lại bảng trang5. Thiết lập lại bit hợp lệ = v6. 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í
Các bước giải quyết một lỗi trang
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.
Tiến trình 1 trước khi sửa đổi trang C
Tiến trình 1 sau khi sửa đổi trang C
Đ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.
Nhu cầu thay thế trang
Thay 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.
Thay thế trang
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
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
44 3
Thuật toán thay thế trang FIFO
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
2
3
4 6 page faults
4 5
Thuật toán thay thế trang Optimal (tối ưu)
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
5
2
4
3
1
2
3
4
1
2
5
4
1
2
5
3
1
2
4
3
Thuật toán thay thế trang LRU
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
mSspa
msS
ps
iii
i
ii
for allocation
frames of number total
process of size
5964137127
564137101271064
2
1
2
a
a
ssm
i
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
Sự trì trệ (tiếp)
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ớ
Vị trí trong 1 mô hình tham chiếu 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
Lược đồ tần số trang lỗi
Chứng minh tỷ lệ lỗi trang “có thể chấp nhận” Nếu tỉ lệ quá thấp, tiến trình sẽ mất khung Nếu tỷ lệ quá cao, tiến trình sẽ lấn khung
Giới hạn cao
Bộ 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ẻ
Bộ nhớ ánh xạ tập tin
Bộ nhớ ảo A
Bộ nhớ ảo B
Bộ nhớ vật lý
Tập tin đĩa
Bộ nhớ ánh xạ tập tin trong Windows
Bộ nhớ chia sẻ
Bộ nhớ ánh xạ tập tin
Bộ nhớ ánh xạ tập tin trong JAVA
Phân bố nhân bộ nhớ
Xử lý khác nhau bởi người dùng bộ nhớ Thường phân bố từ một vùng bộ nhớ tự do
Nhân yêu cầu bộ nhớ có những cấu trúc với kích cỡ khác nhau
Một số nhân bộ nhớ cần phải đặt kề nhau
Hệ 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
Bộ cấp phát hệ thống bạn bèCác trang vật lý kề nhau
Bộ 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ớ
Cấp phát slab
Nhân đối tượng
Các trang vật lý kề nhau
Cá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
Các vấn đề khác- Kích thước trang
Lựa chọn kích thước trang phải xem xét đến: Sự phân đoạn Kích thước bảng Chi phí cho thiết bị vào ra Vị trí
Cá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
Các vấn đề khác – Cấu trúc chương trình Cấu trúc chương trình
int[128,128] data; Mỗi hàng được lưu trong một trang Program 1
for (j = 0; j <128; j++) for (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
Cá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ớ Xem xét thiết bị vào ra – Các trang được sử
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
Lý Do Tại Sao Khung trang sử dụng cho thiết bị vào ra phải ở trong bộ nhớ
Ổ đĩaBộ đệm
Một số hệ điều hành ví dụ
Windows XP
Solaris
Windows 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
Solaris
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ó
Solaris 2 Quét Trang
Kết thúc chương 9
top related