9. quaûn lyù boä nhôù

63
9.1 9. Quaûn lyù boä nhôù Caùc kieåu ñòa chæ nhôù 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

Upload: avel

Post on 11-Jan-2016

42 views

Category:

Documents


1 download

DESCRIPTION

9. Quaûn lyù boä nhôù. Caùc kieåu ñòa chæ nhôù 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. Khaùi nieäm cô sôû. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: 9. Quaûn lyù boä nhôù

9.1

9. Quaûn lyù boä nhôù Caùc kieåu ñòa chæ nhôù 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

Page 2: 9. Quaûn lyù boä nhôù

9.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

Page 3: 9. Quaûn lyù boä nhôù

9.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– 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.

Page 4: 9. Quaûn lyù boä nhôù

9.4

Caùc kieåu ñòa chæ nhôù (tt) Khi moät leänh ñöôïc thöïc thi, caùc tham chieáu

ñeán ñòa chæ luaän lyù phaûi ñöôïc chuyeån ñoåi thaønh ñòa chæ thöïc. Thao taùc chuyeån ñoåi naøy thöôøng coù söï hoã trôï cuûa phaàn cöùng ñeå ñaït hieäu suaát cao.

Page 5: 9. Quaûn lyù boä nhôù

9.5

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

Systemlibrary

Systemlibrary

System library

System library

static linking

dynamic linking

Page 6: 9. Quaûn lyù boä nhôù

9.6

Cô cheá thöïc hieän linking

Module A

CALL B

Return

length L

Module B

CALL C

Return

length M

Module C

Return

length N

0

L 1

Module A

JMP “L”

Return

Module B

JMP “L+M”

Return

Module C

Return

L

L M 1

L M

L M N 1

relocatableobject modules

load module

0

L 1

0

M 1

0

N 1

Page 7: 9. Quaûn lyù boä nhôù

9.7

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 20300

250

2000

2250

relocatable addressphysical memory

symbolic address

int i;goto p1;

p1

Page 8: 9. Quaûn lyù boä nhôù

9.8

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, phaùt bieåu assembly

org xxx 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: taïi thôøi ñieåm bieân dòch, neáu chöa bieát quaù trình seõ naèm ôû ñaâu trong boä nhôù thì compiler phaûi sinh maõ khaû taùi ñònh vò. 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.

Page 9: 9. Quaûn lyù boä nhôù

9.9

Sinh ñòa chæ tuyeät ñoái vaøo thôøi ñieåm dòch

Symbolicaddresses

PROGRAM

JUMP i

LOAD j

DATA

i

j

Source code

Absoluteaddresses

1024

JUMP 1424

LOAD 2224

1424

2224

Absolute load module

Compile Link/Load

Physical memory addresses

1024

JUMP 1424

LOAD 2224

1424

2224

Process image

Page 10: 9. Quaûn lyù boä nhôù

9.10

Sinh ñòa chæ thöïc vaøo thôøi ñieåm naïp

Relative (relocatable)addresses

0

JUMP 400

LOAD 1200

400

1200

Relativeload module

Symbolicaddresses

PROGRAM

JUMP i

LOAD j

DATA

i

j

Source code

Compile Link/Load

Physical memory addresses

1024

JUMP 1424

LOAD 2224

1424

2224

Process image

Page 11: 9. Quaûn lyù boä nhôù

9.11

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– CPU taïo ra ñòa chæ luaän lyù cho

process– 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

Relative (relocatable)addresses

0

JUMP 400

LOAD 1200

400

1200

MAX = 2000

Page 12: 9. Quaûn lyù boä nhôù

9.12

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).

Page 13: 9. Quaûn lyù boä nhôù

9.13

Ö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).

Page 14: 9. Quaûn lyù boä nhôù

9.14

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.

Page 15: 9. Quaûn lyù boä nhôù

9.15

Cô cheá 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

Page 16: 9. Quaûn lyù boä nhôù

9.16

Pass 1 70K

Pass 2 80K

Symbol table 20K

Common routines 30K

Pass 1 70K

Pass 2 80K

Symbol table 20K

Common routines 30K

Assembler

Total memory available = 150KB

Cô cheá overlay (tt)

symboltable

20K

commonroutines 30K

overlaydriver

10K

pass 1 pass 2

80K70K

Ñôn vò: byte

naïp vaø thöïc thi

Page 17: 9. Quaûn lyù boä nhôù

9.17

Cô cheá 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

Page 18: 9. Quaûn lyù boä nhôù

9.18

Minh hoïa cô cheá swapping

Page 19: 9. Quaûn lyù boä nhôù

9.19

Moâ hình quaûn lyù boä nhôù Trong chöông naøy, moâ hình quaûn lyù boä nhôù

laø moät moâ hình ñôn giaûn, khoâng coù boä nhôù aûo.

Moät process phaûi ñöôïc naïp hoaøn toaøn vaøo boä nhôù thì môùi ñöôïc thöïc thi (ngoaïi tröø khi söû duïng cô cheá overlay).

Caùc cô cheá quaûn lyù boä nhôù sau ñaây raát ít (haàu nhö khoâng coøn) ñöôïc duøng trong caùc heä thoáng hieän ñaïi– Phaân chia coá ñònh (fixed partitioning)– Phaân chia ñoäng (dynamic partitioning)– Phaân trang ñôn giaûn (simple paging)– Phaân ñoaïn ñôn giaûn (simple segmentation)

Page 20: 9. Quaûn lyù boä nhôù

9.20

Phaân maûnh (fragmentation)

Phaân maûnh ngoaïi (external fragmentation)– Kích thöôùc khoâng gian nhôù coøn troáng ñuû ñeå

thoûa maõn moät yeâu caàu caáp phaùt, tuy nhieân khoâng gian nhôù naøy khoâng lieân tuïc coù theå duøng cô cheá keát khoái (compaction) ñeå gom laïi thaønh vuøng nhôù lieân tuïc.

Phaân maûnh noäi (internal fragmentation)– Kích thöôùc vuøng nhôù ñöôïc caáp phaùt coù theå hôi

lôùn hôn vuøng nhôù yeâu caàu. Ví duï: caáp moät khoaûng troáng 18,464 bytes cho moät

process yeâu caàu 18,462 bytes.– Hieän töôïng phaân maûnh noäi thöôøng xaûy ra khi

boä nhôù thöïc ñöôïc chia thaønh caùc khoái kích thöôùc coá ñònh (fixed-sized block) vaø caùc process ñöôïc caáp phaùt theo ñôn vò khoái. Ví duï: cô cheá phaân trang (paging).

Page 21: 9. Quaûn lyù boä nhôù

9.21

Phaân maûnh noäi

operatingsystem

(used)

yeâu caàu keá tieáp laø 18,462 bytes !!!

hole kích thöôùc18,464 bytes caàn quaûn lyù

khoaûng troáng 2 bytes !?!

OS seõ caáp phaùt haún khoái 18,464 bytes cho process dö ra 2 bytes khoâng duøng!

Page 22: 9. Quaûn lyù boä nhôù

9.22

Fixed partitioning Khi khôûi ñoäng heä thoáng, boä nhôù

chính ñöôïc chia thaønh nhieàu phaàn rôøi nhau goïi laø caùc partition coù kích thöôùc baèng nhau hoaëc khaùc nhau

Process naøo coù kích thöôùc nhoû hôn hoaëc baèng kích thöôùc partition thì coù theå ñöôïc naïp vaøo partition ñoù.

Neáu chöông trình coù kích thöôùc lôùn hôn partition thì phaûi duøng cô cheá overlay.

Nhaän xeùt– Khoâng hieäu quaû do bò phaân maûnh

noäi: moät chöông trình duø lôùn hay nhoû ñeàu ñöôïc caáp phaùt troïn moät partition.

Page 23: 9. Quaûn lyù boä nhôù

9.23

Chieán löôïc placement Partition coù kích thöôùc baèng nhau

– Neáu coøn partition troáng process môùi seõ ñöôïc naïp vaøo partition ñoù

– Neáu khoâng coøn partition troáng, nhöng trong ñoù coù process ñang bò blocked swap process ñoù ra boä nhôù phuï nhöôøng choã cho process môùi.

Page 24: 9. Quaûn lyù boä nhôù

9.24

Chieán löôïc placement (tt) Partition coù kích thöôùc khoâng

baèng nhau: giaûi phaùp 1– Gaùn moãi process vaøo partition

nhoû nhaát phuø hôïp vôùi noù– Coù haøng ñôïi cho moãi partition – Giaûm thieåu phaân maûnh noäi– Vaán ñeà: coù theå coù moät soá

haøng ñôïi troáng khoâng (vì khoâng coù process vôùi kích thöôùc töông öùng) vaø haøng ñôïi daøy ñaëc

Page 25: 9. Quaûn lyù boä nhôù

9.25

Chieán löôïc placement (tt) Partition coù kích thöôùc

khoâng baèng nhau: giaûi phaùp 2– Chæ coù moät haøng ñôïi

chung cho moïi partition – Khi caàn naïp moät process

vaøo boä nhôù chính choïn partition nhoû nhaát coøn troáng

Page 26: 9. Quaûn lyù boä nhôù

9.26

Dynamic partitioning Soá löôïng partition khoâng coá ñònh vaø partition

coù theå coù kích thöôùc khaùc nhau Moãi process ñöôïc caáp phaùt chính xaùc dung

löôïng boä nhôù caàn thieát Gaây ra hieän töôïng phaân maûnh ngoaïi

Page 27: 9. Quaûn lyù boä nhôù

9.27

Chieán löôïc placement Duøng ñeå quyeát ñònh caáp

phaùt khoái boä nhôù troáng naøo cho moät process

Muïc tieâu: giaûm chi phí compaction

Caùc chieán löôïc placement– Best-fit: choïn khoái nhôù

troáng nhoû nhaát – First-fit: choïn khoái nhôù

troáng phuø hôïp ñaàu tieân keå töø ñaàu boä nhôù

– Next-fit: choïn khoái nhôù troáng phuø hôïp ñaàu tieân keå töø vò trí caáp phaùt cuoái cuøng

– Worst-fit: choïn khoái nhôù troáng lôùn nhaát

Page 28: 9. Quaûn lyù boä nhôù

9.28

Cô cheá phaân trang (paging) Cô cheá phaân trang cho pheùp khoâng gian ñòa chæ

thöïc (physical address space) cuûa moät process coù theå khoâng lieân tuïc nhau.

Boä nhôù thöïc ñöôïc chia thaønh caùc khoái coá ñònh vaø coù kích thöôùc baèng nhau goïi laø frame.– Thoâng thöôøng kích thöôùc cuûa frame laø luõy thöøa cuûa 2,

töø khoaûng 512 byte ñeán 16MB. Boä nhôù luaän lyù (logical memory) hay khoâng gian

ñòa chæ luaän lyù laø taäp moïi ñòa chæ luaän lyù maø moät chöông trình baát kyø coù theå sinh ra.– Ví duï• MOV REG,1000 1000 laø moät ñòa chæ

luaän lyù– Ñòa chæ luaän lyù coøn coù theå ñöôïc chöông trình sinh ra

baèng caùch duøng indexing, base register, segment register,…

Page 29: 9. Quaûn lyù boä nhôù

9.29

Cô cheá phaân trang (tt) Boä nhôù luaän lyù cuõng ñöôïc chia thaønh

caùc khoái coá ñònh coù cuøng kích thöôùc goïi laø trang nhôù (page).

Frame vaø trang nhôù coù kích thöôùc baèng nhau.

Heä ñieàu haønh phaûi thieát laäp moät baûng phaân trang (page table) ñeå aùnh xaï ñòa chæ luaän lyù thaønh ñòa chæ thöïc– Moãi process coù moät baûng phaân trang, ñöôïc

quaûn lyù baèng moät con troû löu giöõ trong PCB. Coâng vieäc thieát laäp baûng phaân trang cho process laø moät phaàn cuûa chuyeån ngöõ caûnh

Cô cheá phaân trang khieán boä nhôù bò phaân maûnh noäi, tuy nhieân laïi khaéc phuïc ñöôïc phaân maûnh ngoaïi.

Page 30: 9. Quaûn lyù boä nhôù

9.30

Cô cheá phaân trang (tt)

logical memory

1

4

3

5

0

1

2

3

page table

page 0

page 2

physical memory

framenumber

0

1

2

3

page 14

5 page 3

pagenumber

0

1

2

3

Page 31: 9. Quaûn lyù boä nhôù

9.31

Chuyeån ñoåi ñòa chæ trong paging

Ñòa chæ luaän lyù goàm coù:– Page number, p, ñöôïc duøng laøm chæ muïc doø tìm trong baûng

phaân trang. Moãi muïc trong baûng phaân trang chöùa chæ soá frame (coøn goïi laø soá frame cho goïn) cuûa trang töông öùng trong boä nhôù thöïc.

– Page offset, d, ñöôïc keát hôïp vôùi ñòa chæ cô sôû (base address) ñeå ñònh vò ñòa chæ thöïc.

Neáu kích thöôùc cuûa khoâng gian ñòa chæ aûo laø 2m, vaø kích thöôùc cuûa trang laø 2n (ñôn vò laø byte hay word tuøy theo kieán truùc maùy)

Baûng phaân trang seõ coù toång coäng 2m/2n = 2m n muïc

(entry)

p d

page number page offset

m n bits(ñònh vò töø 0 2m n 1)

n bits(ñònh vò töø 0 2n 1)

Page 32: 9. Quaûn lyù boä nhôù

9.32

Paging hardware

Neáu kích thöôùc cuûa khoâng gian nhôù thöïc laø 2l bytes, thì moãi muïc cuûa baûng phaân trang coù l n bits

frame number frame offset

f, l-n bits d, n bits

CPUCPU p d f d

f

p

page table

logicaladdress

physicaladdress

physicalmemory

f 00…00

f 11…11

f frames

Page 33: 9. Quaûn lyù boä nhôù

9.33

Chuyeån ñoåi ñòa chæ nhôù trong paging

Ví duï:

Page 34: 9. Quaûn lyù boä nhôù

9.34

Hieän thöïc baûng phaân trang

Baûng phaân trang thöôøng ñöôïc löu giöõ trong boä nhôù chính– Moãi process ñöôïc heä ñieàu haønh caáp moät baûng phaân trang– Thanh ghi page-table base (PTBR) troû ñeán baûng phaân trang– Thanh ghi page-table length (PTLR) bieåu thò kích thöôùc cuûa

baûng phaân trang (coù theå ñöôïc duøng trong cô cheá baûo veä boä nhôù)

Moãi taùc vuï truy caäp döõ lieäu/leänh caàn hai thao taùc truy xuaát vuøng nhôù– Moät thao taùc duøng page number p laøm index ñeå truy caäp

muïc trong baûng phaân trang nhaèm laáy soá frame vaø keá ñeán laø moät thao taùc duøng page offset d ñeå truy xuaát döõ lieäu/leänh trong frame

– Thöôøng duøng moät boä phaän cache phaàn cöùng coù toác ñoä truy xuaát vaø tìm kieám cao, goïi laø thanh ghi keát hôïp (associative register) hoaëc translation look-aside buffers (TLBs)

Page 35: 9. Quaûn lyù boä nhôù

9.35

Associative register (hardware)

hay TLB, laø thanh ghi hoã trôï tìm kieám truy xuaát döõ lieäu vôùi toác ñoä cöïc nhanh.

Page # Frame #

Soá muïc cuûa TLB khoaûng 8

2048

Khi coù chuyeån ngöõ caûnh, TLB

bò xoùa

TLB laø “cache” cuûa baûng phaân

trang

AÙnh xaï ñòa chæ aûo– Neáu page number naèm trong TLB (: hit, truùng) laáy ngay ñöôïc soá frame tieát kieäm ñöôïc thôøi gian truy caäp boä nhôù chính ñeå laáy soá frame trong baûng phaân trang.– Ngöôïc laïi (: miss, traät), phaûi laáy soá frame töø baûng phaân trang nhö bình thöôøng.

Khi TLB ñaày, thay theá muïc duøng

LRU

Page 36: 9. Quaûn lyù boä nhôù

9.36

Paging hardware vôùi TLB

Page 37: 9. Quaûn lyù boä nhôù

9.37

Effective access time (EAT)• Tính thôøi gian truy xuaát hieäu duïng (effective access

time, EAT) Thôøi gian tìm kieám trong TLB (associative lookup): Thôøi gian moät chu kyø truy xuaát boä nhôù: x Hit ratio: tæ soá giöõa soá laàn chæ soá trang ñöôïc tìm

thaáy (hit) trong TLB vaø soá laàn truy xuaát khôûi nguoàn töø CPU– Kí hieäu hit ratio:

Thôøi gian caàn thieát ñeå coù ñöôïc chæ soá frame– Khi chæ soá trang coù trong TLB (hit) + x– Khi chæ soá trang khoâng coù trong TLB (miss) + x + x

Thôøi gian truy xuaát hieäu duïngEAT = ( + x) + ( + 2x)(1 – )

= (2 – )x +

Page 38: 9. Quaûn lyù boä nhôù

9.38

Effective access time (tt) Ví duï 1: ñôn vò thôøi

gian nano giaây Associative lookup = 20 Memory access = 100 Hit ratio = 0.8 EAT = (100 + 20) 0.8

+ (200 + 20)

0.2 = 1.2 100 + 20

= 140

Ví duï 2 Associative lookup = 20 Memory access = 100 Hit ratio = 0.98 EAT = (100 + 20) 0.98

+ (200 + 20) 0.02

= 1.02 100 + 20 = 122

Page 39: 9. Quaûn lyù boä nhôù

9.39

Baûo veä boä nhôù Vieäc baûo veä boä nhôù ñöôïc hieän thöïc baèng

caùch gaén vôùi frame caùc bit baûo veä (protection bits) ñöôïc giöõ trong baûng phaân trang. Caùc bit naøy bieåu thò caùc thuoäc tính sau– read-only, read-write, execute-only

Ngoaøi ra, coøn coù moät valid/invalid bit gaén vôùi moãi muïc trong baûng phaân trang– “valid”: cho bieát laø trang cuûa process, do ñoù laø moät

trang hôïp leä.

– “invalid”: cho bieát laø trang khoâng cuûa process, do ñoù laø moät trang baát hôïp leä.

Page 40: 9. Quaûn lyù boä nhôù

9.40

Baûo veä baèng valid/invalid bit

Moãi trang nhôù coù kích thöôùc 2K = 2048 Process coù kích thöôùc 10,468 phaân maûnh noäi ôû

frame 9 (chöùa page 5), caùc ñòa chæ aûo > 12287 laø caùc ñòa chæ invalid.

Duøng PTLR ñeå kieåm tra truy xuaát ñeán baûng phaân trang coù naèm trong baûng hay khoâng.

00000

1046812287

2 v

3 v

4 v

7 v

8 v

9 v

0 i

0 i

framenumber

valid/invalid bit

0

1

2

3

4

5

6

7

0

1

2 page 0

3 page 1

4 page 2

5

6

7 page 3

8 page 4

9 page 5

...

page n

Page 41: 9. Quaûn lyù boä nhôù

9.41

Baûng phaân trang 2 möùc Caùc heä thoáng hieän ñaïi ñeàu hoã trôï khoâng gian

ñòa chæ aûo raát lôùn (232 ñeán 264), ôû ñaây giaû söû laø 232

– Giaû söû kích thöôùc trang nhôù laø 4KB (= 212) baûng phaân trang seõ coù 232/212 = 220 = 1M muïc.

– Giaû söû moãi muïc goàm 4 byte thì moãi process caàn 4MB cho baûng phaân trang

Moät giaûi phaùp laø, thay vì duøng moät baûng phaân trang duy nhaát cho moãi process, “paging” baûng phaân trang naøy, vaø chæ giöõ nhöõng baûng phaân trang caàn thieát trong boä nhôù baûng phaân trang 2 möùc (two-level page table).

Page 42: 9. Quaûn lyù boä nhôù

9.42

Baûng phaân trang 2-möùc (tt)

• Ví duï Moät ñòa chæ luaän lyù treân heä thoáng 32-bit vôùi trang

nhôù 4K ñöôïc chia thaønh caùc phaàn sau:– Page number: 20 bit

Neáu moãi muïc daøi 4 byte Caàn 220 4 byte = 4 MB cho moãi page table

– Page offset: 12 bit

Baûng phaân trang cuõng ñöôïc chia nhoû neân page number cuõng ñöôïc chia nhoû thaønh 2 phaàn:– 10-bit page number– 10-bit page offset

Vì vaäy, moät ñòa chæ luaän lyù seõ nhö hình veõ beân• p1 : chæ soá cuûa trang trong baûng phaân trang möùc 1 (outer-

page table)• p2 : chæ soá cuûa trang trong baûng phaân trang möùc 2

page number offset

p2

page offset

dp1

10 bit10 bit 12 bit

20 bit 12 bit

Page 43: 9. Quaûn lyù boä nhôù

9.43

Baûng phaân trang 2-möùc (tt)

Minh hoïa

caùc baûng phaân trang möùc 2

- Coù 2p1 muïc trong baûng phaân trang möùc 1- Moãi baûng phaân trang möùc 2 chöùa 2p2 muïc

Page 44: 9. Quaûn lyù boä nhôù

9.44

Baûng phaân trang 2 möùc (tt)

Sô ñoà chuyeån ñoåi ñòa chæ (address-translation scheme) cho cô cheá baûng phaân trang 2 möùc, 32-bit ñòa chæ

page table möùc 2

Page 45: 9. Quaûn lyù boä nhôù

9.45

Baûng phaân trang 2 möùc (tt)

Baûng phaân trang 2 möùc giuùp tieát kieäm boä nhôù:

Vuøng maøu ñoû töông öùng vôùi phaàn khoâng ñöôïc söû duïng cuûa khoâng gian ñòa chæ aûo. Caùc muïc maøu ñoû ñöôïc ñaùnh daáu laø khoâng coù frame neân seõ gaây ra page fault neáu ñöôïc tham chieáu ñeán; khi ñoù OS seõ taïo theâm baûng phaân trang möùc 2 môùi.

Page 46: 9. Quaûn lyù boä nhôù

9.46

Baûng phaân trang ña möùc Ví duï: Khoâng gian ñòa chæ luaän lyù 64-bit vôùi

trang nhôù 4K – Baûng phaân trang 2-möùc vaãn coøn quaù lôùn! Töông töï

baûng phaân trang 2 möùc, ta coù baûng phaân trang 3, 4,…, n möùc

Tieát kieäm choå trong boä nhôù chính baèng caùch chæ giöõ trong boä nhôù chính caùc baûng phaân trang maø process hieän ñang caàn.

page number page offset page numbers page offset

page numbers page offset page numbers page offset

52 12 42 10 12

32 10 10 12 22 10 10 10 12

Page 47: 9. Quaûn lyù boä nhôù

9.47

Baûng phaân trang baêm (hashed page table)

Duøng baûng baêm ñeå giaûm khoâng gian baûng phaân trang– Raát phoå bieán trong caùc heä thoáng lôùn hôn 32 bit ñòa chæ.

Ñeå giaûi quyeát ñuïng ñoä, moãi muïc cuûa baûng baêm ñöôïc gaén moät danh saùch lieân keát. Moãi phaàn töû cuûa danh saùch laø moät caëp (chæ soá trang aûo, chæ soá frame).– Chæ soá trang aûo (virtual page number) ñöôïc bieán ñoåi qua

haøm baêm thaønh moät hashed value. Caëp (chæ soá trang aûo, chæ soá frame) seõ ñöôïc löu vaøo danh saùch lieân keát taïi muïc coù chæ soá laø hashed value.

Giaûi thuaät tìm trang: – Chæ soá trang aûo ñöôïc bieán ñoåi thaønh hashed value (vôùi

cuøng haøm baêm nhö treân). Hashed value laø chæ soá cuûa muïc caàn truy caäp trong baûng baêm. Sau ñoù, tìm trong danh saùch lieân keát phaàn töû chöùa chæ soá trang aûo ñeå trích ra ñöôïc chæ soá frame töông öùng.

Page 48: 9. Quaûn lyù boä nhôù

9.48

Hashed page table (tt)

danh saùch caùc caëp(chæ soá trang aûo, chæ soá frame)

Page 49: 9. Quaûn lyù boä nhôù

9.49

Chia seû caùc trang nhôùProcess 1

ed 1

ed 2

ed 3

data 1

ed 1

ed 2

ed 2

data 3

Process 3

3

4

6

2

0

1

2

3

3

4

6

1

0

1

2

3

Process 2

ed 1

ed 2

ed 3

data 2

3

4

6

7

0

1

2

3

0

1 data 1

2 data 3

3 ed 1

4 ed 2

5

6 ed 3

7 data 2

8

9

10

Boä nhôù thöïc

Page 50: 9. Quaûn lyù boä nhôù

9.50

Phaân ñoaïn (segmentation) Nhìn laïi cô cheá phaân trang

– user view (khoâng gian ñòa chæ aûo) taùch bieät vôùi khoâng gian boä nhôù thöïc. Cô cheá phaân trang thöïc hieän pheùp aùnh xaï user-view vaøo boä nhôù thöïc.

Trong thöïc teá, döôùi goùc nhìn cuûa user, moät chöông trình caáu thaønh töø nhieàu ñoaïn (segment). Moãi ñoaïn laø moät ñôn vò luaän lyù cuûa chöông trình, nhö– main program, procedure, function– local variables, global variables, common block, stack,

symbol table, arrays,…

Page 51: 9. Quaûn lyù boä nhôù

9.51

User view cuûa moät chöông trình

Thoâng thöôøng, moät chöông trình ñöôïc bieân dòch. Trình bieân dòch seõ töï ñoäng xaây döïng caùc segment.

Ví duï, trình bieân dòch Pascal seõ taïo ra caùc segment sau:– Global variables– Procedure call stack– Procedure/function code – Local variable

Trình loader seõ gaùn moãi segment moät soá ñònh danh rieâng.

procedureprocedure

stackstack

symbol table

symbol table

functionsqrt

functionsqrt

main programmain program

Logical address space

Page 52: 9. Quaûn lyù boä nhôù

9.52

Phaân ñoaïn Duøng cô cheá phaân ñoaïn ñeå quaûn lyù boä nhôù

coù hoã trôï user view– Khoâng gian ñòa chæ aûo laø moät taäp caùc ñoaïn, moãi

ñoaïn coù teân vaø kích thöôùc rieâng.– Moät ñòa chæ luaän lyù ñöôïc ñònh vò baèng teân ñoaïn

vaø ñoä dôøi (offset) beân trong ñoaïn ñoù (so saùnh vôùi phaân trang!)

Page 53: 9. Quaûn lyù boä nhôù

9.53

Phaân ñoaïn (tt)

logical address space physical memory space

segment 1

segment 2

segment 3 segment 4

Page 54: 9. Quaûn lyù boä nhôù

9.54

Hieän thöïc phaân ñoaïn Ñòa chæ luaän lyù laø moät caëp giaù trò

(segment number, offset) Baûng phaân ñoaïn (segment table): goàm nhieàu

muïc, moãi muïc chöùa– base, chöùa ñòa chæ khôûi ñaàu cuûa segment trong boä

nhôù– limit, xaùc ñònh kích thöôùc cuûa segment

Segment-table base register (STBR): troû ñeán vò trí baûng phaân ñoaïn trong boä nhôù

Segment-table length register (STLR): soá löôïng segment cuûa chöông trình Moät chæ soá segment s laø hôïp leä neáu s < STLR

Page 55: 9. Quaûn lyù boä nhôù

9.55

Moät ví duï veà phaân ñoaïn

procedureprocedure

stackstack

symbol table

symbol table

functionsqrt

functionsqrt

main programmain program

segment 0

segment 3

segment 1segment 2

segment 4

procedure

stack

main

symbol table

function sqrt

limit base

0 1000 1400

1 400 6300

2 400 4300

3 1100 3200

4 1000 4700

segmenttable

logical address spacephysical memory space

1400

2400

3200

4300

4700

5700

6300

Page 56: 9. Quaûn lyù boä nhôù

9.56

Phaàn cöùng hoã trôï phaân ñoaïn

CPUCPU

+physicalmemoryphysicalmemory

no

trap; addressing error

limit base

s

s d

yes

segmenttable

Page 57: 9. Quaûn lyù boä nhôù

9.57

Chuyeån ñoåi ñòa chæ trong cô cheá phaân ñoaïn

Ví duï

Page 58: 9. Quaûn lyù boä nhôù

9.58

Chia seû caùc ñoaïn

editoreditordata 1data 1

segment 0 segment 1

logical address space process P1

editoreditordata 2data 2

segment 0 segment 1

logical address space process P2

limit base

0 25286 43062

1 4425 68348

segment table process P1

limit base

0 25286 43062

1 8850 90003

segment table process P2

editor

data 1

data 2

physical memory

43062

72773

68348

90003

98853

Page 59: 9. Quaûn lyù boä nhôù

9.59

Keát hôïp phaân trang vaø phaân ñoaïn

Keát hôïp phaân trang vaø phaân ñoaïn nhaèm keát hôïp caùc öu ñieåm ñoàng thôøi haïn cheá caùc khuyeát ñieåm cuûa phaân trang vaø phaân ñoaïn:– Vaán ñeà cuûa phaân ñoaïn: Neáu moät ñoaïn quaù lôùn thì

coù theå khoâng naïp noù ñöôïc vaøo boä nhôù.– YÙ töôûng giaûi quyeát: paging ñoaïn, khi ñoù chæ caàn

giöõ trong boä nhôù caùc page cuûa ñoaïn hieän ñang caàn.

Page 60: 9. Quaûn lyù boä nhôù

9.60

Keát hôïp phaân trang vaø phaân ñoaïn (tt)

Coù nhieàu caùch keát hôïp. Sau ñaây laø moät caùch ñôn giaûn, goïi laø segmentation with paging

• Moãi process seõ coù: – Moät baûng phaân ñoaïn – Nhieàu baûng phaân trang: moãi ñoaïn coù moät baûng phaân

trang

• Moät ñòa chæ luaän lyù (ñòa chæ aûo) bao goàm: – segment number: laø chæ soá cuûa moät muïc trong baûng

phaân ñoaïn, muïc naøy chöùa ñòa chæ neàn (base address) cuûa baûng phaân trang cho ñoaïn ñoù

– page number: laø chæ soá cuûa moät muïc trong baûng phaân trang, muïc naøy chöùa chæ soá frame trong boä nhôù thöïc

– offset: ñoä dôøi cuûa vò trí nhôù trong frame noùi treân.

Page 61: 9. Quaûn lyù boä nhôù

9.61

frame 0

frame 1

frame 2

frame 3

frame 4

frame 5

frame 6

Segmentation with paging (1) Minh hoïa

Page 62: 9. Quaûn lyù boä nhôù

9.62

Segmentation with paging (2)

Page 63: 9. Quaûn lyù boä nhôù

9.63

Segmentation with paging (3)

Segment base: ñòa chæ thöïc cuûa baûng phaân trang

Present bit vaø modified bit chæ toàn taïi trong baûng phaân trang

Caùc thoâng tin baûo veä vaø chia seû vuøng nhôù thöôøng naèm trong baûng phaân ñoaïn– Ví duï: read-only/read-write bit,…