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.. BỘ NHỚ ẢO VITRUAL MEMORY - Cho phép thực thi một
Trang 1BÀ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
Trang 21 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
Trang 3Như 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
Trang 4- 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
Trang 5- 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)
Trang 6- 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
Trang 7Có 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