Bài giảng Hệ điều hành: Quản lý bộ nhớ
lượt xem 10
download
Một chương trình muốn chạy thì phải được nạp vào trong bộ nhớ chính và quản lý bộ nhớ giúp tối ưu hóa hoạt động của bộ nhớ. Trong chương này, các bạn sẽ cùng tìm hiểu về quản lý bộ nhớ trong hệ điều hành thông qua các nội dung 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. Mời các bạn cùng tham khảo.
Bình luận(0) Đăng nhập để gửi bình luận!
Nội dung Text: Bài giảng Hệ điều hành: Quản lý bộ nhớ
- HỆ ĐIỀU HÀHH Quản lý bộ nhớ
- 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 cheá phan phaân trang (paging) – Cô cheá phaân ñoaïn (segmentation) -9.2-
- Vì 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 trong bộ nhớ chính. – Vấn đề: Khi nào nạp? Nạp vào đâu? Nạp những phần nà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 -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 g trình = tập ập các câu lệnh ệ ((chỉ thịị máy) 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, 10 4 MOV BX, 20 8 ADD AX, AX, BX 12 16 -9.4-
- Caùc kieåu ñòa chæ nhôù Ñòa chæ vaät lyù (physical address) (ñòa chæ thöïc, ñòa chæ tuyeät ñoái) 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ôù ñoäc laäp vôùi caáu truùc, toå chöùc vaät lyù cuûa boä nhôù. – Caùc trình bieân dòch ò ((compiler) p ) tao ï ra maõ leäänh chöông g trình maø trong g ñoù moïi tham chieáu boä nhôù ñeàu laø ñòa chæ luaän lyù Ñòa ò chæ töông g ñoái ((relative address)) laø moäät kieåu ñòa ò chæ luaään lyù y trong ñoù caùc ñòa chæ ñöôïc bieåu dieãn töông ñoái so vôùi moät ñieåm xaùc ñònh naøo ñoù trong chöông trình (ví duï: 12 byte so vôùi ñieåm baét ñaàu chöông trình) 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å p y n ñoåi thaønh ñòa ò chæ thöïïc. Thao taùc chuyeå y 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. -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: nap naïp load module vaø vao o boä nhôù nhô chính System Library y static linking dynamic linking System S t Library -9.6-
- Cô cheá thöïc hieän linking 0 0 Module A Module A Relocatable CALL B L Length th L object modules JMP “L” L-1 Return L-1 Return L Module B 0 Module B JMP “L+M” CALL C Length M Load module L+M-1 Return Return M-1 L+M Module C 0 Module C Length N L+M+N-1 Return Return N-1 N 1 -9.7-
- Chuyeån ñoåi ñòa chæ nhôù Chuyeån ñoåi ñòa chæ laø 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 dien Bieu dieãn ñòa chæ nhô nhôù – Trong source code: symbolic (caùc bieán, haèng, pointer,...) – Thôøi ñieåm bieân dòch: laø ñòa chæ khaû taùi ñònh vò (relocatable address), hayy laø ñòa ò chæ töông g ñoái ((relative address)) Ví duï: a ôû vò trí 14 bytes so vôùi phaàn header cuûa module. – Thôøi ñieåm linking/loading: laø ñòa chæ tuyeät ñoái. Ví duï: döõ lieäu naèm taïi ñòa chæ boä nhôù thöïc: 2030 0 2000 int I; goto p1; p1 250 2250 Symbolic address Relocatable address Absolute address (Ph i l memory)) (Physical -9.8-
- Chuyeån ñoåi ñòa chæ Ñòa chæ cuûûa leänh (instruction) vaø döõ lieäu (data) ñöôïc chuyeåån ñoåi thaønh ñòa chæ vaät lyù, vieäc naøy 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ôù thì coù theå keát gaùn ñòa chæ vaät lyù luùc bieân dòch. Ví duï du:: chöông trình .COM COM cua cuûa MS MS-DOS, DOS phat phaùt bieu bieåu assemply Khuyeát ñieåm: phaûi bieân dòch laïi neáu thay ñoåi ñòa chæ – Load time: taïi thôøi ñieåm bieân dòch, neáu khoâng bieát ñòa chæ thöïc thì vaøo thôøi ñieåm loading, phaûi chuyeån ñoåi ñòa chæ khaû taùi ñònh vòò ((relocatable)) theo moäät ñòa ò chæ neàn ((base address).) Ñòa chæ thöïc ñöôïc tính toaùn laïi vaøo thôøi ñieåm chöông trình thöïc thi phaûi tieán haønh reload neáu ñòa chæ base thay ñoåi. -9.9-
- Chuyeån ñoåi ñòa chæ vaøo thôøi ñieåm thöïc thi – Execution time: quaù trình chuyeån ñoåi ñöôïc trì hoaõn ñeán thôøi ñieåm thöïc thi Relative (relocatable) (run time) addresses Trong T quaùù trình ì h thöï h c thi, hi process coùù theå ñöôïc di chuyeån töø segment naøy 0 sang segment khaùc trong boä nhôù. CPU taotaïo ra caù cac c ñòa chæ töông ñoá ñoii JMP 400 cho process 400 Caàn söï hoã trôï cuûa phaàn cöùng cho vieäc aùnh xaï ñòa chæ (ví duï coù thanh LOAD 1200 ghi hi base b vaø limit,...) li it ) Söû duïng trong ña soá caùc OS ña duïng (general-purpose) trong ñoù coù pp g, paging, caùc cô cheá swapping, p g g, 1200 segmentation max = 2000 -9.10-
- Dynamic linking Quaù trình link moät soá 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) – Ví duï du: ttrong o g Windows, do s, module odu e ngoaø goai laø a cac caùc file e .DLL;; co coøn ttrong o gUUnix,, caùc module ngoaøi laø caùc file .so (shared library) Load module chæ chöùa caùc tham chieáu ((reference)) ñeán caùc external module. Caùc tham chieáu naøy coù theå ñöôïc chuyeån ñoåi vaøo hai thôøi ñieåm sau: – Loading time (load-time dynamic linking) – Run time: khi coù moät lôøi goïi ñeán thuû tuïc ñöôïc ñònh nghóa trong external module (run-time dynamic linking) Heä ñieàu haønh chòu traùch nhieäm tìm caùc external module vaø keát noái vaøo load module (kieåm tra xem external module ñaõ naïp vaøo boä nhôù chöa) -9.11-
- Ö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û se ma maõ (code sharing): moät external module chæ caà can n naï nap p vao 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. g Dynamic linking caàn söï hoã trôï cuûa OS trong vieäc kieåm tra xem moät thu thuû tuï tuc c naø nao o ño ñoù co coù the theå ñöôï ñöôc c chia seû se giöa giöõa cac caùc process hay laø 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). -9.12-
- Dynamic loading Cô cheá: chæ khi naøo ñöôï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 ít ñöôïïc duøng seõ khoâng chieám choã trong boä nhôù Raát hieääu q quaû trong g tröôøng hôp ïp toàn taiï khoái löông ï g lôùn maõ chöông g trình khoâng ñöôïc söû duïng thöôøng xuyeân (ví duï caùc thuû tuïc xöû lyù loãi) Khoâng caàn söï hoã trôï ñaëc bieät cuûa 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 g trình coù dynamic-loading. y g – 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 -9.13-
- 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 g boää nhôù caáp cho process p ñoù. Cô cheá naøy ñöôïc ñieàu khieån bôûi ngöôøi söû duïng (thoâng qua söï hoã trô cua trôï cuûa cac caùc thö vieän laäp trình) chöù chö khong khoâng caà can n söï sö hoã ho trôï trô cua cuûa heä ñieàu haønh -9.14-
- Cô cheá overlay (tt) Pass 1 70KB Pass 2 80KB symbol 20KB Symbol table 20KB table Common routines 30KB Assembler common routines 30KB Total memory available = 150KB overlay 10KB driver 80KB pass 1 pass 2 70KB -9.15-
- 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ù co the theå ñöôï ñöôc c nap naïp lai laïi vaø vao o boä nhô nhôù ñe ñeå tiep tieáp tuï tuc c quaù trình thöïc thi – Round-robin: swap-out A, swap-in B, thöïc thi C – 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 p nhöôøng choã cho process coù ñoä öu tieân cao hôn ñöôïc naïp vaøo boä nhôù ñeå thöïc thi – Medium-term scheduler -9.16-
- Minh hoïa cô cheá swapping -9.17-
- Moâ hình quaûn lyù boä nhôù thöïc 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öø vieäc söû duïng cô cheá overlay). Caùc cô cheá quaûn lyù boä nhôù thöïc 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, tuy nhieân ñoù laø caùc yù töông y töôûng cô sôû sô cho moâ mo hình quan quaûn ly lyù boä nhôù nhô ao aûo sau nay: naøy: – Phaân chia coá ñònh (fixed partitioning) – Phaân chia ñoäng (dynamic partitioning) – Phaân trang ñôn giaû Phan gian n (simple paging) – Phaân ñoaïn ñôn giaûn (simple segmentation) -9.18-
- Phaân maûnh (fragmentation) Phaân maûnh ngoaïi (external fragmentation) – Kích thöôùc khoâng gian boä nhôù coøn troáng ñuû ñeå thoûa maõn moät yeâu cau yeu caàu cap caáp phat, phaùt tuy nhieâ nhien n khong khoâng gian nhô nhôù nay naøy khoâ khongng lieâ lien n tuïc phaûi duøng cô cheá keát khoái (compaction). Ph ân maûûnh noääi (internal Phaâ (i t l fragmentation) f t ti ) – Kích thöôùc vuøng nhôù ñöôïc caáp phaùt 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 (physical memory) ñöôï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) -9.19-
- Phaân maûnh noäi yeâu caàu keá tieáp laø operating 18.462 bytes!!! system y (used) hole kích thöôùc 18 464 bytes 18.464 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 yeâu caàu cuûa p process dö ra 2 bytesy khoâng duøng! g -9.20-
CÓ THỂ BẠN MUỐN DOWNLOAD
-
Bài giảng Hệ điều hành: Chương 2 - Phạm Đăng Hải
464 p | 223 | 66
-
Bài giảng Hệ điều hành: Chương 4 - Phạm Đăng Hải
244 p | 285 | 62
-
Bài giảng Hệ điều hành: Chương 3 - Phạm Đăng Hải
245 p | 205 | 49
-
Bài giảng Hệ điều hành: Chương 6 - Nguyễn Phan Trung
54 p | 156 | 21
-
Bài giảng Hệ điều hành - Bài 7: Quản lý bộ nhớ ảo
39 p | 139 | 16
-
Bài giảng Hệ điều hành: Chương 2
40 p | 122 | 14
-
Bài giảng Hệ điều hành: Chương 7 - ĐH Bách khoa TP HCM
64 p | 88 | 14
-
Bài giảng Hệ điều hành: Chương 5 - ĐH Bách khoa TP HCM
25 p | 112 | 14
-
Bài giảng Hệ điều hành - Bài 8: Quản lý nhập xuất
60 p | 119 | 13
-
Bài giảng Hệ điều hành: Chương 2 - ĐH Bách khoa TP HCM
14 p | 112 | 13
-
Bài giảng Hệ điều hành: Chương 6 - ĐH Bách khoa TP HCM
45 p | 131 | 13
-
Bài giảng Hệ điều hành - Bài 6: Quản lý bộ nhớ - mục tiêu
55 p | 100 | 8
-
Bài giảng Hệ điều hành - Chương 3: Quản lý tiến trình
58 p | 75 | 7
-
Bài giảng Hệ điều hành: Quản lý bộ nhớ - ThS. Nguyễn Thị Hải Bình
47 p | 58 | 7
-
Bài giảng Hệ điều hành: Chương 7 - ThS. Hà Lê Hoài Trung
69 p | 80 | 5
-
Bài giảng Hệ điều hành: Chương 2A - Quản lý quá trình
42 p | 69 | 5
-
Bài giảng Hệ điều hành: Quản lý nhập xuất - ThS. Nguyễn Thị Hải Bình
21 p | 29 | 4
-
Bài giảng Hệ điều hành nâng cao: Bài 3 - Trần Hạnh Nhi
23 p | 50 | 3
Chịu trách nhiệm nội dung:
Nguyễn Công Hà - Giám đốc Công ty TNHH TÀI LIỆU TRỰC TUYẾN VI NA
LIÊN HỆ
Địa chỉ: P402, 54A Nơ Trang Long, Phường 14, Q.Bình Thạnh, TP.HCM
Hotline: 093 303 0098
Email: support@tailieu.vn