Đăng ký Đăng nhập

Tài liệu Memory management

.PDF
65
498
112

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 L1 0 Return 0 0 Module A JMP “L” L  1 Return L Module B Module B CALL C M1 length L relocatable object modules length M JMP “L+M” load module L  M  1 Return Return LM Module C Module C length N LMN1 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 -

Tài liệu liên quan