Tải bản đầy đủ

hệ điều hành tran hanh nhi bàí01 bộ nhớ ao sinhvienzone com

BÀI 10 : BỘ NHỚ ẢO
test.exe

OS
0x3000

jump 0x5000

jump 0x2000

0x1000


test.exe

0x7000

0x3000
(base)

Cho đến nay : Nạp toàn bộ tiến trình vào bộ nhơ rồi thực hiện

nó...




Chậm, lãng phí bộ nhớ
Nếu kích thước tiến trình lớn hơn dung lương bộ nhớ chính ?
Lưu ý : tại 1 thời điểm chỉ có một chỉ thò được thực hiện
SinhVienZone.com

https://fb.com/sinhvienzonevn

1


Giải pháp
Real memory

Real memory

Page0

Page1

emacs

t1

Page0

emacs

t2
 Nạp từng phần chương trình khi cần thiết
 Demand paging
SinhVienZone.com

Page2

Time



https://fb.com/sinhvienzonevn

2


Cơ chế
 Sử dụng bộ nhớ phụ để lưu trữ tạm thời các trang chưa sử dụng
 Ai chòu trách nhiệm chuyển đổi ?
 Lập trình viên : Overlay
 Hệ điều hành : Bộ nhớ ảo (Virtual Memory)
DISK
P

SinhVienZone.com

RAM

https://fb.com/sinhvienzonevn

3


Bộ nhớ ảo = “lời nói dối vó đại“
 Người dùng : sở hữu bộ nhớ “vô hạn”, “riêng biệt”
 Hệ điều hành : “thầm lặng” thực hiện quá trình swapping
# of references

10% RAM
+
90% DISK
Memory address

RAM

SinhVienZone.com

DISK
https://fb.com/sinhvienzonevn

4


Thực hiện Bộ nhớ ảo

 Bảng trang : thêm 1 bit valid/invalid để nhận diện trang
đã hay chưa được nạp vào RAM
Frame
17
4183
177
5721

valid/invalid
1
0
1
0

Disk
Mem

 Truy xuất đến một trang chưa được nạp vào bộ nhớ :
lỗi trang (page fault)
SinhVienZone.com

https://fb.com/sinhvienzonevn

5


Xử lý lỗi trang
3

OS

xác đònh vò trí lưu trang trên đóa
lỗi trang
2

truy xuất
1

nạp M

Bộ nhớ ảo

i
6

tái kích hoạt
tiến trình

Bảng trang

M

frame trống

5

cập nhật
bảng trang
SinhVienZone.com

swap out
trang nạn nhân

3’

4

Bộ nhớ vật lý
https://fb.com/sinhvienzonevn

mang trang
cần truy xuất
vào bộ nhớ
6


Các câu hỏi

1.

Chọn trang nạn nhân ? => Chiến lược thay thế trang

2.

Chọn trang nào để nạp ? => Chiến lược nạp

SinhVienZone.com

https://fb.com/sinhvienzonevn

7


Chiến lược thay thế trang


FIFO: trang “già” nhất









Công bằng ?
Không xét đến tính sủ dụng !

TỐI ƯU : trang lâu sử dụng đến
nhất trong tương lai


Tần suất lỗi trang thấp nhất
Không khả thi !

LRU :trang lâu nhất chưa sử dụng
đến trong quá khứ


victim

victim
AGBDCABCABCGABC
victim

Cur page

AGBDCABCABCGABC
Cur page

Dự đoán tương lai LRU = MIN ?
SinhVienZone.com

add

https://fb.com/sinhvienzonevn

8


Chiến lược nạp


Demand paging : nạp trang được yêu cầu




Khi nào ?
Nạp sau : tần suất lỗi trang cao ? => pure demand paging
Nạp trước : làm sao biết ? =>prepaging

ld init pages

ld page

ld page

ld page

...

init pages = ?
SinhVienZone.com

https://fb.com/sinhvienzonevn

9


Thrashing = ảo tưởng sụp đổ !


Các tiến trình trong hệ thống yêu cầu bộ nhớ nhiều hơn khả
năng cung cấp của hệ thống !
P1

P2

P3

Real mem

 Tất cả tiến trình đầu bận rộn xử lý lỗi trang !
 IO hoạt động 100 %, CPU rảnh !
 Hệ thống ngừng trệ
SinhVienZone.com

https://fb.com/sinhvienzonevn

10


Nguyên nhân Thrashing

1. Tiến trình không tái sử dụng bộ nhớ (quá khứ != tương lai)
2. Tiến trình tái sử dụng bộ nhớ, nhưng với kích thươc lớn hơn
3. Quá nhiều tiến trình trong hệ thống

 Chỉ có thể kiểm soát thrashing do nguyên nhân 3.

SinhVienZone.com

https://fb.com/sinhvienzonevn

11


Giải quyết thrasing với mô hình Working set

 Working set = tập hợp các trang tiến trình đang truy xuất tại 1
thời điểm.
 Hệ điều hành :
 Chỉ nạp một tiến trình khi có đủ khung trang tự do cho
working set của nó.
 Kiểm soát mức độ đa chương của hệ thống : Nếu tổng số
khung trang yêu cầu của các tiến trình trong hệ thống vượt
quá các khung trang có thể sử dụng, chọn một tiến trình để
tạm dừng, ngược lại, khi tổng working set bé hơn số khung
trang tự do, nạp thêm tiến trình.
12
SinhVienZone.com

https://fb.com/sinhvienzonevn



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

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

×