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