Bài giảng Hệ điều hành - Chương 7.1: Quản lý bộ nhớ giúp người học hiểu được các khái niệm cơ sở về bộ nhớ, hiểu được các kiểu địa chỉ nhớ và cách chuyển đổi giữa các kiểu này, hiểu được các cơ chế và mô hình quản lý bộ nhớ. Mời các bạn cùng tham khảo.
HỆ ĐIỀU HÀNH Chương – Quản lý nhớ (1) 14/03/2017 1/17/2018 Copyrights 2017 CE-UIT All Rights Reserved Câu hỏi ôn tập chương Nêu điều kiện để thực giải thuật Banker? Nêu bước giải thuật Banker? Nêu bước giải thuật yêu cầu tài nguyên? Nêu bước giải thuật phát deadlock? Khi deadlock xảy ra, hệ điều hành làm để phục hồi? Dựa yếu tổ để chấm dứt trình bị deadlock?? 1/17/2018 Copyrights 2017 CE-UIT All Rights Reserved Câu hỏi ôn tập chương (tt) Cho hệ thống có tiến trình P1 đến P4 loại tài nguyên R1 (3), R2 (2) R3 (2) P1 giữ R1 yêu cầu R2; P2 giữ R2 yêu cầu R1 R3; P3 giữ R1 yêu cầu R2; P4 giữ R3 yêu cầu R1 Vẽ đồ thị tài nguyên cho hệ thống này? Deadlock? Chuỗi an toàn? (nếu có) 1/17/2018 Copyrights 2017 CE-UIT All Rights Reserved Câu hỏi ơn tập chương (tt) Tìm Need? Hệ thống có an tồn khơng? Nếu P1 u cầu (0,4,2,0) cấp phát cho không? 1/17/2018 Copyrights 2017 CE-UIT All Rights Reserved Mục tiêu chương 7-1 Hiểu khái niệm sở nhớ Hiểu kiểu địa nhớ cách chuyển đổi kiểu Hiểu chế mơ hình quản lý nhớ 1/17/2018 Copyrights 2017 CE-UIT All Rights Reserved Nội dung chương 7-1 Khái niệm sở Các kiểu địa nhớ Chuyển đổi địa nhớ Overlay swapping Mơ hình quản lý nhớ 1/17/2018 Copyrights 2017 CE-UIT All Rights Reserved 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ý 1/17/2018 Copyrights 2017 CE-UIT All Rights Reserved Khái niệm sở (tt) 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, sắp 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 còn lại phân phối cho process 1/17/2018 Copyrights 2017 CE-UIT All Rights Reserved Khái niệm sở (tt) 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 1/17/2018 Copyrights 2017 CE-UIT All Rights Reserved Cấu trúc liệu cho giải thuật Banker Địa vật lý (physical address) (địa thực) vị trí thực nhớ chính Địa luận lý (logical address) vị trí nhớ diễn tả chương trình (còn 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à mọi 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 1/17/2018 Copyrights 2017 CE-UIT All Rights Reserved 10 Cơ chế phủ lắp (tt) Pass 70K Pass 80K Symbol table 20K Đơn vị: byte symbol table 20K common routines 30K overlay driver 10K Common routines 30K Assembler Total memory available = 150KB pass pass 80K 70K 1/17/2018 nạp và thực thi Copyrights 2017 CE-UIT All Rights Reserved 23 Cơ chế hốn vị (swapping) Một process tạm thời bị swap khỏi nhớ chính lưu hệ thống lưu trữ phụ Sau đó, process nạp lại vào nhớ để tiếp tục trình thực thi Swapping policy: hai ví dụ Round-robin: swap out P1 (vừa tiêu thụ hết quantum nó), swap in P2 , thực thi P3 ,… Roll out, roll in: dùng chế định thời theo độ ưu tiên (priority-based scheduling) Process có độ ưu tiên thấp bị swap out nhường chỗ cho process có độ ưu tiên cao đến nạp vào nhớ để thực thi Hiện nay, ít hệ thống sử dụng chế swapping 1/17/2018 Copyrights 2017 CE-UIT All Rights Reserved 24 Minh họa chế hoán vị 1/17/2018 Copyrights 2017 CE-UIT All Rights Reserved 25 Mơ hình quản lý nhớ Trong chương này, mơ hình quản lý nhớ mơ hình đơn giản, khơng có nhớ ảo Một process phải nạp hoàn tồn vào nhớ thực thi (ngoại trừ sử dụng chế overlay) Các chế quản lý nhớ sau ít (hầu không còn) dùng hệ thống đại Phân chia cố định (fixed partitioning) Phân chia động (dynamic partitioning) Phân trang đơn giản (simple paging) Phân đoạn đơn giản (simple segmentation) 1/17/2018 Copyrights 2017 CE-UIT All Rights Reserved 26 Mơ hình quản lý nhớ (tt) 1/17/2018 Copyrights 2017 CE-UIT All Rights Reserved 27 Phân mảnh (fragmentation) Phân mảnh ngoại (external fragmentation) Kích thước không gian nhớ còn trống đủ để thỏa mãn yêu cầu cấp phát, nhiên không gian nhớ khơng liên tục ⇒ dùng 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ấp phát lớn vùng nhớ yêu cầu Ví dụ: cấp khoảng trống 18,464 bytes cho process yêu cầu 18,462 bytes Hiện tượng phân mảnh nội thường xảy nhớ thực chia thành khối kích thước cố định (fixed-sized block) process cấp phát theo đơn vị khối Ví dụ: chế phân trang (paging) 1/17/2018 Copyrights 2017 CE-UIT All Rights Reserved 28 Phân mảnh nội operating system Yêu cầu 18,462 bytes !!! (used) hole kích thước 18,464 bytes Cần quản lý khoảng trống bytes !?! OS cấp phát hẳn khối18,464 bytes cho process dư bytes không dùng! 1/17/2018 Copyrights 2017 CE-UIT All Rights Reserved 29 Fixed partitioning Khi khởi động hệ thống, nhớ chính chia thành nhiều phần rời gọi partition có kích thước bằng hoặc khác Process có kích thước nhỏ hoặc bằng kích thước partition nạp vào partition Nếu chương trình có kích thước lớn partition phải dùng chế overlay Nhận xét Không hiệu bị phân mảnh nội: chương trình dù lớn hay nhỏ cấp phát trọn partition 1/17/2018 Copyrights 2017 CE-UIT All Rights Reserved 30 Chiến lược placement Partition có kích thước bằng Nếu còn partition trống ⇒ process nạp vào partition Nếu khơng còn partition trống, có process bị blocked ⇒ swap process nhớ phụ nhường chỗ cho process Partition có kích thước khơng bằng nhau: giải pháp Gán process vào partition nhỏ phù hợp với Có hàng đợi cho partition Giảm thiểu phân mảnh nội Vấn đề: có số hàng đợi trống khơng (vì khơng có process với kích thước tương ứng) hàng đợi dày đặc 1/17/2018 Copyrights 2017 CE-UIT All Rights Reserved 31 Chiến lược placement (tt) Partition có kích thước không bằng nhau: giải pháp Chỉ có hàng đợi chung cho mọi partition Khi cần nạp process vào nhớ chính ⇒ chọn partition nhỏ còn trống 1/17/2018 Copyrights 2017 CE-UIT All Rights Reserved 32 Dynamic partitioning Số lượng partition không cố định partition có kích thước khác Mỗi process cấp phát chính xác dung lượng nhớ cần thiết Gây tượng phân mảnh ngoại 1/17/2018 Copyrights 2017 CE-UIT All Rights Reserved 33 Chiến lược placement Dùng để định cấp phát khối nhớ trống cho 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ỏ First-fit: chọn khối nhớ trống phù hợp kể từ đầu nhớ Next-fit: chọn khối nhớ trống phù hợp kể từ vị trí cấp phát cuối cùng Worst-fit: chọn khối nhớ trống lớn 1/17/2018 Copyrights 2017 CE-UIT All Rights Reserved 34 Tóm tắt lại nội dung buổi học Khái niệm sở Các kiểu địa nhớ Chuyển đổi địa nhớ Overlay swapping Mơ hình quản lý nhớ 1/17/2018 Copyrights 2017 CE-UIT All Rights Reserved 35 Bài tập Giả sử nhớ chính cấp phát phân vùng có kích thước 600K, 500K, 200K, 300K (theo thứ tự), sau thực thi xong, 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: Thuật toán First fit, Best fit, Next fit, Worst fit? Thuật toán cho phép sử dụng nhớ hiệu trường hợp 1/17/2018 Copyrights 2017 CE-UIT All Rights Reserved 36 Bài tập 1/17/2018 Copyrights 2017 CE-UIT All Rights Reserved 37 ... đến routine external module Lúc thực thi, stub thực thi lần đầu (do process gọi routine lần đầu), stub nạp routine vào nhớ, tự thay bằng địa routine routine thực thi Các lần gọi routine... 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... 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 1/17/2018 Copyrights 2017 CE-UIT All Rights Reserved 22 Cơ chế