Tải bản đầy đủ (.pdf) (7 trang)

BÀI 8 BỘ NHỚ ẢO pdf

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (360.63 KB, 7 trang )

BÀI 8 BỘ NHỚ ẢO
GROUP6789.COM
I. TẠI
SAO
PHẢI
CẦN
BỘ
NHỚ
ẢO
- Không nhất thiết tất cả các phần trong process được nạp vào bộ
nhớ chính tại cùng một thời điểm.
- Nêu nạp tất cả chương trình vào bộ nhớ chính cũng chưa chắc
rằng chúng sử dụng cùng lúc.
- Có nên chăng lưu trữ một số thứ trong process mà lâu lâu mới
xài tới??
II. BỘ NHỚ
ẢO
(VITRUAL
MEMORY)
- Cho phép thực thi một quá trình mà chỉ cần giữ lại một phần
của không gian địa chỉ luận lý của nó trong bộ nhớ chính (giữ
mấy địa chỉ cần thiết), còn lại giữ trên bộ nhớ phụ (đĩa)
- Thông thường những phần chưa cần nạp vào bộ nhớ chính thì
được giữ lại tại một vùng đặc biệt trên đĩa gọi là swap space
- Ưu điểm:
 Số lượng process trong bộ nhớ nhiều hơn. (đa nhiệm)
 Process có thể được thực thi mặc dù kích thước của nó
lớn hơn bộ nhớ thực.
III. PHẦN
CỨNG HỖ
TRỢ BỘ


NHỚ ẢO
- Sự hỗ trợ của phần cứng đối với việc phân trang đã được nói
ở chương trước.
- Mỗi mục của bảng trang còn kèm thêm các bit trạng thái đặc
biệt:
 Present bit: nếu =1 là trang hợp lệ và hiện trong memory,
nếu =0 là trang không hợp lệ hoặc không có trong
memory
 Modified bit: cho biết trang này có thay đổi kể từ khi nạp
vào bộ nhớ hay không.

IV. HIỆN
THỰC BỘ
NHỚ ẢO
- Hiện thực bộ nhớ ảo là công việc chuyển đổi các trang từ
bộ nhớ ảo sang bộ nhớ thực khi được yêu cầu.
Demand paging: các trang của quá trình chi được nạp vào
bộ nhớ chính khi có yêu cầu.
- -Khi có một tham chiếu đến trang mà trong đó không nằm
trong bộ nhớ chính (present bit =0) thì phần cứng sẽ gây ra
một ngắt (page-fault trap) kích khởi page –fault service
routine (PFSR) của OS.
1.

Chuyền process về trạng thái blocked.
2. Phát yêu cầu đọc đĩa để nạp trang được tham chiếu vào 1 frame
trống. Lúc này một process khác vào CPU để thực thi.
3. Sauk hi I/O hoàn tất, đĩa lại gây ra 1 ngắt đến hệ điều hành.
PFSR sẽ cập nhật lại pagetable và chuyển process về trạng thái
ready.


Nhìn vào hình vẽ
Bước 1 khi tham chiếu (reference) vào page talbe bị lỗi (trang
này không có trong bộ nhớ chính)
Bước 2 báo ngắt (trap) về cho hệ điều hành để HĐH xử lí
Bước 3 Tìm trang được lưu trữ trong bộ nhớ phụ.
Bước 4 Tìm được rồi thì nhét nó vào bộ nhớ vật lý (thông qua
frame trống)
Bước 5 Reset bảng trang.
Bước 6 Khởi động lại việc truy cập.
*** Lỡ may không có free Frame thì làm thế nào!!??***
1. Xác định vị trí của trang đang cần trên đĩa.
2. Tìm một frame trống:
 Nếu có frame trống thì dùng nó
 Nếu không có frame trống thì dùng một frame nào đó
làm vật hi sinh (victim)
 Swap victim và trang đang cần với nhau. Lúc này page
cần sẽ vào frame của victim.
3. Cập nhật page table và frame table tương ứng.

Như hình vẽ ta có
Bước 1: swap victim
Bước 2: change frame của swap thành invalid
Bước 3: Nhét trang cần truy cập vào bộ nhớ vật lý
Bước 4: reset page table. Khi đó frame của victim chinh là
frame của trang cần truy cập
V. HIỆN
THỰC
DEMAND
PAGING

- Có 2 vấn đề cần giải quyết:
1. Cấp phát cho process bao nhiêu frame của bộ nhớ thực?
2. Giải thuật thay thế trang như thế nào là phù hợp?
- Mục tiêu là làm sao cho lượng page fault nhỏ nhất.
- Được đánh giá bằng cách thực thi giải thuật đối với một chuỗi
tham chiếu bộ nhớ và xác định số lần xảy ra page fault
VI. CÁC
GIẢI THUẬT
THAY
TRANG
FIFO (tới trước thay trước)
Hình vẽ bên dưới nhé!
Hàng đầu tiên là chuỗi tham chiếu
Hàng thứ 2,3,4 số khung trang
Page Fault được đánh dấu hoa thị.
- Đầu tiên là 7 vào, vì trong khung trang chưa có 7 nên nó sẽ báo
lỗi, đồng thời add 7 vào frame 1.
- Sau đó 0 vào, cũng báo lỗi và được add vào frame 2.
- Tương tự 1 được add vào frame 3
- Tiếp theo 2 được xét. Check trong 3 frame không có. Nhưng tại
7 vào đầu tiên nên 2 và 7 sẽ swap cho nhau.(trước đó đã báo
lỗi).
- Tiếp theo 0 được xét. Vi 0 có trong page frame nên không báo
lỗi.
- Tiếp theo là 3. Vì 0 là thằng đầu tiên vào trong 3 thằng 2 0 1
nên swap 3 với 0 ta được 2 3 0. Cứ xét như vậy cho đến hết.

NGHỊC LÍ BeLady.
- Nếu page frame ở ví dụ ít quá (3 Frame) ta có thể tăng lên
4Frame nhằm hạn chết Page Faults. Nhưng kết quả là số Page

Faults lại tăng nhiều hơn. Tại sao vậy?
- Các page faults phần lớn xảy ra ở khúc đầu, nghĩa là page frame
đang trống, và do vậy nếu frame càng nhiều thì càng có nhiều
page faults.
GIẢI THUẬT OPTIMAL (OPT)
Hay còn gọi là giải thuật nhìn về tương lai
Mục đích: thay thế trang nhớ sẽ được tham chiếu trễ nhất trong tương
lai
Giả sử có 1 process chứa 7 trang. Và được cấp 3 frame.
Các bước thực hiện như sau.
- 3 bước đầu giống với giải thuật FIFO.
- Kế tiếp, khi ta cho 2 vào, hãy nhìn đằng trước nó trang nào sẽ
được tham chiếu trễ nhất.


- Bằng cách đi ngược lại, ta sẽ dễ dàng chọn được 7, vì 1 và 0
được dùng trước cả 7. Nên ta sẽ swap 7 với 2. Lúc này frame
chứa 2 0 1.
- Tiếp theo, 0 vào không báo lỗi (vì page frame đã chứa 0)
- Sau đó 3 vào. Quan sát trên trình tự vào frame thấy trong 3
frame (2,0,1) ta thấy 0 và 2 là 2 trang vào trước, 1 là trang sẽ
vào sau, nên ta swap 1 với 3, ta được các frame còn lại là 2 0 3.
Cứ làm tương tự.
Một mẹo nhỏ khi làm
- Trước khi chèn page vào frame, bạn nên kiểm tra frame đó
có những page nào. So sánh với trình tự xuất hiện lần lượt
sau đó của các page này để thấy được page nào sẽ lâu lâu
mới được gọi

GIẢI THUẬT LRU (LEAST RECENTLY USED)

GT LÂU NHẤT CHƯA SỬ DỤNG.
(giải thuật này còn được gọi là nhìn về quá khứ)
- Vẫn là một process có 7 page và được cấp 3 frame
- 3 lượt đầu, vẫn như các giải thuật khác.

- Tiếp theo. Khi page 2 vào. Xét trong 3 frame chứa 3 trang
7,0,1. Ta thấy 7 là thằng lâu nhất chưa được sử dụng. vậy nên ta
swap 2 và 7. Lúc này page frame có 2 0 1 (thằng nào chưa có
trong page frame làm ơn cho nó 1 cái hoa thị rồi tính tiếp)

- Tiếp theo 0 đã có trong frame nên miễn bàn và không page
faults
- Tiếp theo là page số 3. Nhận thấy trong 3 frame 2, 0, 1 thì 1
chính là thằng lâu lắm rồi không xài, nên đương nhiên là swap
3 với 1.
Rõ ràng ta thấy số 0 ở trước số 1 nếu đi theo hướng mũi tên,
nhưng hãy cẩn thận nhé, vì 0 mới đung trước 3. Luôn cẩn
thận nhé bạn

SO SÁNH 2
GIẢI THUẬT
LRU VÀ
FIFO

- Nhìn vào 2 giải thuật. ta thấy số lượng page faults của LRU
ít hơn so với của FIFO.


Số lượng
frame cấp cho

mỗi process
- Chiến lược cấp phát tĩnh:
Cấp phát cố định tại thời điểm ban đầu
- Chiến lươc cấp phát động:
Số lượng frame có thể thay đổi trong quá trình hoạt động.
Hệ điều hành phải mất chi phí để ước tính lỗi trang.
1. Chiến lược cấp phát tĩnh
- Cấp phát bằng nhau.
- Cấp phát theo tỉ lệ, dựa vào kích thước process
(có công thức kèm theo)
- Cấp phát theo độ ưu tiên.
Có p1,p2,p3. P nào được ưu tiên cao nhất thì được
cấp phát nhiều frame
TRÌ TRỆ HỆ
THỐNG
(THRASHIN
G)
Trashing là.
a. Mô hình cục bộ (Locality)
Nguyên lý locality:
- Là tập các trang được tham chiếu gần nhau nhất.
- Một process gồm nhiều locality, và trong quá trình
thực thi, process sẽ chuyển từ locality nài sang
locality khác
- Thrashing xảy ra khi tổng các trang tham chiếu gần
nhau nhất lớn hơn kích thước bộ nhớ
b. Giải pháp tập làm việc

Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×