Mô tả:
Chöông 7. Quaûn lyù boä nhôù
Khaùi nieäm cô sôû
Caùc kieåu ñòa chæ nhôù (physical address , logical
address)
Chuyeån ñoåi ñòa chæ nhôù
Overlay vaø swapping
Moâ hình quaûn lyù boä nhôù ñôn giaûn
‟
‟
‟
‟
‟
Fixed partitioning
Dynamic partitioning
Cô cheá phaân trang (paging)
Cô cheá phaân ñoaïn (segmentation)
Segmentation with paging
Khoa KTMT
1
Khaùi nieäm cô sôû
Chöông trình phaûi ñöôïc mang vaøo trong boä nhôù vaø ñaët
noù trong moät tieán trình ñeå ñöôïc xöû lyù
Input Queue ‟ Moät taäp hôïp cuûa nhöõng tieán trình treân ñóa
maø ñang chôø ñeå ñöôïc mang vaøo trong boä nhôù ñeå thöïc
thi.
User programs traûi qua nhieàu böôùc tröôùc khi ñöôïc xöû lyù.
Khoa KTMT
2
Khaùi nieäm cô sôû
Quaûn lyù boä nhôù laø coâng vieäc cuûa heä ñieàu haønh vôùi söï hoã
trôï cuûa phaàn cöùng nhaèm phaân phoái, saép xeáp caùc
process trong boä nhôù sao cho hieäu quaû.
Muïc tieâu caàn ñaït ñöôïc laø naïp caøng nhieàu process vaøo
boä nhôù caøng toát (gia taêng möùc ñoä ña chöông)
Trong haàu heát caùc heä thoáng, kernel seõ chieám moät phaàn
coá ñònh cuûa boä nhôù; phaàn coøn laïi phaân phoái cho caùc
process.
Caùc yeâu caàu ñoái vôùi vieäc quaûn lyù boä nhôù
‟
‟
‟
‟
‟
Caáp phaùt boä nhôù cho caùc process
Taùi ñònh vò (relocation): khi swapping,…
Baûo veä: phaûi kieåm tra truy xuaát boä nhôù coù hôïp leä khoâng
Chia seû: cho pheùp caùc process chia seû vuøng nhôù chung
Keát gaùn ñòa chæ nhôù luaän lyù cuûa user vaøo ñòa chæ thöïc
Khoa KTMT
3
Caùc kieåu ñòa chæ nhôù
Ñòa chæ vaät lyù (physical address) (ñòa chæ thöïc) laø moät vò
trí thöïc trong boä nhôù chính.
Ñòa chæ luaän lyù (logical address) laø moät vò trí nhôù ñöôïc
dieãn taû trong moät chöông trình ( coøn goïi laø ñòa chæ aûo
virtual address)
‟ Caùc trình bieân dòch (compiler) taïo ra maõ leänh chöông trình maø
trong ñoù moïi tham chieáu boä nhôù ñeàu laø ñòa chæ luaän lyù
‟ Ñòa chæ töông ñoái (relative address) (ñòa chæ khaû taùi ñònh vò,
relocatable address) laø moät kieåu ñòa chæ luaän lyù trong ñoù caùc ñòa
chæ ñöôïc bieåu dieãn töông ñoái so vôùi moät vò trí xaùc ñònh naøo ñoù
trong chöông trình.
Ví duï: 12 byte so vôùi vò trí baét ñaàu chöông trình,…
‟ Ñòa chæ tuyeät ñoái (absolute address): ñòa chæ töông ñöông vôùi ñòa
chæ thöïc.
Khoa KTMT
4
Naïp chöông trình vaøo boä nhôù
Boä linker: keát hôïp caùc object module thaønh moät file nhò
phaân khaû thöïc thi goïi laø load module.
Boä loader: naïp load module vaøo boä nhôù chính
System
library
dynamic linking
Khoa KTMT
static linking
System
library
5
Cô cheá thöïc hieän linking
0
Module A
CALL B
L1
0
Return
0
0
Module A
JMP “L”
L 1 Return
L Module B
Module B
CALL C
M1
length L
relocatable
object modules
length M
JMP “L+M”
load module
L M 1 Return
Return
LM
Module C
Module C
length N
LMN1
Return
N 1 Return
Khoa KTMT
6
Chuyeån ñoåi ñòa chæ
Chuyeån ñoåi ñòa chæ: quaù trình aùnh xaï moät ñòa chæ töø khoâng
gian ñòa chæ naøy sang khoâng gian ñòa chæ khaùc.
Bieåu dieãn ñòa chæ nhôù
‟ Trong source code: symbolic (caùc bieán, haèng, pointer,…)
‟ Thôøi ñieåm bieân dòch: thöôøng laø ñòa chæ khaû taùi ñònh vò
Ví duï: a ôû vò trí 14 bytes so vôùi vò trí baét ñaàu cuûa module.
‟ Thôøi ñieåm linking/loading: coù theå laø ñòa chæ thöïc. Ví duï: döõ lieäu
naèm taïi ñòa chæ boä nhôù thöïc 2030
int i;
goto p1;
0
2000
250
2250
p1
symbolic address
relocatable address
physical memory
Khoa KTMT
7
Chuyeån ñoåi ñòa chæ (tt)
Ñòa chæ leänh (instruction) vaø döõ lieäu (data) ñöôïc chuyeån ñoåi
thaønh ñòa chæ thöïc coù theå xaûy ra taïi ba thôøi ñieåm khaùc nhau
‟ Compile time: neáu bieát tröôùc ñòa chæ boä nhôù cuûa chöông trình thì
coù theå keát gaùn ñòa chæ tuyeät ñoái luùc bieân dòch.
Ví duï: chöông trình .COM cuûa MS-DOS
Khuyeát ñieåm: phaûi bieân dòch laïi neáu thay ñoåi ñòa chæ naïp chöông trình
‟ Load time: Vaøo thôøi ñieåm loading, loader phaûi chuyeån ñoåi ñòa chæ
khaû taùi ñònh vò thaønh ñòa chæ thöïc döïa treân moät ñòa chæ neàn (base
address).
Ñòa chæ thöïc ñöôïc tính toaùn vaøo thôøi ñieåm naïp chöông trình phaûi
tieán haønh reload neáu ñòa chæ neàn thay ñoåi.
Khoa KTMT
8
Sinh ñòa chæ tuyeät ñoái vaøo thôøi ñieåm dòch
Symbolic
addresses
PROGRAM
Absolute
addresses
1024
JUMP i
i
1024
LOAD j
j
1424
LOAD 2224
LOAD 2224
Link/Load
Compile
2224
2224
Source code
JUMP 1424
JUMP 1424
1424
DATA
Physical memory
addresses
Absolute load module
Khoa KTMT
Process image
9
Sinh ñòa chæ thöïc vaøo thôøi ñieåm naïp
Relative
(relocatable)
addresses
Symbolic
addresses
PROGRAM
0
JUMP i
1024
JUMP 400
i
400
LOAD j
Physical memory
addresses
1424
LOAD 1200
Compile
JUMP 1424
LOAD 2224
Link/Load
DATA
1200
j
Source code
2224
Relative
load module
Khoa KTMT
Process image
10
Chuyeån ñoåi ñòa chæ (tt)
Execution time: khi trong quaù trình
thöïc thi, process coù theå ñöôïc di
chuyeån töø segment naøy sang
segment khaùc trong boä nhôù thì quaù
trình chuyeån ñoåi ñòa chæ ñöôïc trì
hoaõn ñeán thôøi ñieåm thöïc thi
‟ Caàn söï hoã trôï cuûa phaàn cöùng cho
vieäc aùnh xaï ñòa chæ.
Ví duï: tröôøng hôïp ñòa chæ luaän lyù
laø relocatable thì coù theå duøng
thanh ghi base vaø limit,…
‟ Söû duïng trong ña soá caùc OS ña
duïng (general-purpose) trong ñoù
coù caùc cô cheá swapping, paging,
segmentation
Khoa KTMT
Relative (relocatable)
addresses
0
JUMP 400
400
LOAD 1200
1200
MAX = 2000
11
Khoâng gian ñòa chæ
Ñòa chæ ñöôïc taïo bôûi CPU ‟ Ñòa chæ logic (logical address). Taäp hôïp
ñòa chæ logic goïi laø khoâng gian ñòa chæ logic
Ñòa chæ naïp vaøo MAR ‟ ñòa chæ vaät lyù (physical address). Taäp hôïp
ñòa chæ vaät lyù goïi laø khoâng gian ñòa chæ vaät lyù
compile-time and load-time:
‟ Ñòa chæ Logical vaø physical laø xaùc ñònh
Taïi thôøi ñieåm thöïc thi:
ñòa chæ logic khaùc vaät lyù, thöôøng goïi laø ñòa chæ aûo
Vieäc aùnh xaï giöõa hai ñòa chæ ñöôïc thöïc thi bôûi Memory Management
Unit (MMU)
Khoa KTMT
12
Taùi ñònh vò söû duïng relocation register
relocation
register
7000
CPU
logical
address
642
+
MMU
Khoa KTMT
physical
address
7642
memory
13
Lieân keát ñoäng(Dynamic linking)
Quaù trình link ñeán moät module ngoaøi (external module)
ñöôïc thöïc hieän sau khi ñaõ taïo xong load module (i.e. file
coù theå thöïc thi, executable)
‟ Ví duï trong Windows: module ngoaøi laø caùc file .DLL coøn trong
Unix, caùc module ngoaøi laø caùc file .so (shared library)
Load module chöùa caùc stub tham chieáu (refer) ñeán
routine cuûa external module.
‟ Luùc thöïc thi, khi stub ñöôïc thöïc thi laàn ñaàu (do process goïi
routine laàn ñaàu), stub naïp routine vaøo boä nhôù, töï thay theá baèng
ñòa chæ cuûa routine vaø routine ñöôïc thöïc thi.
‟ Caùc laàn goïi routine sau seõ xaûy ra bình thöôøng
Stub caàn söï hoã trôï cuûa OS (nhö kieåm tra xem routine ñaõ
ñöôïc naïp vaøo boä nhôù chöa).
Khoa KTMT
14
Öu ñieåm cuûa dynamic linking
Thoâng thöôøng, external module laø moät thö vieän cung caáp
caùc tieän ích cuûa OS. Caùc chöông trình thöïc thi coù theå
duøng caùc phieân baûn khaùc nhau cuûa external module maø
khoâng caàn söûa ñoåi, bieân dòch laïi.
Chia seû maõ (code sharing): moät external module chæ caàn
naïp vaøo boä nhôù moät laàn. Caùc process caàn duøng external
module naøy thì cuøng chia seû ñoaïn maõ cuûa external
module tieát kieäm khoâng gian nhôù vaø ñóa.
Phöông phaùp dynamic linking caàn söï hoã trôï cuûa OS
trong vieäc kieåm tra xem moät thuû tuïc naøo ñoù coù theå ñöôïc
chia seû giöõa caùc process hay laø phaàn maõ cuûa rieâng moät
process (bôûi vì chæ coù OS môùi coù quyeàn thöïc hieän vieäc
kieåm tra naøy).
Khoa KTMT
15
Naïp ñoäng(Dynamic loading)
Cô cheá: chæ khi naøo caàn ñöôïc goïi ñeán thì moät thuû tuïc môùi
ñöôïc naïp vaøo boä nhôù chính taêng ñoä hieäu duïng cuûa boä
nhôù (memory utilization) bôûi vì caùc thuû tuïc khoâng ñöôïc
goïi ñeán seõ khoâng chieám choã trong boä nhôù
Raát hieäu quaû trong tröôøng hôïp toàn taïi khoái löôïng lôùn maõ
chöông trình coù taàn suaát söû duïng thaáp, khoâng ñöôïc söû
duïng thöôøng xuyeân (ví duï caùc thuû tuïc xöû lyù loãi)
Hoã trôï töø heä ñieàu haønh
‟ Thoâng thöôøng, user chòu traùch nhieäm thieát keá vaø hieän thöïc caùc
chöông trình coù dynamic loading.
‟ Heä ñieàu haønh chuû yeáu cung caáp moät soá thuû tuïc thö vieän hoã trôï,
taïo ñieàu kieän deã daøng hôn cho laäp trình vieân.
Khoa KTMT
16
Cô cheá phuû laép (overlay)
Taïi moãi thôøi ñieåm, chæ giöõ laïi trong boä nhôù nhöõng
leänh hoaëc döõ lieäu caàn thieát, giaûi phoùng caùc
leänh/döõ lieäu chöa hoaëc khoâng caàn duøng ñeán.
Cô cheá naøy raát höõu duïng khi kích thöôùc moät
process lôùn hôn khoâng gian boä nhôù caáp cho
process ñoù.
Cô cheá naøy ñöôïc ñieàu khieån bôûi ngöôøi söû duïng
(thoâng qua söï hoã trôï cuûa caùc thö vieän laäp trình)
chöù khoâng caàn söï hoã trôï cuûa heä ñieàu haønh
Khoa KTMT
17
Cô cheá overlay (tt)
Pass 1
70K
Pass 2
80K
Symbol table
20K
Ñôn vò: byte
symbol
table
20K
common
routines
30K
overlay
driver
10K
Common routines 30K
Assembler
Total memory
available = 150KB
naïp vaø thöïc thi
pass 2
pass 1
80K
70K
Khoa KTMT
18
Cô cheá hoaùn vò (swapping)
Moät process coù theå taïm thôøi bò swap ra khoûi boä nhôù
chính vaø löu treân moät heä thoáng löu tröõ phuï. Sau ñoù,
process coù theå ñöôïc naïp laïi vaøo boä nhôù ñeå tieáp tuïc quaù
trình thöïc thi.
Swapping policy: hai ví duï
‟ Round-robin: swap out P1 (vöøa tieâu thuï heát quantum cuûa noù),
swap in P2 , thöïc thi P3 ,…
‟ Roll out, roll in: duøng trong cô cheá ñònh thôøi theo ñoä öu tieân
(priority-based scheduling)
Process coù ñoä öu tieân thaáp hôn seõ bò swap out nhöôøng choã
cho process coù ñoä öu tieân cao hôn môùi ñeán ñöôïc naïp vaøo boä
nhôù ñeå thöïc thi
Hieän nay, ít heä thoáng söû duïng cô cheá swapping treân
Khoa KTMT
19
Minh hoïa cô cheá swapping
Khoa KTMT
20
- Xem thêm -