Quản lý bộ nhớ: Virtual Memory & Paging
Quảng cáo • Advertisement
📢 Sponsor Ad
Google AdSense
lesson.content.title
lesson.content.subtitle
🎯 Mục tiêu bài học
Đây là phát minh vĩ đại nhất của OS, cho phép chạy Game 50GB trên máy 8GB RAM.
1. Ảo tưởng sức mạnh (Virtual Memory)
Mỗi Process đều được OS lừa rằng: "Mày sở hữu một mình 4GB RAM, liền mạch từ 0 đến 4GB".
Thực tế: Dữ liệu của nó bị xé lẻ, vứt rải rác lung tung trên RAM vật lý, thậm chí vứt một phần xuống ổ cứng (Swap).
Lợi ích:
- Cô lập (Isolation): P1 không thể truy cập RAM của P2 vì nó không biết địa chỉ thật.
- Chia sẻ (Sharing): Các thư viện DLL dùng chung chỉ cần nạp 1 lần vào RAM vật lý, rồi ánh xạ vào Virtual RAM của nhiều Process.
2. Cơ chế Paging (Phân trang)
RAM được chia nhỏ thành các trang (Page) kích thước cố định (thường là 4KB).
Bảng trang (Page Table) - Cuốn từ điển
CPU đưa ra địa chỉ Ảo (Virtual Address). MMU (Phần cứng Memory Management Unit) tra bảng Page Table để đổi sang địa chỉ Vật lý (Physical Address).
Ví dụ:
- CPU hỏi: "Lấy cho tao dữ liệu ở Page 1".
- MMU tra bảng: "Page 1 đang nằm ở Frame 50 trong RAM".
- MMU lấy dữ liệu ở Frame 50 đưa cho CPU.
3. TLB (Translation Lookaside Buffer) - Cache của MMU
Việc tra bảng Page Table nằm trong RAM rất chậm (tốn thêm 1 lần truy cập RAM). TLB là một Cache siêu nhanh nằm trong chip MMU để nhớ các phép dịch gần đây.
4. Page Fault & Thrashing (Thảm họa hệ thống)
Nếu MMU tra bảng mà thấy: "Page này chưa có trong RAM" (Valid Bit = 0). Đây là Page Fault (Lỗi trang).
OS xử lý thế nào? (Rất vất vả)
- Tạm dừng Process.
- Tìm một Frame trống trong RAM. (Nếu RAM đầy, phải đá 1 thằng khác ra ổ cứng - Swapping).
- Đọc Page cần thiết từ Ổ cứng nạp vào RAM. (Tốn hàng ms - cực lâu).
- Cập nhật Page Table.
- Cho Process chạy lại.
👉 Thrashing: Khi RAM quá ít, OS cứ phải nạp vào/đá ra liên tục. Ổ cứng quay điên cuồng (Disk I/O 100%), máy đơ hoàn toàn. Giải pháp: Mua thêm RAM!
Quảng cáo • Advertisement
📢 Ad Space
Google AdSense