Quản lý bộ nhớ (Hệ điều hành)
Quản lý bộ nhớ của hệ điều hành phân bổ bộ nhớ vật lý cho các tiến trình, triển khai phân trang và phân đoạn, chọn các trang cần giữ lại trong bộ nhớ chính, và thu hồi bộ nhớ, điều hòa giữa nhu cầu của chương trình và giới hạn của RAM vật lý.
Definition
Quản lý bộ nhớ của hệ điều hành là tập hợp các chính sách và cơ chế mà hệ điều hành sử dụng để gán bộ nhớ vật lý cho các tiến trình, tổ chức không gian địa chỉ của chúng thông qua phân trang hoặc phân đoạn, và quyết định dữ liệu nào sẽ ở lại trong bộ nhớ so với dữ liệu nào sẽ nằm trên bộ nhớ phụ.
Scope
Chủ đề này bao gồm vai trò của hệ điều hành trong việc quản lý bộ nhớ chính: bố cục không gian địa chỉ, cấp phát liền kề và phân mảnh, phân trang và phân đoạn, các thuật toán thay thế trang (FIFO, LRU, clock, tối ưu), cấp phát khung trang, và các chính sách ngăn chặn tình trạng nghẽn cổ chai (thrashing). Nó bổ sung cho quan điểm phần cứng về bộ nhớ ảo, tập trung vào chính sách của hệ điều hành. Nó không bao gồm các cấu trúc dịch phần cứng (bộ nhớ ảo và phân trang) và lưu trữ tệp trên đĩa (hệ thống tệp).
Core questions
- Hệ điều hành phân bổ bộ nhớ vật lý cho các tiến trình và hạn chế phân mảnh như thế nào?
- Phân trang và phân đoạn tổ chức không gian địa chỉ như thế nào?
- Thuật toán thay thế trang nào xấp xỉ tốt nhất việc đẩy trang ít có khả năng được sử dụng sớm nhất?
- Các khung trang được cấp phát giữa các tiến trình như thế nào để giữ các tập làm việc trong bộ nhớ chính và tránh tình trạng nghẽn cổ chai?
Key concepts
- bố cục không gian địa chỉ
- cấp phát liền kề và phân mảnh
- phân trang và phân đoạn
- các thuật toán thay thế trang (FIFO, LRU, clock, tối ưu)
- cấp phát khung trang
- phân trang theo yêu cầu (demand paging)
- nghẽn cổ chai (thrashing) và tập làm việc (working set)
- thu hồi bộ nhớ
Key theories
- Thay thế trang và tính cục bộ
- Vì chính sách lý tưởng là đẩy trang sẽ không được sử dụng trong thời gian dài nhất là không thể thực hiện được, các thuật toán thực tế (LRU, clock) xấp xỉ nó bằng cách sử dụng thông tin sử dụng gần đây; hiệu quả của chúng phụ thuộc vào tính cục bộ được nắm bắt bởi mô hình tập làm việc.
Mechanisms
Hệ điều hành theo dõi bộ nhớ trống và đã cấp phát, đồng thời ánh xạ không gian địa chỉ của mỗi tiến trình, thường thông qua phân trang chia bộ nhớ thành các khung có kích thước cố định. Khi xảy ra lỗi trang, nó sẽ đưa trang cần thiết vào, đẩy một trang đang nằm trong bộ nhớ chính ra ngoài theo một thuật toán thay thế như clock hoặc LRU. Nó cấp phát các khung trang giữa các tiến trình để giữ các tập làm việc của chúng trong bộ nhớ chính; khi nhu cầu vượt quá khả năng, các chính sách tập làm việc và tần suất lỗi trang sẽ giảm đa chương trình để ngăn chặn tình trạng nghẽn cổ chai.
Clinical relevance
Quản lý bộ nhớ hiệu quả cho phép nhiều chương trình chia sẻ RAM hạn chế một cách trơn tru và rất quan trọng đối với thông lượng và khả năng phản hồi của hệ thống. Việc thay thế kém hoặc cấp phát quá mức gây ra tình trạng nghẽn cổ chai và làm chậm hệ thống nghiêm trọng, trong khi các tính năng như cấp phát bộ nhớ quá mức (memory overcommit), nén và sao chép khi ghi (copy-on-write) là nền tảng cho hiệu quả của các máy chủ, vùng chứa (containers) và máy ảo hiện đại.
History
Quản lý bộ nhớ đã phát triển từ cấp phát liền kề đơn giản và các lớp phủ (overlays) sang phân trang và phân đoạn khi bộ nhớ ảo trưởng thành vào những năm 1960 và 1970. Lý thuyết tập làm việc của Denning đã làm rõ cách cấp phát khung trang và tránh tình trạng nghẽn cổ chai, và các thuật toán thay thế như xấp xỉ clock đã trở thành tiêu chuẩn trong các hệ điều hành sản xuất.
Key figures
- Peter J. Denning
- Abraham Silberschatz
- Andrew S. Tanenbaum
Related topics
Seminal works
- silberschatz2018
- denning1968
- tanenbaum2014os
Frequently asked questions
- Sự khác biệt giữa phân trang và phân đoạn là gì?
- Phân trang chia bộ nhớ thành các trang và khung có kích thước cố định, đơn giản hóa việc cấp phát và loại bỏ phân mảnh bên ngoài. Phân đoạn chia không gian địa chỉ thành các đoạn có kích thước thay đổi, có ý nghĩa logic (như mã, ngăn xếp, vùng nhớ heap). Một số hệ thống kết hợp chúng, phân trang trong các đoạn.
- Tại sao hệ điều hành không thể luôn sử dụng chính sách thay thế trang tối ưu?
- Chính sách tối ưu đẩy trang sẽ không được sử dụng trong thời gian dài nhất, điều này đòi hỏi phải biết trước tương lai. Vì hệ điều hành không thể biết các tham chiếu trong tương lai, nó sử dụng các phương pháp xấp xỉ như ít được sử dụng gần đây nhất (least-recently-used) hoặc thuật toán clock để suy ra khả năng sử dụng trong tương lai từ việc sử dụng gần đây trong quá khứ.