1 BÀI 9 : PHÂN ĐỌAN VÀ PHÂN TRANG Cấp phát không liên tục : Segmentation Paging 2 Mô hình Segmentation Tiến trình gồm nhiều segment, áp dụng base bound cho từng segment Phân chia không gian đòa chỉ thành các segment ? gcc Text seg r/o Stack seg r/w 0x1000 0x3000 0x5000 0x6000 Real memory 0x2000 0x8000 0x6000 Base&bound? 3 Chuyeån ñoåi ñòa chæ trong moâ hình Segmentation Virtual addr Seg# offset 3 128 Seg table Prot base len r 0x1000 512 mem seg 128 + 0x1000 ? yes no fault 4 Mô hình Segmentation Cấp phát không liên tục => tận dụng bộ nhớ hiệu quả Chia sẻ được ở mức module Chuyển đổi đòa chỉ phức tạp Vấn đề “Cấp phát động” : lựa chọn vùng nhớ liên tục cho 1 segment ? Phân mảnh ngoại vi gcc emacs ?? External fragmentation Nachos 5 Moâ hình Paging Khoâng gian ñòa chæ = {page} Khoâng gian vaät lyù = {frame} Kích thöôùc trang ? Internal frag Real memory gcc emacs emacs gcc 6 Chuyeån ñoåi ñòa chæ trong moâ hình Paging CPU KGVL Physical addr Logical addr p d f d f 7 Mô hình Paging Cấp phát bộ nhớ đơn giản Không còn phân mảnh ngoại vi Không chia sẻ ở mức module Phân mảnh nội vi Lưu trữ bảng trang ? . 1 BÀI 9 : PHÂN ĐỌAN VÀ PHÂN TRANG Cấp phát không liên tục : Segmentation Paging 2 Mô hình Segmentation Tiến trình gồm nhiều segment, áp dụng base bound cho từng segment Phân chia. d f 7 Mô hình Paging Cấp phát bộ nhớ đơn giản Không còn phân mảnh ngoại vi Không chia sẻ ở mức module Phân mảnh nội vi Lưu trữ bảng trang ? . được ở mức module Chuyển đổi đòa chỉ phức tạp Vấn đề “Cấp phát động” : lựa chọn vùng nhớ liên tục cho 1 segment ? Phân mảnh ngoại vi gcc emacs ?? External fragmentation Nachos 5 Moâ hình