Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 65 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
65
Dung lượng
1,99 MB
Nội dung
Chương Quản lý nhớ Khái niệm sở Các kiểu đòa nhớ (physical address , logical address) Chuyển đổi đòa nhớ Overlay swapping Mô hình quản lý nhớ đơn giản ‟ ‟ ‟ ‟ ‟ Fixed partitioning Dynamic partitioning Cơ chế phân trang (paging) Cơ chế phân đoạn (segmentation) Segmentation with paging Khoa KTMT Khái niệm sở Chương trình phải mang vào nhớ đặt tiến trình để xử lý Input Queue ‟ Một tập hợp tiến trình đóa mà chờ để mang vào nhớ để thực thi User programs trải qua nhiều bước trước xử lý Khoa KTMT Khái niệm sở Quản lý nhớ công việc hệ điều hành với hỗ trợ phần cứng nhằm phân phối, xếp process nhớ cho hiệu Mục tiêu cần đạt nạp nhiều process vào nhớ tốt (gia tăng mức độ đa chương) Trong hầu hết hệ thống, kernel chiếm phần cố đònh nhớ; phần lại phân phối cho process Các yêu cầu việc quản lý nhớ ‟ ‟ ‟ ‟ ‟ Cấp phát nhớ cho process Tái đònh vò (relocation): swapping,… Bảo vệ: phải kiểm tra truy xuất nhớ có hợp lệ không Chia sẻ: cho phép process chia sẻ vùng nhớ chung Kết gán đòa nhớ luận lý user vào đòa thực Khoa KTMT Các kiểu đòa nhớ Đòa vật lý (physical address) (đòa thực) vò trí thực nhớ Đòa luận lý (logical address) vò trí nhớ diễn tả chương trình ( gọi đòa ảo virtual address) ‟ Các trình biên dòch (compiler) tạo mã lệnh chương trình mà tham chiếu nhớ đòa luận lý ‟ Đòa tương đối (relative address) (đòa khả tái đònh vò, relocatable address) kiểu đòa luận lý đòa biểu diễn tương đối so với vò trí xác đònh chương trình Ví dụ: 12 byte so với vò trí bắt đầu chương trình,… ‟ Đòa tuyệt đối (absolute address): đòa tương đương với đòa thực Khoa KTMT Nạp chương trình vào nhớ Bộ linker: kết hợp object module thành file nhò phân khả thực thi gọi load module Bộ loader: nạp load module vào nhớ System library dynamic linking Khoa KTMT static linking System library Cơ chế thực linking Module A CALL B L1 Return 0 Module A JMP “L” L Return L Module B Module B CALL C M1 length L relocatable object modules length M JMP “L+M” load module L M Return Return LM Module C Module C length N LMN1 Return N Return Khoa KTMT Chuyển đổi đòa Chuyển đổi đòa chỉ: trình ánh xạ đòa từ không gian đòa sang không gian đòa khác Biểu diễn đòa nhớ ‟ Trong source code: symbolic (các biến, hằng, pointer,…) ‟ Thời điểm biên dòch: thường đòa khả tái đònh vò Ví dụ: a vò trí 14 bytes so với vò trí bắt đầu module ‟ Thời điểm linking/loading: đòa thực Ví dụ: liệu nằm đòa nhớ thực 2030 int i; goto p1; 2000 250 2250 p1 symbolic address relocatable address physical memory Khoa KTMT Chuyển đổi đòa (tt) Đòa lệnh (instruction) liệu (data) chuyển đổi thành đòa thực xảy ba thời điểm khác ‟ Compile time: biết trước đòa nhớ chương trình kết gán đòa tuyệt đối lúc biên dòch Ví dụ: chương trình COM MS-DOS Khuyết điểm: phải biên dòch lại thay đổi đòa nạp chương trình ‟ Load time: Vào thời điểm loading, loader phải chuyển đổi đòa khả tái đònh vò thành đòa thực dựa đòa (base address) Đòa thực tính toán vào thời điểm nạp chương trình phải tiến hành reload đòa thay đổi Khoa KTMT Sinh đòa tuyệt đối vào thời điể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 Sinh đòa thực vào thời điểm nạp Relative (relocatable) addresses Symbolic addresses PROGRAM 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 Phân đoạn Dùng chế phân đoạn để quản lý nhớ có hỗ trợ user view ‟ Không gian đòa ảo tập đoạn, đoạn có tên kích thước riêng ‟ Một đòa luận lý đònh vò tên đoạn độ dời (offset) bên đoạn (so sánh với phân trang!) Khoa KTMT 51 Phân đoạn (tt) logical address space physical memory space segment segment segment segment Khoa KTMT 52 Cài đặt phân đoạn Đòa luận lý cặp giá trò (segment number, offset) Bảng phân đoạn (segment table): gồm nhiều mục, mục chứa ‟ base, chứa đòa khởi đầu segment nhớ ‟ limit, xác đònh kích thước segment Segment-table base register (STBR): trỏ đến vò trí bảng phân đoạn nhớ Segment-table length register (STLR): số lượng segment chương trình Một số segment s hợp lệ s < STLR Khoa KTMT 53 Một ví dụ phân đoạn stack 1400 procedure procedure segment segment function sqrt symbol table segment main program limit base 1000 1400 400 6300 400 4300 1100 3200 1000 4700 segment table segment segment 2400 3200 stack 4300 main 4700 symbol table 5700 6300 logical address space function sqrt physical memory space Khoa KTMT 54 Phần cứng hỗ trợ phân đoạn segment table s limit base CPU s d yes + physical memory no trap; addressing error Khoa KTMT 55 Chuyển đổi đòa chế phân đoạn Ví dụ Khoa KTMT 56 Chia sẻ đoạn limit base 25286 43062 4425 68348 editor data segment segment editor segment table process P1 logical address space process P1 68348 limit base 25286 43062 8850 90003 data segment logical address space process P2 data 72773 editor segment 43062 segment table process P2 90003 data 98853 physical memory Khoa KTMT 57 3.Kết hợp phân trang phân đoạn Kết hợp phân trang phân đoạn nhằm kết hợp ưu điểm đồng thời hạn chế khuyết điểm phân trang phân đoạn: ‟ Vấn đề phân đoạn: Nếu đoạn lớn không nạp vào nhớ ‟ Ý tưởng giải quyết: paging đoạn, cần giữ nhớ page đoạn cần Logic Addr = Khoa KTMT 58 3.Kết hợp phân trang phân đoạn Khoa KTMT 59 3.Kết hợp phân trang phân đoạn Khoa KTMT 60 Bài Tập Giả sử nhớ phân thành phân vùng có kích thước 600K, 500K, 200K, 300K ( theo thứ tự ), cho biết tiến trình có kích thước 212K, 417K, 112K 426K ( theo thứ tự ) cấp phát nhớ nào, sử dụng : a) Thuật tốn First fit b) Thuật tốn Best fit c) Thuật tốn Worst fit Thuật tốn cho phép sử dụng nhớ hiệu qủa trường hợp ? Khoa KTMT 61 Bài Tập Xét khơng gian có nhớ luận lý kích thước trang 1kb Tính số trang độ dời (offset) địa sau: a) 2.375 b) 19.366 c) 30.000 d) 256 e) 16.385 Khoa KTMT 62 Bài Tập Xét khơng gian có nhớ luận lý có 64 trang, trang có 1024 từ, từ byte ánh xạ vào nhớ vật lý có 32 trang: a) Địa nhớ vật lý có bit? b) Địa nhớ luận lý có bit? c) Có mục bảng phân trang? Mỗi mục chứa bit? Khoa KTMT 63 Bài tập Xét hệ thống sử dụng kỹ thuật phân trang, với bảng trang lưu trữ nhớ a) Nếu thời gian cho lần truy xuất nhớ bình thường 100 nanoseconds, thời gian cho thao tác truy xuất nhớ hệ thống ? b) Nếu sử dụng TLBs với hit-ratio ( tỉ lệ tìm thấy) 85%, thời gian để tìm TLBs 20 nanosecond, tính thời gian truy xuất nhớ hệ thống ( effective memory reference time) Khoa KTMT 64 Bài tập Xét bảng phân đoạn sau : Segment Base Length 219 600 2300 14 90 100 1327 580 1952 96 Cho biết địa vật lý tương ứng với địa logic sau : a 0,430 b 1,100 c 2,500 d 3,400 e 4,112 Khoa KTMT 65 [...]... Rất hiệu quả trong trường hợp tồn tại khối lượng lớn mã chương trình có tần suất sử dụng thấp, không được sử dụng thường xuyên (ví dụ các thủ tục xử lý lỗi) Hỗ trợ từ hệ điều hành ‟ Thông thường, user chòu trách nhiệm thiết kế và hiện thực các chương trình có dynamic loading ‟ Hệ điều hành chủ yếu cung cấp một số thủ tục thư viện hỗ trợ, tạo điều kiện dễ dàng hơn cho lập trình viên Khoa KTMT 16 Cơ... process đó Cơ chế này được điều khiển bởi người sử dụng (thông qua sự hỗ trợ của các thư viện lập trình) chứ không cần sự hỗ trợ của hệ điều hành Khoa KTMT 17 Cơ chế overlay (tt) Pass 1 70 K 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 nạp và thực thi pass 2 pass 1 80K 70 K Khoa KTMT 18 Cơ chế... partitioning Khi khởi động hệ thống, bộ nhớ chính được chia thành nhiều phần rời nhau gọi là các partition có kích thước bằng nhau hoặc khác nhau Process nào có kích thước nhỏ hơn hoặc bằng kích thước partition thì có thể được nạp vào partition đó Nếu chương trình có kích thước lớn hơn partition thì phải dùng cơ chế overlay Nhận xét ‟ Không hiệu quả do bò phân mảnh nội: một chương trình dù lớn hay nhỏ... tục có thể dùng cơ chế kết khối (compaction) để gom lại thành vùng nhớ liên tục Phân mảnh nội (internal fragmentation) ‟ Kích thước vùng nhớ được cấp phát có thể hơi lớn hơn vùng nhớ yêu cầu Ví dụ: cấp một khoảng trống 18,464 bytes cho một process yêu cầu 18,462 bytes ‟ Hiện tượng phân mảnh nội thường xảy ra khi bộ nhớ thực được chia thành các khối kích thước cố đònh (fixed-sized block) và các... 1 ‟ Gán mỗi process vào partition nhỏ nhất phù hợp với nó ‟ Có hàng đợi cho mỗi partition ‟ Giảm thiểu phân mảnh nội ‟ Vấn đề: có thể có một số hàng đợi trống không (vì không có process với kích thước tương ứng) và hàng đợi dày đặc Khoa KTMT 25 Chiến lược placement (tt) Partition có kích thước không bằng nhau: giải pháp 2 ‟ Chỉ có một hàng đợi chung cho mọi partition ‟ Khi cần nạp một process vào... 1.Cơ chế phân trang (tt) Trước khi và sau khi cấp phát cho Process mới Khoa KTMT 35 B) Cài đặt bảng trang (Paging hardware) Bảng phân trang thường được lưu giữ trong bộ nhớ chính ‟ Mỗi process được hệ điều hành cấp một bảng phân trang ‟ Thanh ghi page-table base (PTBR) trỏ đến bảng phân trang ‟ Thanh ghi page-table length (PTLR) biểu thò kích thước của bảng phân trang (có thể được dùng trong cơ chế bảo... khoảng 512 byte đến 16MB Bộ nhớ luận lý (logical memory) hay không gian đòa chỉ luận lý là tập mọi đòa chỉ luận lý mà một chương trình bất kỳ có thể sinh ra page ‟ Ví dụ „ MOV REG,1000 //1000 là một đòa chỉ luận lý Bảng phân trang (page table) để ánh xạ đòa chỉ luận lý thành đòa chỉ thực Khoa KTMT 29 1.Cơ chế phân trang (tt) frame number page number 0 0 0 1 1 4 2 2 3 3 3 5 1 logical memory page... nay, ít hệ thống sử dụng cơ chế swapping trên Khoa KTMT 19 Minh họa cơ chế swapping Khoa KTMT 20 Mô hình quản lý bộ nhớ Trong chương này, mô hình quản lý bộ nhớ là một mô hình đơn giản, không có bộ nhớ ảo Một process phải được nạp hoàn toàn vào bộ nhớ thì mới được thực thi (ngoại trừ khi sử dụng cơ chế overlay) Các cơ chế quản lý bộ nhớ sau đây rất ít (hầu như không còn) được dùng trong các hệ thống... gọi là đòa chỉ ảo Việc ánh xạ giữa hai đòa chỉ được thực thi bởi Memory Management Unit (MMU) Khoa KTMT 12 Tái đònh vò sử dụng relocation register relocation register 70 00 CPU logical address 642 + MMU Khoa KTMT physical address 76 42 memory 13 Liên kết động(Dynamic linking) Quá trình link đến một module ngoài (external module) được thực hiện sau khi đã tạo xong load module (i.e file có thể thực... partitioning Số lượng partition không cố đònh và partition có thể có kích thước khác nhau Mỗi process được cấp phát chính xác dung lượng bộ nhớ cần thiết Gây ra hiện tượng phân mảnh ngoại Khoa KTMT 27 Chiến lược placement Dùng để quyết đònh cấp phát khối bộ nhớ trống nào cho một process Mục tiêu: giảm chi phí compaction Các chiến lược placement ‟ Best-fit: chọn khối nhớ trống nhỏ nhất ‟ First-fit: ... gian nhớ cấp cho process Cơ chế điều khiển người sử dụng (thông qua hỗ trợ thư viện lập trình) không cần hỗ trợ hệ điều hành Khoa KTMT 17 Cơ chế overlay (tt) Pass 70 K Pass 80K Symbol table 20K... lượng lớn mã chương trình có tần suất sử dụng thấp, không sử dụng thường xuyên (ví dụ thủ tục xử lý lỗi) Hỗ trợ từ hệ điều hành ‟ Thông thường, user chòu trách nhiệm thiết kế thực chương trình... nhớ công việc hệ điều hành với hỗ trợ phần cứng nhằm phân phối, xếp process nhớ cho hiệu Mục tiêu cần đạt nạp nhiều process vào nhớ tốt (gia tăng mức độ đa chương) Trong hầu hết hệ thống, kernel