Bài giảng Nguyên lý hệ điều hành - Nguyễn Hải Châu - Tuần 7: Bộ nhớ ảo (Virtual Memory)

Virtual memory (Bộnhớảo)

zBộnhớảo– tách biệt bộnhớlogic và vật lý.

z Cho phép tiến trình có cỡlớn hơn bộnhớtrong có

thểthực hiện được

z Không gian địa chỉảo có thểlớn hơn nhiều so với

không gian địa chỉ vật lý (vềdung lượng)

z Cho phép các tiến trình sửdụng chung không gian

địa chỉ

z Cho phép tạo tiến trình hiệu quảhơn

zBộnhớảo có thể được cài đặt thông qua:

z Yêu cầu phân trang (demand paging)

z Yêu cầu phân đoạn (demand segmentation)

pdf8 trang | Chuyên mục: Hệ Điều Hành | Chia sẻ: dkS00TYs | Lượt xem: 2052 | Lượt tải: 0download
Tóm tắt nội dung Bài giảng Nguyên lý hệ điều hành - Nguyễn Hải Châu - Tuần 7: Bộ nhớ ảo (Virtual Memory), để xem tài liệu hoàn chỉnh bạn click vào nút "TẢI VỀ" ở trên
ớ ảo có thể được cài đặt thông qua:
z Yêu cầu phân trang (demand paging)
z Yêu cầu phân đoạn (demand segmentation)
4
Minh họa bộ nhớ ảo có dung 
lượng lớn hơn bộ nhớ vật lý
5
Yêu cầu trang (demand paging)
z Chỉ đưa một trang vào bộ nhớ khi cần thiết
z Giảm thao tác các vào ra
z Tiết kiệm bộ nhớ
z Đáp ứng nhanh
z Tăng được số người sử dụng (tiến trình)
z Khi cần một trang ⇒ tham chiếu đến nó
z Tham chiếu lỗi ⇒ Hủy bỏ
z Không nằm trong bộ nhớ⇒ Đưa trang vào bộ
nhớ
6
Chuyển một trang (trong bộ
nhớ) ra vùng đĩa liên tục
27
Valid-Invalid Bit
z Mỗi phần tử bảng trang có một bit hợp 
lệ/không hợp lệ (1: trong bộ nhớ, 0: không 
trong bộ nhớ)
z Khởi đầu: valid–invalid bằng 0.
z Ví dụ bảng trang+bit invalid/valid:
z Khi tính địa chỉ, nếu valid–invalid
ở bảng trang là 0: ⇒ lỗi trang
(page-fault trap)
1
1
1
1
0
0
0
#
Frame #
valid-invalid 
bit
bảng trang 8
Bảng trang với một số trang 
không nằm trong bộ nhớ
9
Xử lý page-fault (lỗi trang)
z HĐH sẽ kiểm tra nguyên nhân lỗi:
z Lỗi từ tiến trình: kết thúc tiến trình, hoặc
z Trang không nằm trong bộ nhớ: Thực hiện tiếp:
z Tìm một frame rỗi và đưa trang vào bộ nhớ
z Sửa lại bảng trang (bit = valid)
z Thực hiện lại lệnh tham chiếu trang
z Vấn đề hiệu năng: Nếu tại một thời điểm có
yêu cầu nhiều trang (ví dụ: Một trang cho 
lệnh và vài trang cho dữ liệu)?
10
Các bước xử lý page-fault
11
Nếu không có frame rỗi?
z Thực hiện thay thế trang – swap out một số 
trang đang ở trong bộ nhớ nhưng hiện tại 
không được sử dụng
z Thuật toán nào tốt?
z Hiệu năng: Cần một thuật toán có ít page-fault nhất 
để hạn chế vào/ra
z Nhiều trang có thể được đưa vào bộ nhớ tại 
cùng một thời điểm.
z Thuật toán thay thế trang: FIFO, Optimal, 
LRU, LRU-approximation 12
Hiệu năng của yêu cầu trang
z Tỷ lệ page-fault là p: 0 ≤ p ≤ 1.0
z nếu p = 0: Không có page-fault
z nếu p = 1, mọi yêu cầu truy cập đến trang đều 
gây ra page-fault
z Effective Access Time (EAT)
EAT = (1 – p) x memory access
+ p (page fault overhead
+ [swap page out ]
+ swap page in
+ restart overhead)
313
Tạo tiến trình
z Bộ nhớ ảo có ưu điểm khi khởi tạo một tiến 
trình mới:
- Copy-on-Write (Chỉ tạo copy của trang khi 
có thay đổi)
- Memory-Mapped Files (Các file ánh xạ bộ
nhớ)
14
Copy-on-Write
z Copy-on-Write (COW) cho phép tiến trình 
cha và con dùng chung trang trong bộ nhớ
khi mới khởi tạo tiến trình con
z Chỉ khi nào một trong hai tiến trình sửa đổi 
trang dùng chung, thì trang đó mới được 
copy một bản mới
z COW làm cho việc tạo tiến trình hiệu quả 
hơn: Chỉ các trang bị sửa đổi mới được copy
z Các trang rỗi được cấp phát từ một tập hợp 
(pool) các trang được xóa trắng với số 0
15
Các file ánh xạ bộ nhớ
z Các file được xem như một phần bộ nhớ trong bằng 
các ánh xạ một khối đĩa vào một trang trong bộ nhớ
z Khởi đầu các file được đọc khi có yêu cầu trang: Một 
phần của file (cỡ=cỡ trang) được đọc vào bộ nhớ
z Các thao tác đọc/ghi trên file sau đó được xem như 
đọc/ghi trong bộ nhớ
z Đơn giản hóa việc truy cập file thông qua bộ nhớ hơn 
là sử dụng các hàm hệ thống read() và write().
z Cho phép các tiến trình có thể ánh xạ chung một file, 
do đó cho phép các trang dùng chung trong bộ nhớ
16
Ví dụ file ánh xạ bộ nhớ
17
Thay thế trang
z Thay thế trang dùng để tránh thực hiện nhiều 
lần cấp phát mỗi khi có page-fault
z Sử dụng modify bit để giảm chi phí
(overhead) vào/ra với các trang: Chỉ các 
trang có thay đổi mới được ghi ra đĩa
z Thay thế trang là một trong các yếu tố xóa đi 
sự khác biệt của bộ nhớ ảo và thật: Tiến trình 
lớn hơn dung lượng bộ nhớ trong có thể thực 
hiện được
18
Ví dụ: Yêu cầu thay thế trang
419
Cơ sở thay thế trang
1. Tìm vị trí của trang p cần thay trên đĩa 
2. Tìm một frame rỗi f:
1. Nếu có frame rỗi: Sử dụng frame đó
2. Nếu không có frame rỗi: Sử dụng thuật toán thay 
thế trang để đưa một trang trong bộ nhớ ra để sử
dụng frame ứng với trang đó
3. Đọc trang p vào frame f vừa tìm được và cập 
nhật bảng trang, bảng frame
4. Lặp lại quá trình này
20
Thay thế trang
21
Thuật toán thay thế trang
z Cần tỷ lệ page-fault thấp nhất
z Đánh giá thuật toán: Thực hiện trên một danh 
sách các yêu cầu truy cập bộ nhớ và tính số 
lượng các page-fault
z Trong tất cả các ví dụ, ta sử dụng danh sách 
yêu cầu truy cập bộ nhớ:
1, 2, 3, 4, 1, 2, 5, 1, 2, 3, 4, 5.
22
Đồ thị page-fault
23
Thuật toán FIFO
z Yêu cầu truy cập: 1, 2, 3, 4, 1, 2, 5, 1, 2, 3, 4, 5
z Bộ nhớ VL có 3 frame: 9 page-faults
z Bộ nhớ VL có 4 frame: 10 page-faults
z Thay thế FIFO –
Belady’s anomaly
z Có nhiều frame ⇒ ít page-fault
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
24
Thay thế trang FIFO
525
FIFO Illustrating Belady’s 
Anamoly
26
Thuật toán tối ưu
z Thay thế các trang sẽ không được sử dụng
trong khoảng thời gian dài nhất
z Danh sách yêu cầu truy cập: 1, 2, 3, 4, 1, 2, 
5, 1, 2, 3, 4, 5; có 4 frame
1
2
3
4
6 page-fault
4 5
27
Thay thế trang tối ưu
28
Thuật toán LRU (Least 
Recently Used )
z Thay thế trang không được sử dụng lâu nhất
z Danh sách yêu cầu truy cập: 1, 2, 3, 4, 1, 2, 5, 
1, 2, 3, 4, 5
z Cài đặt sử dụng biến đếm
z Mỗi trang có một biến đếm; mỗi khi trang được truy 
cập, gán giá trị đồng hồ thời gian cho biến đếm.
z Khi một cần phải thay thế trang, căn cứ vào giá trị
các biến đếm của trang: Cần tìm kiếm trong danh 
sách các trang
1
2
3
5
4
4 3
5
29
Thay thế trang LRU
30
Thuật toán LRU (tiếp)
z Cài đặt sử dụng ngăn xếp: Sử dụng một 
ngăn xếp (stack) lưu các số hiệu trang ở
dạng danh sách móc nối kép:
z Khi trang được tham chiếu đến:
z Chuyển trang lên đỉnh ngăn xếp
z Cần phải thay đổi 6 con trỏ
z Khi thay thế trang không cần tìm kiếm
631
Sử dụng ngăn xếp để ghi lại 
trang vừa mới được sử dụng
32
Thuật toán LRU xấp xỉ
z Thuật toán bit tham chiếu
z Sử dụng bit tham chiếu đánh dấu các trang 
đã được sử dụng/chưa được sử dụng
z Mỗi trang có 1 bit được khởi tạo bằng 0
z Khi trang được tham chiếu đến, đặt bit bằng 1
z Không biết thứ tự sử dụng các trang
33
Thuật toán LRU xấp xỉ (tiếp)
z Thuật toán “Second-chance”
z Là một thuật toán kiểu FIFO
z Cần sử dụng bit tham chiếu
z Thay thế theo thứ tự thời gian
z Nếu trang cần được thay thế (theo thứ tự thời 
gian) có bit tham chiếu là 1 thì:
z Đặt bit tham chiếu bằng 0, để trang đó trong bộ nhớ, 
chưa thay thế ngay (second chance)
z Thay thế trang tiếp theo (theo thứ tự thời gian) tuân 
theo qui tắc tương tự
z Có thể cài đặt bằng buffer vòng 34
Thuật toán second-chance
35
Các thuật toán đếm
z Sử dụng biến đếm để đếm số lần tham chiếu 
đến trang
z Thuật toán LFU (Least Frequently Used):
Thay thế các trang có giá trị biến đếm nhỏ
nhất
z Thuật toán MFU (Most Frequently Used):
Ngược lại với LFU, dựa trên cơ sở: Các 
trang ít được sử dụng nhất (giá trị biến đếm 
nhỏ nhất) là các trang vừa được đưa vào bộ
nhớ trong 36
Cấp phát các frame
z Mỗi tiến trình cần một số lượng tối thiểu các 
trang để thực hiện được
z Ví dụ: IBM 370 cần 6 để thực hiện lệnh SS
MOVE:
z Lệnh dài 6 bytes, có thể chiếm 2 trang.
z 2 trang để thao tác from.
z 2 trang để thao tác to.
z Hai cách cấp phát:
z Cấp phát cố định
z Cấp phát ưu tiên
737
Cấp phát cố định
z Cấp phát bình đẳng:
nếu cấp phát 100 frame 
cho 5 tiến trình, mỗi 
tiến trình có 20 frame.
z Cấp phát tỷ lệ: Dựa 
theo cỡ tiến trình.
z Cấp phát tỷ lệ:
m
S
spa
m
sS
ps
i
ii
i
ii
×==
=
∑=
=
 for allocation 
frames of number total 
 process of size 
5964
137
127
564
137
10
127
10
64
2
1
2
≈×=
≈×=
=
=
=
a
a
s
s
m
i
38
Cấp phát ưu tiên
z Sử dụng cấp phát tỷ lệ căn cứ vào độ ưu tiên 
của tiến trình, không căn cứ vào cỡ tiến trình
z Nếu tiến trình Pi sinh ra page-fault:
z Thay thế một trong các frame của tiến trình đó
z Thay thế một trong các frame của tiến trình khác 
có độ ưu tiên thấp hơn
39
Cấp phát tổng thể và cục bộ
z Thay thế tổng thể – Các trang/frame có thể 
được chọn để thay thế từ tập hợp tất cả các 
frame/trang. Tiến trình này có thể dùng lại 
frame/trang của tiến trình khác
z Thay thế cục bộ – Mỗi tiến trình chỉ thay thế
trong các trang/frame của chính nó đã được 
cấp phát
40
Thrashing
z Nếu tiến trình không có đủ trang, tỷ lệ page-
fault rất cao, điều đó dẫn tới:
z Khả năng tận dụng CPU thấp, do đó
z HĐH có thể tăng mức độ đa chương trình →
z Các tiến trình được tiếp tục đưa vào hệ thống
z → Hiện tượng thrashing
z Tiến trình thrashing: Một tiến trình luôn bận 
để swap-in và swap-out
41
Minh họa thrashing
42
Cách hạn chế/ngăn chặn thrashing
z Sử dụng thuật toán thay thế trang cục bộ
hoặc thay thế trang ưu tiên để hạn chế 
thrashing: Chưa giải quyết tốt
z Sử dụng mô hình cục bộ: mô hình working-
set
z Khi tiến trình thực hiện, nó chuyển từ điều kiện 
cục bộ này sang điều kiện cục bộ khác
z Điều kiện cục bộ được xác định dựa trên cấu trúc 
của chương trình và cấu trúc dữ liệu
843
Mô hình working-set
z Sử dụng tham số Δ là tổng số lần tham chiếu 
trang gần nhất
z Tập các trang sử dụng trong Δ lần gần nhất 
là working-set
z WSSi là cỡ working-set của tiến trình Pi: Rõ 
ràng là WSSi phụ thuộc vào độ lớn của Δ
z Nếu Δ quá nhỏ: Không phản ánh đúng tính cục bộ
z Nếu Δ quá lớn: vượt qua tính cục bộ
z Nếu Δ = ∞: WSSi tập toàn bộ các trang trong quá
trình thực hiện tiến trình 44
Mô hình working-set
z D = Σ WSSi ≡ Tổng số các frame được yêu 
cầu
z Gọi m là tổng số fram rỗi: nếu D > m thì trong 
hệ thống sẽ xuất hiện thrashing
z Chính sách cấp phát: nếu D > m thì tạm 
dừng thực hiện một số tiến trình
45
Mô hình working-set
46
Các tệp ánh xạ bộ nhớ
z Sinh viên tự tìm hiểu trong giáo trình từ trang 
348 đến trang 353
47
Các vấn đề cần nhớ
z Bộ nhớ ảo
z Yêu cầu trang
z Thay thế trang
z Các thuật toán thay thế trang: FIFO, tối ưu, 
LRU, LRU xấp xỉ, LFU, MFU, thuật toán đếm
z Thrashing: Định nghĩa, nguyên nhân, cách 
khắc phục và phòng tránh
z Mô hình working-set

File đính kèm:

  • pdfBài giảng Nguyên lý hệ điều hành - Nguyễn Hải Châu - Tuần 7 Bộ nhớ ảo (Virtual Memory).pdf