HỆ ĐIỀU HÀNH Quản lý bộ nhớ
Trang 1HE DIEU HAHH
Quản lý bộ nhớ
Trang 2— Co ché phan trang (paging)
— Co ché phan doan (segmentation)
Trang 3
-9.2-Vì sao phải quản lý bộ nhớ
e Quản lý bộ nhớ giúp tôi ưu hóa hoạt động của bộ nhớ
+> Tdi ưu hóa số tiễn trình cùng lúc ở trong bộ nhớ chính > nang
cao tính đa chương
> Tan dung tôi đa bộ nhớ của máy tính
Trang 4
-9.3-Bộ 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 (chi thị máy) + dữ liệu
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
MOV AX, tệ MOV BX, 20:
ADD AX, AX, BX 12
Trang 5— Các trình biên dịch (compiler) tạo ra mã lệnh chương trình mà trong
đó mọi tham chiếu bộ nhớ đều là địa chỉ luận lý
a Pia chi tuong déi (relative address) la mét kiểu địa chỉ luận lý
trong đó các dia chi đượ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)
na 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 6
-9.5-Nạp chương trình vào bộ nhớ
na Bộ linker: kết hợp các object module thành một file nhị phân khả
thuc thi goi la /oad module
na Bộ loader: nạp load module vào bộ nhớ chính
Object
module 1
system Library
Trang 7
L+M-1 L+M \L+M+N-1
Trang 8-9./-Chuyển đổi địa chỉ nhớ
na 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
na Biểu diễn địa chỉ nhớ
— Trong source code: symbolic (các biến, hằng, pointer, )
— Thời điểm Ø/ên đích: là địa chỉ khả tái định vị (relocatable address),
hay là địa chỉ tương đối (relative address)
“ Ví dụ: a ở vị trí 14 bytes so với phần header của module
— Thời điểm /íng⁄oading: là địa chỉ tuyệt đối Ví dụ: dữ liệu nằm tại
địa chỉ bộ nhớ thực: 2030
Trang 9-9.8-Chuyển đổi địa chỉ
Q Đị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 gan
địa chỉ vật lý lúc biên dịch
“Ví dụ: chương trình COM của MS-DOS, phát biểu assemply
= Khuyét điểm: phải biên dịch lại nếu thay đổi địa chỉ
— Load tíne: 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 10
-9.9-Chuyển đổi địa chỉ vào thời điểm thực
at
— Execution time: qua trình chuyển đổi
được trì hoãn đến thời điểm thực thi
(run time)
"Trong quá trình thực thi, process có thể được di chuyển từ segmentnày sọ sang segment khac trong bộ nhớ
= CPU tao ra cac dia chi tudng doi JMP 400
segmentation
Relative (relocatable) addresses
Trang 11
-9.10-Dynamic linking
a Quá trình link một số /ođư/e ngoâi (external module) được thực
hiện sau khi đã tạo xong load module (¡.e file có thể thực thi)
— Ví dụ: trong Windows, module ngoai la cac file DLL; con trong Unix,
cac module ngoai la cac file so (Shared library)
Load module chi chtia 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)
— HRun 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é diéu hanh chiu trach nhiém tim cac external module va két
noi vao load module (kiém tra xem external module da nap vao
bộ nhớ chưa)
Trang 12
-9.11-Ưu điểm của dynamic linking
a 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 lại
a Chia sé ma (code sharing): mét external module chi can nap vao
bộ nhớ một lần Các process cần dùng external module nay thi
cùng chia sẻ đoạn mã của external module — tiết kiệm không
gian nhớ và đĩa
a Dynamic linking can sy h6 tro của OS trong việc kiểm tra xem
một thủ tục nào đó có thể được chia sẻ giữa các process hay là
phân mã của riêng một process ( bởi vì chỉ có OS mới có quyền
thực hiện việc kiểm tra này)
Trang 13
-9.12-Dynamic loading
na CØcñẽ: chỉ khi nào được gọi đến thì một thủ tục mới được nạp
vào bộ nhớ chính = tăng độ hiệu dụng của bộ nhớ (memory
utilization) bởi vì các thủ tục ít được dùng sẽ không chiếm chỗ trong bộ nhớ
a Rất hiệu quả trong trường hợp tồn tại khối lượng lớn mã chương trình không được sử dụng thường xuyên (ví dụ các thủ tục xử lý lỗi)
a 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
— 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 14
-9.13-Cơ chế overlay
a Tai mdi 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
na 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 đó
a Co ché nay đượ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ệ
điều hành
Trang 16
-9.15-Cơ chế swapping
na 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 đó,
Drocess có thể được nạp lại vào bộ nhớ để tiếp tục
quá trình thực thị
— Round-robin: swap-out A, swap-in B, thuc 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
chô cho process có độ ưu tiên cao hơn được nạp vào bộ
Trang 17-9.16-Minh họa cơ chế swapping
Trang 18-9.17-Mô hình quản lý bộ nhớ thực
na 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
ña 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)
a 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)
— Phan chia dong (dynamic partitioning)
— Phân trang don gian (simple paging)
— Phan doan don gian (simple segmentation)
Trang 19
-9.18-Phan manh (fragmentation)
a Phan manh ngoai (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
tục — phai dung co ché két Ahd/ (compaction)
Q Phan manh 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 cau 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 20
OS sé cap phat han kh6i 18.464 bytes cho yêu cầu
cua process => du ra 2 bytes khéng dung!
Trang 21
-9.20-Fixed partitioning
Chia b6 nhé chinh thanh 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
partition thi cé thé nap vao
partition do
Nếu chương trình có kích thước
lớn hơn partition thì phải dùng
Operating System 8M
Trang 22-9.21-Chiến lược placement
a Partition có kích thước bằng nhau
— Con mot partition trong => process System
— Khong con partition trống nhưng ÄL TT] >
trong đó có process đang bị blocke -LIIITTTI>
=> swap process do ra bo nho phu soo nhuGng cho cho process mdi
Q Partition co kich thudc khong bang New ——
Processes
nhau
— Gan mdi process vao partition nhd
— Có hàng đợi cho mỗi partition
— Giảm thiểu phân mảnh nội
Trang 23-9.22-Chiến lược placement (tt)
n1 Partition có kích thước không Operating
bang nhau System
— Chỉ có một hàng đợi chung cho các partition
— Khi cân nạp một process vào
Trang 25-9.24-Chiến lược placement
compaction (time consuming) Last 18K >
a Cac chién lugc placement block (14K)
— Best-fit chon khdi nhé trong ek sk
Trang 26-9.25-Phân trang (paging)
Hệ điều hành phải thiết lập một øảng phân trang (page table) để
anh xa dia chi ao, 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
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
khắc phục được phân mảnh ngoại
Trang 27
-9.26-Cơ chế phân trang
Process A page table Process C
Trang 28-9.27-Mô hình chuyển đổi địa chỉ
na Đị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
trang Mỗi mục trong bảng phân trang chứa địa chỉ cơ sở (hay chỉ số frame) của trang tương ứng trong bộ nhớ thực
— Page offsef (đ) - được kết hợp với địa chỉ cơ sở (base address)
để định vị một địa chỉ thực
na 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
page number page offset
Trang 29
-9.28-Paging hardware
logical
address
f (/-n bits) d (n bits)
Trang 30
-9.29-Chuyển đổi bộ nhớ với paging
16-bit logical address
16-bit physical address
Trang 31
-9.30-Hiện thực bang phan trang
na 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ớ)
— 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)
hoac trans/ation look-aside buffers (TLBs)
Trang 32-9.31-Associative register (hardware)
a Thanh ghi két hop (associative register): nd tro tim kiếm truy xuất dữ
liệu đông thời với tốc độ cực nhanh
bang phan trang
Khi TLB bị đầy, thay
thế bằng LRU
Anh xa dia chi ao (A’, A”)
Nếu A' nằm trong TLB (hit) — lấy ngay được chỉ số frame > tiết kiệm được
~ 10% thdi gian tìm kiếm
Ngược lại (miss), phải tìm chỉ số frame từ bảng phân trang như bình thường
Trang 33
vv
Trang 34
-9.33-Bảo vệ bộ nhớ
na Việc bảo vệ bộ nhớ được hiện thực bằng cách gắn với frame các Ø/⁄
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
a Ngoai ra, con c6 mét valid-invalid bit gan véi mdi muc trong bang
phan 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ệ
— “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 35
-9.34-Bảo vệ bằng valid-invalid bit
page 7 7 |QO] 1 9 | pages
$ Mỗi trang nhớ có kích thước 2KB = 2048 bytes page n
% Process có kích thước 10,468bytes = phan mảnh nội ở page 5
= cac dia chi > 12287 la cac dia chi invalid
% Dung PTLR dé kiém tra kich thudc bang phan trang
Trang 36
-9.35-Hierarchical page table
Một giải pháp được đặt ra là chia thành nhiều bảng phân trang quản
lý các vùng không gian bộ nhớ ảo khác nhau — bang đa mức
(multilevel paging table)
Cơ chế tạo bảng phân trang 2-mức (two-level page table), hay còn được gọi là forward-mapped page table trong hệ thống Intel
Pentium®-I
Trang 37
-9.36-Mô hình bảng 2-mức (two-level)
O
929
page table
memory
Trang 38
-98.3/-Phâ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
= Néu mdi muc 4 byte page # offset
— Page offset: 12 bit
— 10-bit page number page number _ page offset
Vì vậy, một địa luận lý sẽ biểu diễn như hình vẽ
— p;: chỉ mục của bảng ngoai (outer page table)-muc 1
— p›: độ dời (displacement) ở trong trang mức 2 (xác định bởi *p;)
Trang 39
-9.38-Sơ đồ ánh xạ địa chỉ
na 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ỉ
logical address
Pf
page of page table
Trang 40-9.39-Phan trang da muc (multilevel)
na 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 =
23 (294/212 = 25“) — quá lớn Thực hiện tương tự mô hình 2 mức,
- Hệ thống SPARC 32-bit hỗ trợ cơ chế 3-mức còn các hệ thống
Motorolla 68030 32 bit hô trợ cơ chê 4-mức Hệ thông 64bit
UltraSPARC thì dùng bang phân trang 7-mức
— Hiệu suất của hệ thống phân trang đa mức?
Trang 41
-9.40-Bang bam (hashed page table)
a 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ỉ
a Để 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
(virtual page number) và chỉ số frame tương ứng
— Chỉ số trang ảo được biến đổi qua hàm băm thanh mot 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
na 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