Bài giảng Hệ điều hành nâng cao - Trần Hạnh Nhi - Bài giảng 6: Quản lý bộ nhớ
? Tổng quan
? Nhu cầu bộ nhớ của tiến trình
? Các vấn đề về bộ nhớ
? Chuyển đổi địa chỉ
? Các công đoạn
? Các mô hình chuyển đổi địa chỉ
? Vai trò Quản lý bộ nhớ của HĐH
? Các yêu cầu
? Các mô hình tổ chức bộ nhớ
? Mô hình Liên tục
? Mô hình Không liên tục
KGĐC : phân chia thành các segment
KGVL : tổ chức thành dynamic partitions
Nạp tiến trình :
Mỗi segment cần được nạp vào một partition liên tục, tự do, đủ lớn cho
segment
partition nào ? ...Dynamic Allocation !
Các segment của cùng 1 chương trình có thể được nạp vào những partition
không liên tục
12/2/2005 Trần Hạnh Nhi 42
Mô hình Segmentation
KGVL
int m;
main ()
{
F1(m);
}
F1(int x)
{ x = 9;
}
code
(main,F1)
data
(m)
stack
heap
KGDCQuản lý địa chỉ ?
12/2/2005 Trần Hạnh Nhi 43
Tổ chức Segmentation
Điạ chỉ logic :
Địa chỉ physic :
Chuyển đổi địa chỉ : Ư
Chuyển đổi địa chỉ vào thời điểm thi hành
MMU thi hành
Sử dụng Segment Table (bảng phân đoạn) để lưu thông tin cấp phát BNC, làm cơ
sở thực hiện ánh xạ địa chỉ
Mỗi tiến trình có một Segment Table
Sâegment Table:
Số phần tử của Segment Table = Số Segment của chương trình
Mỗi phần tử của Segment Table mô tả cho 1 segment, và có cấu trúc :
base: địa chỉ vật lý trong BNC của partition chứa segment
limit : kích thước segment
Lưu trữ Segment Table ?
Cache : nếu đủ nhỏ
BNC : Segment-table base register (STBR), Segment-table length register (STLR)
12/2/2005 Trần Hạnh Nhi 44
Chuyển đổi địa chỉ trong mô hình Segmentation
Logical Addr
Seg# offset
3 128
Seg table
base limit
3 0x1000 512
mem
seg
128
+ 0x1000?
yes
no
fault
0
1
2
12/2/2005 Trần Hạnh Nhi 45
Logical-to-Physical Address Translation in segmentation
12/2/2005 Trần Hạnh Nhi 46
Nhận xét Mô hình Segmentation
Cấp phát không liên tục => tận dụng bộ nhớ hiệu quả
Hỗ trợ tái định vị
Từng Segment
Hỗ trợ Bảo vệ và Chia sẻ được ở mức module
Ý nghĩa của “mức module” ?
/ Chuyển đổi địa chỉ phức tạp
☺ Đã có MMU...
/ Sử dụng dynamic partition : chịu đựng
/ Dynamic Allocation : chọn vùng nhớ để cấp cho một segment
☺ First fit, Best fit, Worst fit
/ External Fragmentation :
/ Memory Compaction : chi phí cao
12/2/2005 Trần Hạnh Nhi 47
Paging
Hỗ trợ HĐH khắc phục bài toán cấp phát bộ nhớ động, và loại bỏ
external fragmentation
Mô hình Paging :
KGĐC : phân chia chương trình thành các page có kích thước bằng nhau
Không quan tâm đến ngữ nghĩa của các đối tượng nằm trong page
KGVL : tổ chức thành các fixed partitions có kích thước bằng nhau gọi là frame
page size = frame size
Nạp tiến trình :
Mỗi page cần được nạp vào một frame tự do
Các pages của cùng 1 chương trình có thể được nạp vào những frames
không kế cận nhau.
Tiến trình kích thước N pages -> cần N frame tự do để nạp
12/2/2005 Trần Hạnh Nhi 48
Mô hình Paging
KGVL
int m;
main ()
{
F1(m);
}
F1(int x)
{ x = 9;
}
KGDC
Quản lý địa chỉ ?
int m;
main ()
F1(int x)
stack
heap
12/2/2005 Trần Hạnh Nhi 49
Tổ chức Paging
Điạ chỉ logic :
Địa chỉ physic :
Chuyển đổi địa chỉ : Ư
Chuyển đổi địa chỉ vào thời điểm thi hành
MMU thi hành
Sử dụng Page Table để lưu thông tin cấp phát BNC, làm cơ sở thực hiện ánh xạ địa
chỉ
Mỗi tiến trình có một Page Table
Page Table
Số phần tử của Page Table = Số Page trong KGĐC của chương trình
Mỗi phần tử của bảng Page Table mô tả cho 1 page, và có cấu trúc :
frame: số hiệu frame trong BNC chứa page
Lưu trữ Page Table ?
Cache : không đủ
BNC : Page-table base register (PTBR), Page-table length register (PTLR)
12/2/2005 Trần Hạnh Nhi 50
Chuyển đổi địa chỉ trong mô hình Paging
CPU
KGVL
Physical
addr
Logical
addr
p d f d
f
Page table
12/2/2005 Trần Hạnh Nhi 51
Logical-to-Physical Address Translation in Paging
12/2/2005 Trần Hạnh Nhi 52
Nhận xét Mô hình Paging
Loại bỏ
Dynamic Allocation
External Fragmentation
“Trong suốt” với LTV
Hỗ trợ Bảo vệ và Chia sẻ ở mức page
/ Internal Fragmentation
/ Lưu trữ Page Table trong bộ nhớ
/Tốn chỗ
/Tăng thời gian chuyển đổi địa chỉ
12/2/2005 Trần Hạnh Nhi 53
Lưu trữ Page Table
Giả sử hệ thống sử dụng m bit địa chỉ
Size of KGĐC = 2m
Kích thước page
Trên nguyên tắc tùy ý, thực tế chọn pagesize = 2n
Tại sao ?
Số trang trong KGĐC: #pages = 2m / 2n = 2m-n
Ví dụ : 32-bits địa chỉ, pagesize = 4K
KGĐC = 232 -> #pages= 232-212 = 220 = 1.000.000 pages !
#pages = #entry trong PT
Điạ chỉ logic :
Page Table
/ Mỗi tiến trình lưu 1 Page Table
/ Số lượng phần tử quá lớn -> Lưu BNC
/ Mỗi truy xuất địa chỉ sẽ tốn 2 lần truy xuất BNC
p d
(m-n) n
12/2/2005 Trần Hạnh Nhi 54
Lưu trữ Page Table : Tiết kiệm không gian
Sử dụng bảng trang đa cấp
Chia bảng trang thành các phần nhỏ, bản thân bảng trang
cũng sẽ được phân trang
Chỉ lưu thường trực bảng trang cấp 1, sau đó khi cần sẽ nạp
bảng trang cấp nhỏ hơn thích hợp...
Có thể loại bỏ những bảng trang chứa thông tin về miền địa
chỉ không sử dụng
Sử dụng Bảng trang nghịch đảo
Mô tả KGVL thay vì mô tả KGĐC -> 1 IPT cho toàn bộ hệ thống
Bảng trang đa cấp
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
0
1
2
3
13
0
1
2
3
4
5
6
7
8
9
10
11
12
12
13
14
15
Page Table cấp 1
Page Table cấp 2
Page Table cấp 2
Page Table cấp 2
Page Table cấp 2
12/2/2005 Trần Hạnh Nhi 56
Mô hình bảng trang 2 cấp
12/2/2005 Trần Hạnh Nhi 57
Ví dụ mô hình bảng trang 2 cấp
Một máy tính sử dụng địa chỉ 32bít với kích thước trang 4Kb.
Địa chỉ logic được chia thành 2 phần:
Số hiệu trang : 20 bits.
Offset tính từ đầu mỗi trang :12 bits.
Vì bảng trang lại được phân trang nên số hiệu trang lại được
chia làm 2 phần:
Số hiệu trang cấp 1.
Số hiệu trang cấp 2.
12/2/2005 Trần Hạnh Nhi 58
Ví dụ mô hình bảng trang 2 cấp
Vì thế, địa chỉ logic sẽ có dạng như sau:
page number page offset
pi p2 d
10 10 12
Bảng trang đa cấp 0
1
2
3
0
1
2
3
0
1
2
3
0
1
2
3
0
1
2
3
13
0
1
2
3
4
5
6
7
8
9
10
11
12
14
15
16
17
Page Table cấp 1
Page Table cấp 2
Page Table cấp 2
Page Table cấp 2
Page Table cấp 2
1 2 100
12/2/2005 Trần Hạnh Nhi 60
Bảng trang nghịch đảo (Inverted Page Table)
Sử dụng duy nhất một bảng trang nghịch đảo cho tất cả các tiến
trình
Mỗi phần tử trong bảng trang nghịch đảo mô tả một frame, có cấu
trúc
: số hiệu page mà frame đang chứa đựng
: id của tiến trình đang được sỡ hữu trang
Mỗi địa chỉ ảo khi đó là một bộ ba
Khi một tham khảo đến bộ nhớ được phát sinh, một phần địa chỉ ảo
là được đưa đến cho trình quản lý bộ nhớ để tìm phần tử
tương ứng trong bảng trang nghịch đảo, nếu tìm thấy, địa chỉ vật lý
sẽ được phát sinh
12/2/2005 Trần Hạnh Nhi 61
Kiến trúc bảng trang nghịch đảo
12/2/2005 Trần Hạnh Nhi 62
Lưu trữ Page table : Tiết kiệm thời gian
Mỗi truy cập BNC cần truy xuất BNC 2 lần :
Tra cứu Page Table để chuyển đổi địa chỉ
Tra cưu bản thân data
Làm gì để cải thiện :
Tìm cách lưu PT trong cache
Cho phép tìm kiếm nhanh
PT lớn, cache nhỏ : làm sao lưu đủ ?
Lưu 1 phần PT...
Phần nào ?
Các số hiệu trang mới truy cập gần đây nhất...
12/2/2005 Trần Hạnh Nhi 63
Translation Lookaside Buffer (TLB)
Vùng nhớ Cache trong CPU được sử dụng để lưu tạm thời
một phần của PT được gọi là Translation Lookaside Buffer
(TLB)
Cho phép tìm kiếm tốc độ cao
Kích thước giới hạn (thường không quá 64 phần tử)
Mỗi entry trong TLB chứa một số hiệu page và frame tương
ứng đang chứa page
Khi chuyển đổi địa chỉ, truy xuất TLB trước, nếu không tìm
thấy số hiệu page cần thiết, mới truy xuất vào PT để lấy
thông tin frame.
12/2/2005 Trần Hạnh Nhi 64
Translation Lookaside Buffer
12/2/2005 Trần Hạnh Nhi 65
Chuyển đổi địa chỉ với Paging
CPU p d
f d
f
d
TLB
Memory
physical address
virtual address
p f
f
PT
f
12/2/2005 Trần Hạnh Nhi 66
Sử dụng TBL
12/2/2005 Trần Hạnh Nhi 67
Bảo vệ và chia sẻ trong Segmentation và Paging
Bảo vệ
Segmentation : mỗi phần tử trong ST được gắn thêm các bit bảo
vệ
Mỗi segment có thể được bảo vệ tùy theo ngữ nghĩa của các đối tượng
bên trong segment
Paging : mỗi phần tử trong PT được gắn thêm các bit bảo vệ
Mỗi page không nhận thức được ngữ nghĩa của các đối tượng bên trong
page, nên bảo vệ chỉ áp dụng cho toàn bộ trang, không phân biệt.
Chia sẻ: Cho nhiều phần tự trong KGĐC cùng trỏ đến 1 vị
trí trong KGVL
Segmentation : chia sẻ mức module chương trình
Paging : chia sẻ các trang
Sharing Pages: A Text Editor
Sharing Pages: A Text Editor
ed 3 +
data 1
ed 3 +
data 3
ed 3 +
data 2
Chia sẻ Page 2 = Chia sẻ cả code và data !
Sharing of
Segments:
Text Editor
12/2/2005 Trần Hạnh Nhi 71
Đánh giá các mô hình chuyển đổi địa chỉ
Giả sử có:
tm : thời gian truy xuất BNC
tc : thời gian truy xuất cache
hit-ration : tỉ lệ tìm thấy một số hiệu trang p trong TLB
Công thức tính thời gian truy cập thực tế (Time Effective
Acess) đến một đối tượng trong BNC
bao gồm thời gian chuyển đổi địa chỉ và thời gian truy xuất dữ liệu
TEA = (time biding add + time acces memory)
Linker-Loader
TEA = tm
(data)
Base + Bound
TEA = (tc+ tc) + tm
(Base & Bound) (data)
Segmentation
TEA = tc + tm
(ST trong cache) (data)
Paging
Không sử dụng TLB :
TEA = tm + tm
(PT trong mem) (data)
Có sử dụng TLB :
TEA = hit-ratio ( tc + tm ) + (1- hit-ratio)( tc + tm + tm )
(TLB) (data) (TLB) (PT) (data)
File đính kèm:
Bài giảng Hệ điều hành nâng cao - Trần Hạnh Nhi - Bài giảng 6 Quản lý bộ nhớ.pdf

