– Các trình biên dịch compiler tao ra mã lệnh chương trình mà trong ị p ï ä g g đó mọi tham chiếu bộ nhớ đều là địa chỉ luận lý Địa chỉ tương đối ị g relative address là một kiểu địa
Trang 1HỆ ĐIỀU HÀHH
Quản lý bộ nhớ
Trang 2Quản lý bộ nhớ
Các kiểu địa chỉ nhớ
Chuyển đổi địa chỉ nhớ
Overlay và swapping
Mô hình quản lý bộ nhớ đơn giản
– Fixed partitioning
– Dynamic partitioning
Cơ chế phân trang (paging)
– Cơ che phan trang (paging)
– Cơ chế phân đoạn (segmentation)
Trang 3Vì sao phải quản lý bộ nhớ
Một chương trình muốn chạy thì phải được nạp vào
Quản lý bộ nhớ giúp tối ưu hóa hoạt động của bộ nhớ
Tối ưu hóa số tiến trình cùng lúc ở trong bộ nhớ chính nâng cao tính đa chươngg
Tận dụng tối đa bộ nhớ của máy tính
Trang 4Bộ nhớ
Là một dãy các ô nhớ liên tục nhau
Mỗi ô nhớ (một word) có một địa chỉ
Chương trình = tập các câu lệnh (chỉ thị máy) + dữ liệug ập ệ ( ị y) ệ
Nạp chương trình vào bộ nhớ đặt các chỉ thị và dữ liệu vào các ô nhớ xác định ánh xạ giữa các chỉ thị, dữ liệu vào địa chỉ trong bộ nhớ
0
4 MOV AX, 10
8
12
MOV BX, 20 ADD AX, AX, BX
16
Trang 5Các kiểu địa chỉ nhớ
Địa chỉ vật lý (physical address) (địa chỉ thực, địa chỉ tuyệt đối) là một vị trí thực trong bộ nhớ chính
Địa chỉ luận lý (logical address) là một vị trí nhớ độc lập với cấu trúc, tổ chức vật lý của bộ nhớ
– Các trình biên dịch (compiler) tao ra mã lệnh chương trình mà trong ị ( p ) ï ä g g đó mọi tham chiếu bộ nhớ đều là địa chỉ luận lý
Địa chỉ tương đối ị g (relative address) là một kiểu địa chỉ luận lý ( ) ä ị ä y
trong đó các địa chỉ được biểu diễn tương đối so với một điểm xác định nào đó trong chương trình (ví dụ: 12 byte so với điểm bắt đầu chương trình)
Khi một lệnh được thực thi, các tham chiếu đến địa chỉ luận lý phải được chuyển đổi thành địa chỉ thực Thao tác chuyển đổi
này thường có sự hỗ trợ của phần cứng để đạt hiệu suất cao
Trang 6Nạp chương trình vào bộ nhớ
Bộ linker: kết hợp các object module thành một file nhị phân khả thực thi gọi là load module.
Bộ loader: nap load module vào bộ nhớ chính
Bộ loader: nạp load module vao bộ nhơ chính
System Library y static linking
Trang 7Cơ chế thực hiện linking
Module A
CALL B L th L
0 Module A
JMP “L”
Relocatable object modules
L+M-1 L+M M-1
0
Return
Length N
Return L+M+N-1
N-1
N 1
Trang 8Chuyển đổi địa chỉ nhớ
Chuyển đổi địa chỉ là quá trình ánh xạ một địa chỉ từ không gian địa chỉ này sang không gian địa chỉ khác
Biểu diễn địa chỉ nhớ
Bieu dien địa chỉ nhơ
– Trong source code: symbolic (các biến, hằng, pointer, )
– Thời điểm biên dịch: là địa chỉ khả tái định vị (relocatable address), hay là địa chỉ tương đối (relative address) y ị g ( )
Ví dụ: a ở vị trí 14 bytes so với phần header của module.
– Thời điểm linking/loading: là địa chỉ tuyệt đối Ví dụ: dữ liệu nằm tại địa chỉ bộ nhớ thực: 2030
Trang 9Chuyển đổi địa chỉ
Địa chỉ của lệnh (instruction) và dữ liệu (data) được chuyển đổi thành địa chỉ vật lý, việc này có thể xảy ra tại ba thời điểm khác nhau
– Compile time: nếu biết trước địa chỉ bộ nhớ thì có thể kết gán địa chỉ vật lý lúc biên dịch
Ví du: chương trình COM của MS DOS phát biểu assemply
Ví dụ: chương trình COM cua MS-DOS, phat bieu assemply
Khuyết điểm: phải biên dịch lại nếu thay đổi địa chỉ
– Load time: tại thời điểm biên dịch, nếu không biết địa chỉ thực thì vào thời điểm loading, phải chuyển đổi địa chỉ khả tái định
vị (relocatable) theo một địa chỉ nền (base address).ị ( ) ä ị ( )
Địa chỉ thực được tính toán lại vào thời điểm chương trình thực thi
phải tiến hành reload nếu địa chỉ base thay đổi.
Trang 10Chuyển đổi địa chỉ vào thời điểm thực thi
– Execution time: quá trình chuyển đổi
được trì hoãn đến thời điểm thực thi
(run time)
Relative (relocatable) addresses
Trong quá trình thực thi, process có
thể được di chuyển từ segment này
sang segment khác trong bộ nhớ.
CPU tao ra các địa chỉ tương đối
0
JMP 400
CPU tạo ra cac địa chỉ tương đoi
cho process
Cần sự hỗ trợ của phần cứng cho
việc ánh xạ địa chỉ (ví dụ có thanh
hi b ø li it )
JMP 400
LOAD 1200
400
ghi base va limit, )
Sử dụng trong đa số các OS đa
dụng (general-purpose) trong đó có
các cơ chế swapping, paging, pp g, p g g, 1200
Trang 11 Load module chỉ chứa các tham chiếu (reference) đến các ( )
external module Các tham chiếu này có thể được chuyển đổi vào hai thời điểm sau:
– Loading time (load-time dynamic linking)
– Run time: khi có một lời gọi đến thủ tục được định nghĩa trong
external module (run-time dynamic linking)
Hệ điều hành chịu trách nhiệm tìm các external module và kết nối vào load module (kiểm tra xem external module đã nạp vào bộ nhớ chưa)
Trang 12Ưu điểm của dynamic linking
Thông thường, external module là một thư viện cung cấp các tiện ích của OS Các chương trình thực thi có thể dùng các phiên bản khác nhau của external module mà không cần sửa đổi, biên dịch g , ịlại
Chia sẻ mã (code sharing): một external module chỉ cần nap vào
Chia se ma (code sharing): một external module chỉ can nạp vao bộ nhớ một lần Các process cần dùng external module này thì cùng chia sẻ đoạn mã của external module tiết kiệm không gian nhớ và đĩa
Trang 13 Không cần sự hỗ trợ đặc biệt của hệ điều hành
– Thông thường, user chịu trách nhiệm thiết kế và hiện thực các
chương trình có dynamic-loading g y g
– Hệ điều hành chủ yếu cung cấp một số thủ tục thư viện hỗ trợ, tạo điều kiện dễ dàng hơn cho lập trình viên
Trang 14Cơ chế overlay
Tại mỗi thời điểm, chỉ giữ lại trong bộ nhớ những lệnh hoặc dữ liệu cần thiết, giải phóng các lệnh/dữ liệu chưa hoặc không cần dùng đến.g
Cơ chế này rất hữu dụng khi kích thước một process lớn hơn
không gian bộ nhớ cấp cho process đó.g g ä p p
Cơ chế này được điều khiển bởi người sử dụng (thông qua sự hỗ trơ của các thư viện lập trình) chứ không cần sư hỗ trơ của hệtrợ cua cac thư viện lập trình) chư khong can sự ho trợ cua hệ điều hành
Trang 15Cô cheá overlay (tt)
Trang 16Cơ chế swapping
Một process có thể tạm thời bị swap ra khỏi bộ nhớ
chính và lưu trên một hệ thống lưu trữ phụ Sau đó,
process có thể đươc nap lai vào bộ nhớ để tiếp tuc
process co the được nạp lại vao bộ nhơ đe tiep tục
quá trình thực thi
– Round-robin: swap-out A, swap-in B, thực thi C
– Roll out, roll in – dùng trong cơ chế định thời theo độ ưu tiên (priority-based scheduling)
Process có độ ưu tiên thấp hơn sẽ bị swap-out nhường ä p ị p gchỗ cho process có độ ưu tiên cao hơn được nạp vào bộ nhớ để thực thi
– Medium-term scheduler
Trang 17Minh họa cơ chế swapping
Trang 18Mô hình quản lý bộ nhớ thực
Trong chương này, mô hình quản lý bộ nhớ là một mô hình đơn giản, không có bộ nhớ ảo
Một process phải được nạp hoàn toàn vào bộ nhớ thì mới được thực thi (ngoại trừ việc sử dụng cơ chế overlay)
Các cơ chế quản lý bộ nhớ thực sau đây rất ít (hầu như không còn) được dùng trong các hệ thống hiện đại, tuy nhiên đó là các
ý tưởng cơ sở cho mô hình quản lý bộ nhớ ảo sau này:
– Phân chia cố định (fixed partitioning)
– Phân chia động (dynamic partitioning)
– Phân trang đơn giản (simple paging) Phan trang đơn gian (simple paging)
– Phân đoạn đơn giản (simple segmentation)
Trang 19Phân mảnh (fragmentation)
Phân mảnh ngoại (external fragmentation)
– Kích thước không gian bộ nhớ còn trống đủ để thỏa mãn một yêu cầu cấp phát tuy nhiên không gian nhớ này không liên
yeu cau cap phat, tuy nhien khong gian nhơ nay khong lien tục phải dùng cơ chế kết khối (compaction)
Phân mảnh nội (internal fragmentation)
– Kích thước vùng nhớ được cấp phát hơi lớn hơn vùng nhớ yêu cầu Ví dụ: cấp một khoảng trống 18.464 bytes cho một
process yêu cầu 18.462 bytes
– Hiện tượng phân mảnh nội thường xảy ra khi bộ nhớ thực
(physical memory) được chia thành các khối kích thước cố
định(fixed-sized block) và các process được cấp phát theo đơn vị khối Ví dụ: cơ chế phân trang (paging)
Trang 20Phân mảnh nội
operating system
yêu cầu kế tiếp là 18.462 bytes!!!
y (used)
Trang 21Fixed partitioning
Chia bộ nhớ chính thành nhiều
phần không trùng lấp gọi là các
partition có kích thước bằng
nhau hoặc khác nhau
Process nào có kích thước nhỏ
hơn hoặc bằng kích thước ë g
partition thì có thể nạp vào
partition đó
Nếu chương trình có kích thước g
lớn hơn partition thì phải dùng
cơ chế overlay
Nhận xét
– Không hiệu quả do bị phân
mảnh nội: một chương trình dù g
lớn hay nhỏ đều chiếm trọn một
Trang 22Chiến lược placement
Partition có kích thước bằng nhau
– Còn một partition trống process
mới được nạp vào partition đó ï ïp p
– Không còn partition trống nhưng
trong đó có process đang bị blocked
swap process đó ra bộ nhớ phụ
nhường chỗ cho process mới.
Partition có kích thước không bằng
nhau
– Gán mỗi process vào partition nhỏ
nhất phù hợp với nó
– Có hàng đợi cho mỗi partition
Giảm thiểu phân mảnh nội
– Giam thieu phan manh nội
– Vấn đề: có thể có một số hàng đợi
Trang 23Chiến lược placement (tt)
Partition có kích thước không
bằng nhau
– Chỉ có một hàng đơi chung ä g ï g
cho các partition
– Khi cần nạp một process vào
bộ nhớ chính chọn
i i h û h á ø á partition nhỏ nhất còn trống
Trang 25Chiến lược placement
Dùng để quyết định cấp phát
khối bộ nhớ trống nào cho
một process
Mục tiêu: giảm thiểu chi phí
compaction (time consuming)
Các chiến lươc placementCac c e ược p ace e
– Best-fit: chọn khối nhớ trống
nhỏ nhất
– First-fit: chọn khối nhớ trống g
phù hợp đầu tiên kể từ đầu
bộ nhớ
– Next-fit: chọn khối nhớ trống
h ø hơ đ à ti â k å từ ị t í
phu hợp đau tien ke tư vị trí
cấp phát cuối cùng
– Worst fit: chọn khối nhớ
trống lớn nhất
trong lơn nhat
Trang 26Phân trang (paging)
Cơ chế phân trang cho phép không gian địa chỉ thực (physical address space) của một process có thể không liên tục nhau
Bộ nhớ thưc đươc chia thành các khối kích thước cố định bằng
Bộ nhơ thực được chia thanh cac khoi kích thươc co định bang nhau gọi là frame
– Thông thường kích thước của frame là lũy thừa của 2, từ khoảng 512 byte đến 16MB y
Bộ nhớ luận lý (logical memory) cũng được chia thành khối cùng kích thước gọi là trang nhớ (page)
Hệ điều hành phải thiết lập một bảng phân trang (page table) để
Hệ đieu hanh phai thiet lập một bang phan trang (page table) đe ánh xạ địa chỉ ảo, luận lý thành địa chỉ thực
– Mỗi process có một bảng phân trang được quản lý bằng một con trỏ lưu giữ trong PCB Công việc nạp bảng phân trang vào hệ thống (do g g g g g g CPU dispatcher thực hiện) là một phần của chuyển ngữ cảnh
Cơ chế phân trang khiến bộ nhớ bị phân mảnh nội, tuy nhiên lại
Trang 27Cô cheá phaân trang
frame number
page 0
page 1
1 0
page 0
number
0 1 page 1
page 2
page 3
4 3 5
1 2
2 3 page 3
logical memory
5 3 page table 4 page 1
5 page 3
Trang 28Mô hình chuyển đổi địa chỉ
Địa chỉ nhớ do CPU tạo ra (logical address) gồm có:
– Page number (p) – được dùng làm chỉ mục trong bảng phân
Nếu kích thước của không gian địa chỉ ảo là 2m, kích
thước của trang là 2n
thươc cua trang la 2n
d
page number page offset
m-n bits n bits
Trang 29Paging hardware
logical
physical address
Nếu kích thước của không
gian nhớ thực là 2l bytes,
thì mỗi mục của bảng phân
page table
p y memory
trang có l-n bits f (l-n bits) d (n bits)
Trang 30Chuyển đổi bộ nhớ với paging
Trang 31Hiện thực bảng phân trang
Bảng phân trang được lưu giữ trong bộ nhớ chính (kernel memory)
– Mỗi process có một bảng phân trang
– Thanh ghi page-table base (PTBR) trỏ đến bảng phân trang
– Thanh ghi page-table length (PTLR) biểu thi kích thước của bảng
phân trang (và dùng để bảo vệ bộ nhớ)
Mỗi tác vu truy cập dữ liệu/lệnh cần hai thao tác truy xuất
Moi tac vụ truy cập dư liệu/lệnh can hai thao tac truy xuat vùng nhớ
– Một thao tác truy xuất bảng phân trang (page number: p) và một thao tác truy xuất dữ liệu/lệnh (page offset: d displacement)
– Thường dùng một bộ phận cache phần cứng có tốc độ truy xuất và tìm kiếm cao, gọi là thanh ghi kết hợp (associative register) hoặc translation look aside buffers (TLBs)
hoặc translation look-aside buffers (TLBs)
Trang 32Associative register (hardware)
Thanh ghi kết hợp (associative register): hỗ trợ tìm kiếm truy xuất dữ liệu đồng thời với tốc độ cực nhanh
khoảng 8 2048 TLB là “cache” của
Khi có chuyển ngữ cảnh TLB bị xóa
TLB la cache cua bảng phân trang
canh, TLB bị xoa
Khi TLB bị đầy, thay thế bằng LRU
Ánh xạ địa chỉ ảo (A’, A’’)
–Nếu A’ nằm trong TLB (hit) lấy ngay được chỉ số frame tiết kiệm được
Trang 33Paging hardware với TLB
Trang 34Bảo vệ bộ nhớ
Việc bảo vệ bộ nhớ được hiện thực bằng cách gắn với frame các bit bảo vệ (protection bits) Các bit này biểu thị các thuộc tính sau
– read-only, read-write, execute-only
Ngoài ra, còn có một valid-invalid bit gắn với mỗi muc trong bảng
Ngoai ra, con co một valid invalid bit gan vơi moi mục trong bang
phân trang
– “valid”: cho biết là trang bộ nhớ tương ứng nằm trong không gian nhớ địa chỉ ảo của process do đó là một trang hơp lệ
chỉ ao cua process, do đo la một trang hợp lệ.
– “invalid”: cho biết là trang bộ nhớ tương ứng không nằm trong không gian nhớ địa chỉ ảo của process, do đó là một trang bất hợp lệ.
Trang 35Bảo vệ bằng valid-invalid bit
page 0 00000
frame number valid-invalid bit
0
0 1
2 page 0 page 2
page 3
3 v
4 v7
1 2 3
2 page 0
3 page 1
4 page 2 5
10468
page 4
page 5 12287
7 v
8 v
9 v
3 4 5
5 6
7 page 3 page 6
8
0 i
0 i
6 7 page 7
8 page 4
9 page 5
Mỗi trang nhớ có kích thước 2KB = 2048 bytes
Process có kích thước 10,468bytes phân mảnh nội ở page 5
các địa chỉ > 12287 là các địa chỉ invalid
page n
cac địa chỉ > 12287 la cac địa chỉ invalid.
Dùng PTLR để kiểm tra kích thước bảng phân trang
Trang 36Hierarchical page table
Các hệ thống hiện đại đều hỗ trợ không gian địa chỉ ảo rất lớn (232
đến 264)
Kích thước trang nhớ là 4KB ( 2 12 ) bảng phân trang sẽ có 2 32 /2 12
– Kích thươc trang nhơ la 4KB (= 2 12 ) bang phan trang se co ~ 2 32 /2 12 =
(multilevel paging table)
Cơ chế tạo bảng phân trang 2-mức (two-level page table), hay còn
Trang 37Mô hình bảng 2-mức (two-level)
Trang 38Phân trang 2-mức
Một địa chỉ luận lý (trên hệ thống 32-bit với trang nhớ 4KB) được
chia thành các phần sau:
– Page number: 20 bit age u be 0 b t
Nếu mỗi mục 4 byte
2 20 * 4 byte = 4 MB – Page offset: 12 bit
20 bit
page # offset
12 bit Page offset: 12 bit
Bảng phân trang cũng bị chia nhỏ nên page number cũng được chia nhỏ thành 2 phần:
– 10-bit page number
page number page offset
Trang 39Sơ đồ ánh xạ địa chỉ
Sơ đồ ánh xạ địa chỉ (address-translation scheme) cho kiến trúc
bảng phân trang 2 mức, 32-bit địa chỉ
A Memory Address: A
Trang 40Phân trang đa mức (multilevel)
Không gian địa chỉ luận lý 64-bit với trang nhớ 4KB
– Trong sơ đồ phân trang 2-mức, số mục của bảng phân trang =
252 (264/212 = 252) quá lớn Thực hiện tương tự mô hình 2 mức,
h â hi th ø h b û 3 4 ứphân chia thành bảng 3, 4, , n-mức
page number page offset
Trang 41Bảng băm (hashed page table)
Dùng bảng băm để giảm bớt không gian bảng phân trang, tăng tốc độ tìm kiếm trang
– Rất phổ biến trong các hệ thống lớn hơn 32 bit địa chỉ at p o b e t o g cac ệ t o g ơ ơ 3 b t địa c
Để giải quyết đụng độ, mỗi entry của bảng phân trang được gán một danh sách liên kết Mỗi phần tử danh sách chứa chỉ số trang ảo
danh sach lien ket Moi phan tư danh sach chưa chỉ so trang ao
(virtual page number) và chỉ số frame tương ứng
– Chỉ số trang ảo được biến đổi qua hàm băm thành một hashed value Các thông tin như chỉ số trang ảo và chỉ số frame sẽ được lưu vào danh sách liên kết tại vị trí ứng với hashed value.
Giải thuật dò tìm trang:
– Chỉ số trang ảo được biến đổi thành hashed value (với cùng hàm băm như trên) Hashed value được dùng để truy xuất đến entry tương ứng trong bảng phân trang Sau đó, dò tìm trong danh sách liên kết phần tử chứa chỉ số trang ảo để trích rút ra đươc số frame tương ứng
chưa chỉ so trang ao đe trích rut ra được so frame tương ưng.