Chương 4. Quản lý vùng nhớ chính

You might also like

Download as pptx, pdf, or txt
Download as pptx, pdf, or txt
You are on page 1of 30

Chương 4:

1 QUẢN LÝ VÙNG NHỚ CHÍNH


2 Nội dung
 Tổ chức vùng nhớ chính
 Phân chia bộ nhớ và nạp tiến trình vào bộ nhớ
 Phân trang trong quản lý vùng nhớ
 Phân đoạn cho quản lý bộ nhớ
 Vùng nhớ ảo
3 4.1. Tổ chức vùng nhớ chính

L0 L0: regist (~ trăm KB; ps ->ns)


L1 L1,L2: SRAM (MB; 0->15ns)
L2 L3: DRAM (GB; 60->100ns)
L4: đĩa từ (~ trăm GB; ms)
L3
L5: băng từ (lớn; 100ms)
L4

L5
4 4.1. Tổ chức vùng nhớ chính (2)
Mục tiêu của việc quản lý vùng nhớ:
 Cấp phát vùng nhớ cho các tt có yêu cầu
 Thu hồi vùng nhớ khi tt th/h xong
 Quản lý vùng nhớ rỗi, vùng nhớ bận
 Tại một thời điểm có thể lưu giữ nhiều tt đồng thời
 Chuyển đổi giữa đ/c logic và đ/c vật lý
 Chia sẻ thông tin trong BN (giữa các tt)
 Ngăn chặn các tt xâm phạm đến vùng nhớ đã được cấp phát
5 4.1. Tổ chức vùng nhớ chính (3)
 PC main memory:
0x00
Bảng véc tơ ngắt
0x3FF

DOS + DOS data


Ax0000
Video DRAM
Bx000
Video
Cx000
Dự trữ
Dx000
Dự trữ
Ex000 BIOS
ROM
Fx000
6 4.1. Tổ chức vùng nhớ chính (4)
 Đ/c logic, đ/c vật lý, không gian logic, không gian vật lý

00000
00000, 00001,….->đ/c vật lý

00000 ÷ FFFFF ->không gian đ/c vật lý

FFFFF
7 4.2. Phân chia bộ nhớ và nạp tiến trình vào bộ nhớ
A A

B C

TT nạp tt: First Fit


C
Best Fit
Worst
PhânFit
mảnh nội vi
8 4.2. Phân chia bộ nhớ và nạp tiến trình vào bộ nhớ
 Vùng nhớ được phân chia thành những phần bằng nhau hoặc ko
bằng nhau. Khi nạp tt vào vùng nhớ phân chia => ko nhất thiết phải
liền kề nhau
 Các thuật toán nạp tt:
• First Fit: Tìm vùng nhớ trống đầu tiên trong ds đủ để nạp tt
• Best Fit: Tìm vùng nhớ trống trong toàn bộ ds, vừa vặn nhất, hợp lí nhất để
nạp tt
• Worst Fit: Tìm vùng nhớ trống lớn nhất trong ds để nạp tt
4.3. Phân trang trong quản lý vùng nhớ (Paging)
9

Nguyên tắc:
 TT được chia thành các trang có độ dài bằng nhau, có thể là
512B, 1K, 2K, 4K,…và được đánh số
 Vùng nhớ cũng được phân chia thành những phần bằng nhau, gọi
là khung trang (frame) và được đánh số
 Khi nạp trang tt vào frame thì ko nhất thiết phải liền kề nhau
4.3. Phân trang trong quản lý vùng nhớ (2)
10

Số trang Số khung
0 A0 0 A2
1 A1 1 B1
2 A2 2 C0
3 B0 3 A0
4 B1 4
5 C0 5 C1
6 C1 6 A1
7
8 B0
4.3. Phân trang trong quản lý vùng nhớ (3)
11

Bảng trang:
 Khi nạp tt vào khung trang thì bảng trang được hình thành
Số trang Số khung
0 3
1 6
2 0
3 8
4 1
5 2
6 5
4.3. Phân trang trong quản lý vùng nhớ (4)
12

Đ/c logic và đ/c vật lý trong phân trang:


 Đ/c logic: <p,d> (p: số trang; d: độ lệch)
 Đ/c vật lý:
đ/c logic

p d
2n 2m

p f d
f đ/c vật lý

Bảng trang
4.3. Phân trang trong quản lý vùng nhớ (5)
13

Quy tắc tính đ/c vật lý:


 Từ phần 2n trong đ/c logic (chỉ số trang) truy nhập vào
bảng trang để tìm số khung
 Lấy số khung ghép với độ lệch ta sẽ được đ/c vật lý. Hay
cách khác: đ/c vật lý = số khung x độ dài trang + độ lệch
4.4. Phân đoạn trong quản lý vùng nhớ
14

Nguyên tắc:
 TT được chia thành các đoạn có độ dài ko bằng nhau và được
đánh số
 Vùng nhớ cũng được phân chia thành các đoạn có độ dài ko bằng
nhau và cũng được đánh số
 Khi nạp đoạn tt vào vùng nhớ thì ko nhất thiết phải liền kề nhau
4.4. Phân đoạn trong quản lý vùng nhớ (2)
15

0 Đoạn 1
1
2 Đoạn 0
3
4
5 Đoạn 2
Vùng nhớ
4.4. Phân đoạn trong quản lý vùng nhớ (3)
16
Bảng đoạn: Vùng nhớ vật lý:
0
Số đoạn Độ dài đoạn Đ/c đầu đoạn 90
Đoạn 2
0 600 220 190
1 14 3300 220
2 100 90 Đoạn 0
820
3 500 1300
1300
4 50 1950 Đoạn 3
1800
1950
2000 Đoạn 4

3300
Đoạn 1
4.4. Phân đoạn trong quản lý vùng nhớ (4)
17

Đ/c logic và đ/c vật lý trong phân đoạn:


 Đ/c logic: <s,d> (s: số đoạn; d: độ lệch)
 Đ/c vật lý:

s d
2n 2m
l l>d
l,d
l < d: sai số

s
l đ đ+d
đ/c vật lý

l: độ dài đoạn
đ: đ/c đầu đoạn
4.4. Phân đoạn trong quản lý vùng nhớ (5)
18

Quy tắc:
 Từ phần 2n trong đ/c logic (chỉ số đoạn) truy nhập vào bảng đoạn
để tìm độ dài đoạn và đ/c đầu đoạn
 Lấy độ dài đoạn so sánh với độ lệch. Nếu độ dài đoạn nhỏ hơn độ
lệch thì ko nạp được, sai số. Ngược lại thì:
đ/c vật lý = đ/c đầu đoạn + độ lệch
4.4. Phân đoạn trong quản lý vùng nhớ (6)
19
Cho bảng đoạn: => Vùng nhớ vật lý:
Số Độ dài Đ/c đầu 0
free
đoạn đoạn đoạn
90 <2,500>: l=100, d=500; l<d =>
0 600 220 Đoạn 2 ko nạp được
190
1 14 3300
220 <0,430>: l=600, d=430; l>d =>
2 100 90 Đoạn 0 đ/c vật lý= 220+430=650
3 500 1300 820
4 50 1950 1300 <3,400>: l=500, d=400; l>d =>
Đoạn 3 đ/c vật lý=1300+400=1700
1800
Tính đ/c vật lý của 1950 <4,112>: l=50, d=112; l<d =>
Các đ/c logic sau: Đoạn 4 Ko nạp được (sai số)
2000
<0,430>;<1,10>; 3300 <1,10>: l=14, d=10; l>d =>
<2,500>;<3,400>; đ/c vật lý=3300+10=3310
Đoạn 1
<4,112>
20 4.5. Vùng nhớ ảo
 Khái niệm
 Bảng trang và bit V
 Trang yêu cầu
 Các thuật toán thay thế trang
21 4.5. Vùng nhớ ảo (2)
 Khái niệm: Là kỹ thuật dùng BN phụ lưu trữ ctr và các
phần của ctr được chuyển vào – ra giữa BNC & BNP để
cho phép xl 1 tt mà ko cần nạp toàn bộ vào BN vật lý
 Ưu điểm: ctr có thể lớn hơn bộ nhớ vật lý
 Nhược điểm: ko dễ cài đặt, có thể giảm năng lực nếu thiếu thận
trọng.
 Có thể cài đặt BN ảo qua kỹ thuật phân trang theo y/c
hoặc phân đoạn theo y/c. Tuy nhiên giải thuật thay thế
đoạn thường phức tạp hơn thay thế trang do các đoạn
có kích thước thay đổi
22 Phân trang theo y/c

Chuyển bộ nhớ được phân trang


tới không gian đĩa liên tục
23 4.5. Vùng nhớ ảo (3)
 Cài đặt BN ảo dùng kỹ thuật phân trang theo y/c:
Bảng trang và bit V
• 1 tt được chia thành các trang thường trú trên BNP, 1
trang chỉ được nạp vào BNC khi có y/c.
• Vùng không gian đĩa dùng để lưu trữ tạm thời các
trang gọi là không gian swapping
• Mỗi phần tử trong bảng trang gồm 2 trường: 1 trường
chứa số hiệu khung trang, trường kia chứa bít “kiểm
tra” – bít V (valid)
o Nếu bít này là 1 (valid): trang đang ở BNC
o Nếu là 0 (invalid): trang đang được lưu trên BNP hoặc ko thuộc tt
4.5. Vùng nhớ ảo (4)
0
24
1
2
0 A 0 4 v 3
1 B 1 4 A
2 C 2 6 V 5
3 D 3 6 C
4 E 4 7
8 A B
5 F 5 9 v
9 F
6 G 6
10 C D E
7 H 7
11
12 F G H
Logical Bảng trang
Memory 13
14
15
Bảng trang với 1 số trang trên BNP
BN vật lý
25 Các bước quản lý lỗi trang

-Kiểm tra bảng trang để xác định


tham chiếu là truy xuất bộ nhớ
valid hay invalid
- Nếu tham chiếu là invalid
->kết thúc quá trình. Nếu là valid
nhưng chưa mang trang đó vào bộ
nhớ -> mang trang đó vào.
-Tìm khung trống
- Lập thời biểu thao tác đĩa để đọc
trang mong muốn vào khung trang
vừa được cấp phát
-Sửa đổi bảng trang thành valid
(trang đang ở trong bộ nhớ)
-Khởi động lại chỉ thị mà nó bị ngắt
bởi trap địa chỉ không hợp lệ.
26 4.5. Vùng nhớ ảo (5)
 Lỗi trang:Truy xuất đến 1 trang được đánh dấu
Invalid sẽ làm phát sinh lỗi trang (Page Fault)
 Thay thế trang: Nếu ko có khung trang trống thì mỗi
khi xảy ra lỗi trang cần phải th/h 2 thao tác chuyển
trang:
 Chuyển 1 trang ra BNP & nạp 1 trang khác vào BNC
 Có thể giảm bớt số lần chuyển trang bằng cách sử dụng thêm
1 bít “cập nhật” (dirty bit), được phần cứng đặt là 1 nếu ND
trang có bị sửa. Khi cần thay thế 1 trang, nếu bit này là 1 thì
trang này cần được lưu lại trên đĩa, nếu là 0 nghĩa là trang ko
bị thay đổi =>ko cần lưu trữ trang trở lại đĩa
27 Thay thế trang
- Tìm vị trí trang mong muốn trên đĩa
- Tìm khung trang trống
+Nếu có khung trống, dùng nó.
+Nếu không có khung trống, dùng
một giải thuật thay thế trang để chọn
khung “nạn nhân”
+Viết trang “nạn nhân” tới đĩa; thay
đổi bảng trang và khung trang tương
ứng.
- Đọc trang mong muốn vào khung trang
trống; thay đổi bảng trang và khung trang.
- Khởi động lại quá trình.
28 4.5. Vùng nhớ ảo (6)
Các thuật toán thay thế trang:
 Thuật toán FIFO: trang nạp trước thì ra trước, trang
thay có mặt rồi thì giữ nguyên
 VD: cho chuỗi truy nhập:
2 3 2 1 5 2 4 5 3 2 5 2
Tính lỗi trang với 3 khung trang
2 3 2 1 5 2 4 5 3 2 5 2
2 2 2 5 5 5 3 3 3
3 3 3 2 2 2 5 5
1 1 1 4 4 4 2

Kết quả: có 6 trang lỗi


29 4.5. Vùng nhớ ảo (7)
Các thuật toán thay thế trang:
 Thuật toán LRU (Least Recently Used): thay trang đã
lâu ko sử dụng
 VD: cho chuỗi truy nhập:
2 3 2 1 5 2 4 5 3 2 5 2
Tính lỗi trang với 3 khung trang
2 3 2 1 5 2 4 5 3 2 5 2
2 2 2 2 2 3 3
3 3 5 5 5 5
1 1 4 4 2

Kết quả: có 4 trang lỗi


30 4.5. Vùng nhớ ảo (8)
Các thuật toán thay thế trang:
 Thuật toán OPT (Optimal – tối ưu): trang nào sẽ lâu ko
sử dụng thì thay
 VD: cho chuỗi truy nhập:
2 3 2 1 5 2 4 5 3 2 5 2
Tính lỗi trang với 3 khung trang
2 3 2 1 5 2 4 5 3 2 5 2
2 2 2 2 4 4
3 3 3 3 2
1 5 5 5

Kết quả: có 3 trang lỗi

You might also like