Ủng hộ tôi
Bộ nhớ ảo là một lớp trừu tượng hóa của bộ nhớ vật lý trong các hệ điều hành hiện đại, nó cho phép hệ thống (cụ thể là nhân hệ điều hành) cấp phát không gian địa chỉ tuyến tính (không gian địa chỉ liên tục) cho tiến trình bất chấp bộ nhớ vật lý bị phân mảnh.
Địa chỉ ảo (virtual address hay logic address): Địa chỉ được sử dụng bởi tiến trình (và cả bộ xử lý thực thi tiến trình). Mỗi tiến trình có một không gian địa chỉ ảo của riêng nó.
Địa chỉ vật lý (physical address): Địa chỉ được sử dụng bởi bộ nhớ vật lý.
Bộ nhớ ảo được sử dụng cho các mục đích sau:
Cung cấp không gian địa chỉ luận lý lớn cho ứng dụng mặc dù kích thước bộ nhớ vật lý nhỏ
Tạo không gian địa chỉ tuyến tính cho lập trình viên mặc dù việc cấp phát bộ nhớ có thể không liên tục
Tạo không gian địa chỉ riêng cho mỗi ứng dụng, bảo vệ ứng dụng chống lại sự tác động của các ứng dụng khác
Có thể sử dụng các bộ lưu trữ thứ cấp (HDD hoặc SSD, ...) để chứa tạm thời các trang nhớ lâu rồi chưa được sử dụng nhằm tăng hiệu quả sử dụng bộ nhớ chính
Phân trang theo nhu cầu (demand paging) là một kỹ thuật hiện thực bộ nhớ ảo đang được sử dụng phổ biến trong các hệ điều hành hiện đại. Hệ thống chỉ cấp phát từng trang nhớ khi tiến trình thực sự tham chiếu tới trang nhớ đó, điều này làm tăng tính đa chương (multiprogramming) của hệ thống. Một điều lưu ý là kích thước của tất cả các trang đều bằng nhau.
Phân trang háo hức (eager paging) là một kỹ thuật phân trang khác để hiện thực bộ nhớ ảo. Bộ nhớ ảo sử dụng kỹ thuật này sẽ cấp phát toàn bộ trang nhớ mà tiến trình yêu cầu trước khi tiến trình thực sự thực thi. Kỹ thuật này chỉ phù hợp với các hệ thống có dung lượng bộ nhớ vật lý lớn và tiến trình yêu cầu cấp phát không gian bộ nhớ nhỏ.
Phân đoạn theo nhu cầu (demand segmenting) là một kỹ thuật hiện thực bộ nhớ ảo được sử dụng trước đây trong các hệ điều hành. Hệ thống cấp phát từng đoạn khi tiến trình thực sự tham chiếu tới đoạn đó. Một điều lưu ý là kích thước của các đoạn có thể khác nhau.
Để tăng mức độ đa chương của hệ thống, nghĩa là tăng số lượng tiến trình được nạp vào bộ nhớ. Tuy nhiên, nếu cố gắng tăng mức độ đa chương thì số lượng khung trang được cấp phát cho mỗi tiến trình càng ít, điều này có thể dẫn tới tình trạng trì trệ của hệ thống (thrashing). Trình trạng trì trệ đề cập đến việc hệ thống dành phần lớn thời gian cho việc phân trang thay vì dành thời gian cho việc xử lý. Nhằm quyết định số lượng khung trang được cấp phát cho mỗi tiến trình để giảm tình trạng trì trệ, hệ điều hành dựa vào mô hình tập làm việc (working set model). Mô hình tập làm việc dựa trên tính cục bộ tham chiếu của tiến trình (locality of reference), nghĩa là tại một khoảng thời gian bất kỳ, tiến trình chỉ tham chiếu tới một số lượng nhỏ trang nhớ nhất định, đồng nghĩa với việc chỉ cần cấp phát một số lượng khung trang đủ lớn để tiến trình đáp ứng tính cục bộ thì có thể giảm được trình trạng trì trệ của hệ thống.
Lưu ý, có một mô hình gọi là mô hình cục bộ (locality model) được sử dụng trong cuốn sách "Operating System Concepts" của 3 tác giả Avi Silberschatz, Peter Baer Galvin, và Greg Gagne. Mô hình này cũng dựa trên tính cục bộ tham chiếu của tiến trình và được phát biểu là "khi một tiến trình thực thi, nó chuyển từ cục bộ này tới cục bộ khác, một cục bộ là một tập hợp các trang nhớ được sử dụng cùng nhau". Mô hình cục bộ dựa trên thời điểm (các trang nhớ được sử dụng cùng nhau) thay vì khoảng thời gian được mô hình tập làm việc sử dụng.