chương 6 :Quản lý bộ nhớ ppt

73 469 5
chương 6 :Quản lý bộ nhớ ppt

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

4/6/2008 Trần Hạnh Nhi 1 Bài giảng 6 : Quản lý bộ nhớ  Tổng quan  Nhu cầu bộ nhớ của tiến trình  Các vấn đề về bộ nhớ  Chuyển đổi đòa chỉ  Các công đoạn  Các mô hình chuyển đổi đòa chỉ  Vai trò Quản lý bộ nhớ của HĐH  Các yêu cầu  Các mô hình tổ chức bộ nhớ  Mô hình Liên tục  Mô hình Không liên tục 4/6/2008 Trần Hạnh Nhi 2  Chương trình cần được nạp vào Bộ nhớ chính để thi hành  CPU chỉ có thể truy xuất trực tiếp Main Memory  Chương trình khi được nạp vaò BNC sẽ được tổ chức theo cấu trúc của tiến trình tương ứng  Ai cấp phát BNC cho tiến trình ?  Chương trình nguồn sử dụng đòa chỉ symbolic  Tiến trình thực thi truy cập điạ chỉ thực trong BNC  Ai chuyển đổi đòa chỉ ? Tổng quan : Nhu cầu về bộ nhớ của tiến trình HĐH Bộ phận Quản lý Bộ nhớ Mô hình tổ chức ? Cơ chế hỗ trợ Chiến lược thực hiện 4/6/2008 Trần Hạnh Nhi 3 Tổng quan : Các vấn đề về Bộ nhớ  Cấp phát Bộ nhớ :  Uniprogramming : Không khó  Multiprogramming :  BNC giới hạn, N tiến trình ?  Bảovệ? Chiasẻ?  Tiến trình thay đổi kích thước ?  Tiến trình lớn hơn BNC ?  Chuyển đổi đòa chỉ tiến trình  Thời điểm chuyển đổi đòa chỉ ?  Công thức chuyển đổi ?  Phụ thuộc vào Mô hình tổ chức BNC ?  Cần sự hỗ trợ của phần cứng ?  Tiến trình thay đổi vò trí trong BNC ? 4/6/2008 Trần Hạnh Nhi 4 Ví dụ  Nếu nachos cần thêm không gian ?  Nếu nachos có lỗi và thực hiện thao tác ghi vào đòa chỉ 0x7100?  Khi nào gcc biết rằng nó thường trú tại 0x4000?  Nếu emacs cần nhiều bộ nhớ hơn dung lượng vật lý hiện có? OS nachos gcc emacs 0x0000 0x4000 0x3000 0x7000 0x9000 Môi trường đa nhiệm 4/6/2008 Trần Hạnh Nhi 5 C program: test.c Executable: test.exe Compiler Linker Loader Memory Object:test.o lib.o Caùc böôùc chuyeån ñoåi chöông trình Caùc böôùc chuyeån ñoåi source program -> .exe int x; int y; x = 12; y = 5; F(); A.C F() { printf(“Hi”); } B.C 0 // x 2 // y 4 // [0] = 12; 5 // [2] = 5; 6 // jmp F //external // object A.O B.O 0 -2 // F() … 0 // F() 3 // x 5 // y 7 // [3] = 12; 8 // [5] = 5; 9 // jmp 0 ? // F() ? // x ? // y ? // [?] = 12; ? // [?] = 5; ? // jmp ? OS Test.exe 4/6/2008 Trần Hạnh Nhi 8 Thuật ngữ  Đòa chỉ logic – còn gọi là đòa chỉ ảo , là tất cả các đòa chỉ do bộxửlýtạo ra  Đòa chỉ physic - là đòa chỉ thực tế mà trình quản lý bộ nhớ nhìn thấy và thao tác  Không gian đòa chỉ – là tập hợp tất cả các đòa chỉ ảo phát sinh bởi một chương trình  Không gian vật lý – là tập hợp tất cả các đòa chỉ vật lý tương ứng với các đòa chỉ ảo 4/6/2008 Trn Hnh Nhi 9 Nhu cau boọ nhụự cuỷa tieỏn trỡnh Tintrỡnhgmcú: code segment read from program file by exec usually read-only can be shared data segment initialized global variables (0 / NULL) uninitialized global variables heap dynamic memory e.g., allocated using malloc grows against higher addresses stack segment variables in a function stored register states (e.g. calling function EIP) grows against lower addresses system data segment (PCB) segment pointers pid program and stack pointers Stack cho cỏc thread process A low address high address 8048314 <add>: 8048314: push %ebp 8048315: mov %esp,%ebp 8048317: mov 0xc(%ebp),%eax 804831a: add 0x8(%ebp),%eax 804831d: pop %ebp 804831e: ret 804831f <main>: 804831f: push %ebp 8048320: mov %esp,%ebp 8048322: sub $0x18,%esp 8048325: and $0xfffffff0,%esp 8048328: mov $0x0,%eax 804832d: sub %eax,%esp 804832f: movl $0x0,0xfffffffc(%ebp) 8048336: movl $0x2,0x4(%esp,1) 804833e: movl $0x4,(%esp,1) 8048345: call 8048314 <add> 804834a: mov %eax,0xfffffffc(%ebp) 804834d: leave 804834e: ret 804834f: nop code segment system data segment (PCB) data segment initialized variables uninitialized variables data segment heap stack u n u s e d m e m o r y possible stacks for more threads 4/6/2008 Trần Hạnh Nhi 10 Logical and Physical Address Spaces [...]... Organization) Cấp phát vùng nhớ vật lý sao cho hiệu quả Và dễ dàng chuyển đổi chương trình qua lại giữa BNC và BNP 4 /6/ 2008 Trần Hạnh Nhi 20 Các mô hình tổ chức bộ nhớ Cấp phát Liên tục (Contigous Allocation) Linker – Loader Base & Bound Cấp phát Không liên tục (Non Contigous Allocation) Segmentation Paging 4 /6/ 2008 Trần Hạnh Nhi 21 Cấp phát Liên tục (Contigous Allocation) Nguyên tắc : Chương trình được nạp... trình: 1 2 3 4 5 4 /6/ 2008 Relocation Protection Sharing Logical Organization Physical Organization Trần Hạnh Nhi 15 Tái đònh vò (Relocation) Không biết trước chương trình sẽ được nạp vào BN ở vò trí nào để xử lý Một tiến trình có thể được di dời trong bộ nhớ sau khi đã nạp C Tiến trình tăng trưởng ? HĐH sắp xếp lại các tiến trình để có thể sử dụng BNC hiệu qủa hơn 4 /6/ 2008 Trần Hạnh Nhi 16 Bảo vệ (Protection)...Truy xuất bộ nhớ Đòa chỉ của Instruction và data trong program source code là symbolic: goto errjmp; X = A + B; Những đòa chỉ symbolic này cần được liên kết (bound) với các đòa chỉ thực trong bộ nhớ vật lý trước khi thi hành code Address binding: ánh xạ đòa chỉ từ không gian đòa chỉ (KGĐC) này vào KGĐC khác Thời điểm thực hiện address binding ? compile time load time execution time 4 /6/ 2008 Trần... đến khi thi hành Khi đó ai tính toán đòa chỉ tuyệt đối ? Phần cứng : MMU 4 /6/ 2008 Trần Hạnh Nhi 12 Chuyển đổi đòa chỉ MMU gcc Load Store CPU Translation box virtual address data 4 /6/ 2008 legal addr? Illegal? Physical address Physical memory error Trần Hạnh Nhi 13 CPU, MMU and Memory 4 /6/ 2008 Trần Hạnh Nhi 14 Yêu cầu quản lý bộ nhớ Tăng hiệu suất sử dụng CPU Cần hỗ trợ Multiprogramming Lưu trữ cùng lúc... CTDL để theo dõi các partition tự do 4 /6/ 2008 Trần Hạnh Nhi 25 Nhận xét Fixed Partitioning Sử dụng BN không hiệu quả internal fragmentation : kích thước chương trình không đúng bằng kích thước partition Mức độ đa chương của hệ thống (Số tiến trình được nạp) bò giới hạn bởi số partitions P1 (2M) internal frag P2 (4M) 3M 8M internal frag 4 /6/ 2008 Trần Hạnh Nhi 26 Dynamic Partitioning BNC không được phân... tiến trình truy cập đến các vò trí nhớ đã cấp cho tiến trình khác (khi chưa có phép) Không thể thực hiện việc kiểm tra hợp lệ tại thời điểm biên dòch hay nạp, vì chương trình có thể được tái đònh vò Thực hiện kiểm tra tại thời điểm thi hành Cần sự hỗ trợ của phần cứng 4 /6/ 2008 Trần Hạnh Nhi 17 Chia sẻ (Sharing) Cần cho phép nhiều tiến trình tham chiếu đến cùng một vùng nhớ mà không tổn hại đến tính an... tục (Contigous Allocation) Nguyên tắc : Chương trình được nạp toàn thể vào BNC để thi hành Cần một vùng nhớ liên tục, đủ lớn để chứa Chương trình Không gian đòa chỉ : liên tục Không gian vật lý : có thể tổ chức Fixed partition Variable partition 2 mô hình đơn giản Linker – Loader Base & Bound 4 /6/ 2008 Trần Hạnh Nhi 22 Fixed Partitioning Phân chia KGVL thành các partitions Có 2 cách phân chia partitions... 4 /6/ 2008 Trần Hạnh Nhi 18 Tổ chức logic (Logical Organization) Người dùng viết chương trình gồm nhiều module, với các yêu cầu bảo vệ cho từng module có thể khác nhau: instruction modules : execute-only data modules : read-only hay read/write một số module là private, số khác có thể là public OS cần hỗ trợ các cơ chế có thể phản ánh mô hình logic của chng trình 4 /6/ 2008 Trần Hạnh Nhi 19 Tổ chức vật lý. .. lại các đòa chỉ logic Vò trí base của tiến trình trong bộ nhớ xác đònh được vào thời điểm nạp : đòa chỉ physic = đòa chỉ logic + base 4 /6/ 2008 Trần Hạnh Nhi 34 Nhận xét mô hình Linker-Loader Không cần sự hỗ trợ phần cứng để chuyển đổi đòa chỉ Loader thực hiện Bảo vệ ? Không hỗ trợ Dời chuyển sau khi nạp ? Không hỗ trợ tái đònh vò Phải nạp lại ! 4 /6/ 2008 Trần Hạnh Nhi 35 Mô hình Base & Bound OS Test.exe... 4 /6/ 2008 Trần Hạnh Nhi 11 Thời điểm kết buộc đòa chỉ ? Có thể thực hiện việc kết buộc đòa chỉ tại 1 trong 3 thời điểm : Compile-time: Phát sinh đòa chỉ tuyệt đối Phải biết trước vò trí nạp chương trình Phải biên dòch lại chương trình khi vò trí nạp thay đổi Load-time: Khi biên dòch chỉ phát sinh đòa chỉ tương đối Khi nạp, biết vò trí bắt đầu sẽ tính lại đòa chỉ tuyệt đối Phải tái nạp khi vò trí bắt đầu . Nhu cầu về bộ nhớ của tiến trình HĐH Bộ phận Quản lý Bộ nhớ Mô hình tổ chức ? Cơ chế hỗ trợ Chiến lược thực hiện 4 /6/ 2008 Trần Hạnh Nhi 3 Tổng quan : Các vấn đề về Bộ nhớ  Cấp phát Bộ nhớ :  Uniprogramming. Vai trò Quản lý bộ nhớ của HĐH  Các yêu cầu  Các mô hình tổ chức bộ nhớ  Mô hình Liên tục  Mô hình Không liên tục 4 /6/ 2008 Trần Hạnh Nhi 2  Chương trình cần được nạp vào Bộ nhớ chính để. 4 /6/ 2008 Trần Hạnh Nhi 1 Bài giảng 6 : Quản lý bộ nhớ  Tổng quan  Nhu cầu bộ nhớ của tiến trình  Các vấn đề về bộ nhớ  Chuyển đổi đòa chỉ  Các công đoạn 

Ngày đăng: 08/08/2014, 08:22

Tài liệu cùng người dùng

Tài liệu liên quan