Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 34 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
34
Dung lượng
659,85 KB
Nội dung
Bộ Nhớ Thực Các kiểu địa nhớ Chuyển đổi địa nhớ Overlay swapping Vấn đề cấp phát nhớ liên tục (contiguous memory allocation) Giải pháp fixed partitioning Giải pháp dynamic partitioning CuuDuongThanCong.com https://fb.com/tailieudientucntt Quản lý nhớ Kernel chiếm vùng cố định nhớ, vùng lại dành để cấp phát cho process Cấp phát vùng nhớ cho process cho hệ thốâng hoạt động hiệu Vd: Nạp nhiều process vào nhớ tốt để gia tăng mức độ multiprogramming Quản lý nhớ Cấp phát vùng nhớ cho process Bảo vệ: 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 Chuyển đổi địa luận lý sang địa vật lyù CuuDuongThanCong.com https://fb.com/tailieudientucntt Layout nhớ Operating System Operating System Process A Current Program Process C Process B Uni-programming CuuDuongThanCong.com Multi-programming https://fb.com/tailieudientucntt Các kiểu địa nhớ (1/2) Địa vật lý physical (memory) address địa mà CPU, hay MMU (nếu có), gửi đến nhớ Địa luận lý (logical address) địa mà trình sinh Các địa sinh trình biên dịch (compiler) tương đối hay khả tái định vị (relocatable): compiler giả thiết không gian địa đơn vị biên dịch (compilation unit) địa tuyệt đối: kết biên dịch nạp vào nhớ để thực thi; dùng CuuDuongThanCong.com https://fb.com/tailieudientucntt Các kiểu địa nhớ (2/2) Khi lệnh thực thi, địa luận lý phải chuyển đổi thành địa vật lý Sự chuyển đổi thường có hỗ trợ phần cứng để đạt hiệu cao CuuDuongThanCong.com https://fb.com/tailieudientucntt Khơng gian nhớ q trình CuuDuongThanCong.com https://fb.com/tailieudientucntt Từ mã nguồn đến file thực thi Linker: kết hợp object module thành file thực thi tái định vị địa tương đối phân giải external reference kết hợp object module thành load module (file nhị phân khả thực thi) System static linking library dynamic linking CuuDuongThanCong.com System library https://fb.com/tailieudientucntt Thực (static) linking Linker chuyển đổi địa tương đối sang địa tuyệt ñoái Module A CALL B L1 Return L1 L length M Module A JMP “L” Module B CALL C M1 length L relocatable object modules Return Module B JMP “L+M” load module L M Return Return LM Module C Module C length N LMN1 Return N Return CuuDuongThanCong.com https://fb.com/tailieudientucntt 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…) Vào thời điểm biên dịch: thường địa tương đối Ví dụ: a vị trí 14 byte so với vị trí bắt đầu module Thời điểm linking/loading: địa tuyệt đối int i; goto p1; 2000 250 2250 p1 symbolic address relative address physical memory CuuDuongThanCong.com https://fb.com/tailieudientucntt Sinh địa vật lý Trong thực thi Địa chuyển đổi động thực thi Không gian địa vật lý noncontiguous Cần có phần cứng để chuyển đổi địa ảo sang địa vật lý nhanh “Phân trang” (“paging”) “Phân đoạn” (“segmentation”) Rất phổ biến CuuDuongThanCong.com https://fb.com/tailieudientucntt 10 Kỹ thuật overlay (1/2) Chỉ giữ nhớ lệnh liệu cần thiết, giải phóng lệnh/dữ liệu chưa không cần dùng đến Kỹ thuật hữu dụng kích thước process lớn kích thước vùng nhớ cấp cho Quá trình tự điều khiển việc overlay (có hỗ trợ thư viện lập trình) Có thể xem tiền thân kỹ thuật “bộ nhớ ảo” CuuDuongThanCong.com https://fb.com/tailieudientucntt 20 Kỹ thuật overlay (2/2) 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 nạp thực thi pass pass 80K 70K CuuDuongThanCong.com https://fb.com/tailieudientucntt 21 Swapping Cơ chế: di chuyển process khỏi nhớ lưu nhớ phụ (swap out) Khi thích hợp, nạp process vào nhớ (swap in) để tiếp tục thực thi Chính sách: 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 định thời theo độ ưu tiên (prioritybased scheduling) Process có độ ưu tiên thấp bị swap out nhường chỗ cho process có độ ưu tiên cao vừa đến CuuDuongThanCong.com https://fb.com/tailieudientucntt 22 Swapping Cơ chế CuuDuongThanCong.com https://fb.com/tailieudientucntt 23 Vấn đề cấp phát nhớ liên tục Trong phần lại chương này, mô hình quản lý nhớ mô hình đơn giản [không dùng “bộ nhớ ảo”!] Một process phải nạp hoàn toàn vào nhớ (ngoại trừ dùng kỹ thuật overlay) nằm liên tục (contiguous) Sẽ thảo luận giải pháp cấp phát nhớ sau Phân chia cố định (fixed partitioning) Phân chia động (dynamic partitioning) CuuDuongThanCong.com https://fb.com/tailieudientucntt 24 Hiện tượng phân mảnh Phân mảnh ngoại (external fragmentation) Vùng nhớ trống đủ lớn để thỏa mãn yêu cầu cấp phát, lại không liên tục Dùng kết khối (compacting), có thể, để gom lại thành vùng nhớ liên tục Phân mảnh nội (internal fragmentation) 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 byte cho process yêu cầu 18.462 byte 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 CuuDuongThanCong.com https://fb.com/tailieudientucntt 25 Phân mảnh nội operating system yêu cầu 18.462 byte (used) hole kích thước 18.464 byte Để tránh overhead quản lý byte, OS cấp phát hẳn khối 18.464 byte cho process dư byte không dùng CuuDuongThanCong.com https://fb.com/tailieudientucntt 26 Fixed partitioning (1) Khi khởi động hệ thống, nhớ chia thành nhiều phần cố định rời nhau, gọi partition, có kích thước khác Process có kích thước nhỏ kích thước partition nạp vào partition CuuDuongThanCong.com https://fb.com/tailieudientucntt 27 Giải pháp fixed partitioning (2) Nếu process có kích thước lớn partition phải dùng kỹ thuật overlay Không hiệu bị phân mảnh nội: trình dù lớn hay nhỏ cấp phát trọn partition CuuDuongThanCong.com https://fb.com/tailieudientucntt 28 Chiến lược placement fixed partitioning (1/3) Trường hợp partition có kích thước Nếu partition trống process nạp vào partition Nếu không partition trống, có process bị blocked swap out process nhớ phụ, dành partition cho process CuuDuongThanCong.com https://fb.com/tailieudientucntt 29 Chiến lược placement fixed partitioning (2/3) Trường hợp partition có kích thước không Giải pháp Gán process vào partition nhỏ (trống hay chưa trống) đủ chứa [best fit] Có hàng đợi cho partition Điểm yếu giải pháp: có số hàng đợi trống (vì kích thước partition ‘quá lớn’ process) số hàng đợi dài CuuDuongThanCong.com https://fb.com/tailieudientucntt 30 Chiến lược placement fixed partitioning (3/3) Trường hợp partition có kích thước không Giải pháp Khi cần nạp process vào nhớ chọn partition nhỏ trống đủ chứa [best fit] Chỉ có hàng đợi chung cho partition CuuDuongThanCong.com https://fb.com/tailieudientucntt 31 Giải pháp dynamic partitioning Số lượng vị trí partition không cố định partition có kích thước khác Mỗi process cấp phát xác dung lượng nhớ cần thiết Gây tượng phân mảnh ngoại CuuDuongThanCong.com https://fb.com/tailieudientucntt 32 Chiến lược placement dynamic partitioning Quyết đị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 Worst-fit: chọn khối nhớ trống lớn CuuDuongThanCong.com https://fb.com/tailieudientucntt 33 Nhận xét Cả hai giải pháp fixed dynamic partitioning không dùng hệ thống đại CuuDuongThanCong.com https://fb.com/tailieudientucntt 34 ... tốn overhead CuuDuongThanCong. com https://fb .com/ tailieudientucntt 12 Dynamic linking (2) Nhắc lại static linking 0x08048000 program main: call printf printf: ret CuuDuongThanCong. com copy... thư viện dlclose() – Close file thư viện CuuDuongThanCong. com https://fb .com/ tailieudientucntt 18 Dynamic loading – Ví dụ CuuDuongThanCong. com https://fb .com/ tailieudientucntt 19 Kỹ thuật overlay... nhớ trống lớn CuuDuongThanCong. com https://fb .com/ tailieudientucntt 33 Nhận xét Cả hai giải pháp fixed dynamic partitioning không dùng hệ thống đại CuuDuongThanCong. com https://fb .com/ tailieudientucntt