Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 16 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
16
Dung lượng
363,42 KB
Nội dung
1 Bộ nhớ ảo là gì? 1.1 Định nghĩa - Bộ nhớ ảo là một vùng thuộc không gian lưu trữ của bộ nhớ phụ hệ thống máy tính (chẳng hạn như ổ cứng HDD hoặc SSD) Nó hoạt động như thể là một phần của RAM hoặc bộ nhớ chính hệ thống - Lý tưởng nhất là khi dữ liệu cần thiết để chạy các ứng dụng được lưu trữ trong RAM, nơi mà chúng có thể được CPU truy cập nhanh chóng Nhưng khi chạy các ứng dụng nặng, hoặc khi chạy nhiều ứng dụng cùng một lúc, RAM của hệ thống có thể bị đầy - Để khắc phục sự cố này, một số dữ liệu lưu trữ trong RAM không được sử dụng tích cực có thể được tạm thời chuyển sang bộ nhớ ảo (nằm trên ổ cứng hoặc thiết bị lưu trữ khác) Điều này giúp giải phóng không gian trong RAM, sau đó có thể được sử dụng để chứa dữ liệu mà hệ thống cần truy cập sắp xảy ra - Bằng cách hoán đổi dữ liệu giữa RAM và bộ nhớ ảo khi không cần thiết, và trở lại từ bộ nhớ ảo sang RAM khi cần, hệ thống có thể tiếp tục hoạt động trơn tru với lượng RAM vật lý ít hơn nhiều so với yêu cầu khác - Bộ nhớ ảo cho phép hệ thống chạy các ứng dụng lớn hơn hoặc chạy nhiều ứng dụng hơn cùng lúc mà không bị hết RAM Cụ thể, hệ thống có thể hoạt động như thể tổng tài nguyên RAM của nó bằng: dung lượng RAM vật lý + dung lượng RAM ảo 1.2 Tại sao cần có Bộ nhớ ảo? - Đơn giản vì RAM vật lý rất đắt đỏ nên bộ nhớ ảo được phát triển, mỗi GB trên RAM đắt hơn nhiều so với các phương tiện lưu trữ như ổ cứng HDD và SSD Vì lý do đó, sử dụng kết hợp RAM vật lý và bộ nhớ ảo sẽ ít tốn kém hơn nhiều so với việc trang bị hệ thống RAM máy tính nhiều hơn - Nhờ việc sử dụng bộ nhớ ảo (hoặc tăng bộ nhớ ảo) không bị phát sinh thêm chi phí (vì sử dụng không gian lưu trữ hiện có), nó cung cấp một cách để máy tính sử dụng nhiều bộ nhớ hơn so với khả năng thực tế trên hệ thống - Mặt khác, tất cả các hệ thống máy tính đều có giới hạn về dung lượng RAM vật lý có thể được lắp đặt (do phần cứng và phần mềm quy định), sử dụng bộ nhớ ảo cho phép hệ thống tiếp tục hoạt động vượt quá giới hạn RAM vật lý đó Đây thực sự là một lợi ích rất đáng nói của bộ nhớ ảo 1.3 Sự khác biệt giữa Bộ nhớ ảo và Bộ nhớ vật lý * Bộ nhớ vật lý thực sự chính là Ram, là một hình thức của kho dữ liệu của máy tính nó lưu trữ các chương trình đang được thực thi Ngược lại bộ nhớ ảo là một kỹ thuật quản lý bộ nhớ nó cho người dùng cảm giác bộ nhớ vật lý như được mở rộng ra Như vậy đây là sự khác biệt chính giữa bộ nhớ ảo và bộ nhớ vật lý * Kiểu bộ nhớ :Trong khi bộ nhớ vật lý là bộ nhớ thực còn bộ nhớ ảo chỉ là bộ nhớ logic * Tốc độ :Bộ nhớ vật lý nhanh hơn bộ nhớ ảo * Kỹ thuật : Bộ nhớ vật lý sử dụng kỹ thuật hoán đổi, bộ nhớ ảo sự dụng kỹ thuật phân trang * CPU :Bộ nhớ vật lý có thể trực tiếp truy cập vào CPU trong khi đó bộ nhớ ảo lại không thể làm được như vậy * Kích cỡ : Bộ nhớ vật lý bị giới hạn bởi kích cỡ của Ram chip Tuy nhiên bộ nhớ ảo thì bị giới hạn bởi kích cỡ của ổ cứng 2 Cách thức hoạt động của bộ nhớ ảo - Bộ nhớ ảo sử dụng cả phần cứng và phần mềm để hoạt động Khi một ứng dụng đang được sử dụng, dữ liệu từ chương trình đó được lưu trữ trong một địa chỉ vật lý sử dụng RAM Một đơn vị quản lý bộ nhớ (MMU) ánh xạ địa chỉ tới RAM và tự động dịch địa chỉ Ví dụ, MMU có thể ánh xạ một không gian địa chỉ logic đến một địa chỉ vật lý tương ứng - Nếu, tại bất kỳ thời điểm nào, dung lượng RAM cần thiết cho việc gì đó khẩn cấp hơn, dữ liệu có thể được hoán đổi khỏi RAM và vào bộ nhớ ảo Trình quản lý bộ nhớ của máy tính chịu trách nhiệm theo dõi sự thay đổi giữa bộ nhớ vật lý và bộ nhớ ảo Nếu cần lại dữ liệu đó, MMU của máy tính sẽ sử dụng công tắc ngữ cảnh để tiếp tục thực thi - Trong khi sao chép bộ nhớ ảo vào bộ nhớ vật lý, Hệ điều hành sẽ chia bộ nhớ với một số địa chỉ cố định thành các tập trang hoặc tệp hoán đổi Mỗi trang được lưu trữ trên một đĩa và khi cần trang, và hệ điều hành của bộ nhớ ảo sẽ sao chép nó từ đĩa vào bộ nhớ chính và chuyển các địa chỉ ảo thành các địa chỉ thực - Tuy nhiên, quá trình hoán đổi bộ nhớ ảo thành bộ nhớ vật lý diễn ra khá chậm Điều này có nghĩa là sử dụng bộ nhớ ảo thường gây ra giảm hiệu suất đáng kể Do hoán đổi, máy tính có nhiều RAM hơn được coi là có hiệu suất tốt hơn 3 Quản lý bộ nhớ ảo * Có 2 kỹ thuật quản lý bộ nhớ ảo: - Phân trang theo yêu cầu: Tức là phân trang kết hợp với đổi chỗ - Phân đoạn theo yêu cầu: Tức là phân đoạn kết hợp với đổi chỗ * Trong kỹ thuật bộ nhớ ảo: - Bộ phận quản lý bộ nhớ không nạp tất cả các trang/đoạn của một tiến trình vào bộ nhớ để nó hoạt động, mà chỉ nạp các trang/đoạn cần thiết tại thời điểm khởi tạo Sau đó, khi cần bộ phận quản lý bộ nhớ sẽ dựa vào PCT hoặc SCT của mỗi tiến trình để nạp các trang/đoạn tiếp theo - Nếu có một trang/đoạn của một tiến trình cần được nạp vào bộ nhớ trong tình trạng trên bộ nhớ không còn khung trang/phân đoạn trống thì bộ phận quản lý bộ nhớ sẽ đưa một trang/đoạn không cần thiết tại thời điểm hiện tại ra bộ bộ nhớ ngoài (swap-out), để lấy không gian nhớ trống đó nạp trang/đoạn vừa có yêu cầu Trang/đoạn bị swap out sẽ được đưa vào tại thời điểm thích hợp hoặc cần thiết sau này (swap-in) * Để cài đặt được bộ nhớ ảo hệ điều hành cần phải có: - Một lượng không gian bộ nhớ phụ (đĩa) cần thiết đủ để chứa các trang/ đoạn bị swap out, không gian đĩa này được gọi là không gian swap - Có cơ chế để theo dõi các trang/đoạn của một tiến trình, của tất cả các tiến trình đang hoạt động trên bộ nhớ chính, là đang ở trên bộ nhớ chính hay ở trên bộ nhớ phụ Trong trường hợp này hệ điều hành thường đưa thêm một bít trạng thái (bit present) vào các phần tử trong PCT hoặc SCT - Dựa vào các tiêu chuẩn cụ thể để chọn một trang nào đó trong số các trang đang ở trên bộ nhớ chính để swap out trong trường hợp cần thiết Các hệ điều hành đã đưa ra các thuật toán cụ thể để phục vụ cho mục đích này 3.1 Phân trang theo yêu cầu (Demand Paging) * Hãy tưởng tượng cách mà một chương trình có thể được nạp từ ổ đĩa vào bộ nhớ Một trong các phương án là nạp toàn bộ chương trình vào bộ nhớ vật lý khi chương trình thực thi Tuy nhiên, một vấn đề của phương pháp này là chúng ta có thể không cần toàn bộ chương trình ở trong bộ nhớ lúc đầu Giả sử một chương trình bắt đầu với một danh sách các tùy chọn có sẵn để người dùng lựa chọn Nếu ta nạp toàn bộ chương trình vào bộ nhớ sẽ dẫn đến việc tải mã thực thi cho tất cả các tùy chọn, bất kể liệu người dùng có chọn tùy chọn nào không Một chiến lược thay thế là chỉ nạp các trang khi chúng được yêu cầu Kỹ thuật này được biết đến với tên gọi "phân trang theo yêu cầu" và được sử dụng phổ biến trong các hệ thống bộ nhớ ảo Với bộ nhớ ảo được áp dụng demand paging, các trang được nạp chỉ khi chúng được yêu cầu trong quá trình thực thi chương trình Các trang không bao giờ được truy cập sẽ không bao giờ được nạp vào bộ nhớ vật lý 3.1 1 Tổ chức hệ thống của kỹ thuật phân trang * Hệ thống phân trang theo yêu cầu tương tự như hệ thống phân trang với đổi chỗ trang (hình bên) và quá trình sẽ nằm trong bộ nhớ phụ (thường là một đĩa) Khi chúng ta muốn thực thi một quá trình, chúng ta đổi chỗ nó vào bộ nhớ * Trong kỹ thuật phân trang đơn, mỗi tiến trình sở hữu một bảng trang riêng, khi tất cả các trang của tiến trình được nạp vào bộ nhớ chính thì bảng trang của tiến trình được tạo ra và cũng được nạp vào bộ nhớ (nếu lớn), mỗi phần tử trong bảng trang chỉ chứa số hiệu của khung trang mà trang tương ứng được nạp vào Trong kỹ thuật bộ nhớ ảo cũng vậy, nhưng một phần tử trong bảng trang sẽ chứa nhiều thông tin phức tạp hơn Bởi vì trong kỹ thuật bộ nhớ ảo chỉ có một vài page của tiến trình được nạp vào bộ nhớ chính, do đó cần phải có một bít để cho biết một page tương ứng của tiến trình là có hay không trên bộ nhớ chính và một bít cho biết page có bị thay đổi hay không so với lần nạp gần đây nhất Cụ thể là nó phải có thêm các bít điều khiển: - Bít P (Present): Cho biết trang tương ứng đang ở trên bộ nhớ chính (= 1) hay ở trên bộ nhớ phụ (= 0) - Bít M (Modify): Cho biết nội dung của trang tương ứng có bị thay đổi hay không so với lần nạp gần đây nhất Nếu nó không bị thay đổi thì việc phải ghi lại nội dung của một trang khi cần phải đưa một trang ra lại bộ nhớ ngoài là không cần thiết, điều này giúp tăng tốc độ trong các thao tác thay thế trang trong khung trang - Các bít điều khiển khác: Các bít này phục vụ cho các mục đích bảo vệ trang và chia sẻ các khung trang 3.1.2 Chuyển đổi địa chỉ trong hệ thống phân trang: * Chương trình của người sử dụng sử dụng địa chỉ logic hoặc virtual gồm: page number và offset để truy xuất dữ liệu trên bộ nhớ chính Bộ phận quản lý bộ nhớ phải chuyển địa chỉ virtual này thành địa chỉ vật lý tương ứng bao gồm: page number và offset Để thực hiện việc này bộ phận quản lý bộ nhớ phải dựa vào bảng trang (PCT) 3.1.2 Lỗi trang (Page fault) * Khi tiến trình truy cập tới một trang, bit P của trang sẽ được kiểm tra * Nếu trang đã ở trong bộ nhớ, việc truy cập diễn ra bình thường Ngược lại, nếu trang chưa được nạp vào, lỗi trang sẽ xảy ra * Khi xử lý lỗi trang có thể gặp một trong hai tình huống sau: - Hệ thống còn frame trống (a): Hệ điều sẽ thực hiện các bước sau: 1 Tìm vị trí của page cần truy xuất trên đĩa 2 Nạp page vừa tìm thấy vào bộ nhớ chính 3 Cập nhật lại bảng trang (PCT) tiến trình 4 Tái kích hoạt tiến trình để tiến trình tiếp tục hoạt động - Hệ thống không còn frame trống (b): 1 Tìm vị trí của page cần truy xuất trên đĩa 2 Tìm một page không hoạt động hoặc không thực sự cần thiết tại thờ điểm hiện tại để đưa nó ra đĩa, lấy frame trống đó để nạp page mà hệ thống vừa cần truy xuất Page bị swap out sẽ được hệ điều hành swap in trở lại bộ nhớ tại một thời điểm thích hợp sau này 3 Cập nhật PCT của tiến trình có page vừa bị đổi chỗ 4 Nạp trang vừa tìm thấy ở trên (bước 1) vào frame trống ở trên (bước 2) 5 Cập nhật lại bảng trang (PCT) của tiến trình 6 Tái kích hoạt tiến trình để tiến trình tiếp tục hoạt động 3.1.3 Một số vấn đề cần chú ý khi xử lý lỗi trang : - Nên chọn trang nào trong số các trang trên bộ nhớ chính để đổi chỗ: - “Neo” một số trang - Phải tránh được trường hợp hệ thống xảy ra hiện tượng “trì trệ hệ thống” - Đánh dấu các trang bị thay đổi 3.1.4 Một số chiến lược đổi trang: * Đổi trang tối ưu( OPT): thay thế trang mà nó không được dùng cho một khoảng thời gian lâu nhất Sử dụng giải thuật thay thế trang đảm bảo tỉ lệ lỗi trang nhỏ nhất có thể cho một số lượng khung cố định * Đổi trang theo nguyên tắc FIFO: Giải thuật thay thế trang đơn giản nhất là giải thuật FIFO Giải thuật này gắn với mỗi trang thời gian khi trang đó được mang vào trong bộ nhớ Khi một trang phải được thay thế, trang cũ nhất sẽ được chọn Chú ý rằng, nó không yêu cầu nghiêm ngặt để ghi thời gian khi trang được mang vào Chúng ta có thể tạo một hàng đợi FIFO để quản lý tất cả trang trong bộ nhớ Chúng ta thay thế trang tại đầu hàng đợi Khi trang được mang vào bộ nhớ, chúng ta chèn nó vào đuôi của hàng đợi * Trang ít được dùng nhất (LRU): - Sự khác biệt chủ yếu giữa giải thuật FIFO và OPT là FIFO dùng thời gian khi trang được mang vào bộ nhớ; giải thuật OPT dùng thời gian khi trang được sử dụng - Thay thế trang LRU gắn với mỗi trang thời gian sử dụng cuối cùng của trang Khi một trang phải được thay thế, LRU chọn trang không được dùng trong một khoảng thời gian lâu nhất Chiến lược này là giải thuật thay thế trang tối ưu tìm kiếm lùi theo thời gian hơn là hướng tới * Chiến lược đồng hồ (CLOCK): - Đây là cải tiến của thuật toán FIFO nhằm tránh thay thế những trang mặc dù đã được nạp vào lâu nhưng hiện vẫn có khả năng được sử dụng - Khi chọn trang, dựa trên hai thông tin Thứ nhất, đó là thứ tự nạp trang vào bộ nhớ Thứ hai, thông tin về việc gần đây trang có được truy cập hay không 3.2 Phân đoạn theo yêu cầu (Demand Segmentation) 3.2.1 Tổ chức của hệ thống phân đoạn * Sự phân đoạn cho phép người lập trình xem bộ nhớ như bao gồm một tập các không gian nhớ hoặc các đoạn (segment) có địa chỉ được xác định Với bộ nhớ ảo người lập trình không cần quan tâm đến giới hạn bộ nhớ được đưa ra bởi bộ nhớ chính Các segment có thể có kích thước không bằng nhau và được ấn định một cách động Địa chỉ tham chiếu bộ nhớ trong trường hợp này bao gồm: Segment Number và Offset * Trong kỹ thuật phân đoạn đơn, mỗi tiến trình sở hữu một bảng đoạn riêng, khi tất cả các đoạn của tiến trình được nạp vào bộ nhớ chính thì bảng đoạn của tiến trình được tạo ra và cũng được nạp vào bộ nhớ, mỗi phần tử trong bảng đoạn chứa địa chỉ bắt đầu của đoạn tương ứng trong bộ nhớ chính và độ dài của đoạn Trong kỹ thuật bộ nhớ ảo cũng vậy, nhưng một phần tử trong bảng đoạn sẽ chứa nhiều thông tin phức tạp hơn Bởi vì trong kỹ thuật bộ nhớ ảo chỉ có một vài segment của tiến trình được nạp vào bộ nhớ chính, do đó cần phải có một bít để cho biết một đoạn tương ứng của tiến trình là có hay không trên bộ nhớ chính và một bít cho biết đoạn có bị thay đổi hay không so với lần nạp gần đây nhất Cụ thể là nó phải có thêm các bít điều khiển: - Bít P (Present): Cho biết đoạn tưong ứng đang ở trên bộ nhớ chính (= 1) hay trên bộ nhớ phụ (= 0) - Bít M (Modify): Cho biết nội dung của đoạn tương ứng có bị thay đổi hay không so với lần nạp gần đây nhất Nếu nó không bị thay đổi thì việc phải ghi lại nội dung của một đoạn khi cần phải đưa một đoạn ra lại bộ nhớ ngoài là không cần thiết, điều này giúp tăng tốc độ trong các thao tác thay thế đoạn - Các bít điều khiển khác: Các bít này phục vụ cho các mục đích bảo vệ trang và chia sẻ các khung trang 3.2.2 Chuyển đổi địa chỉ trong hệ thống phân đoạn * Chương trình của người sử dụng sử dụng địa chỉ logic hoặc virtual gồm: segment number và offset để truy xuất dữ liệu trên bộ nhớ chính Bộ phận quản lý bộ nhớ phải chuyển địa chỉ virtual này thành địa chỉ vật lý tương ứng bao gồm: segment number và offset Để thực hiện việc này bộ phận quản lý bộ nhớ phải dựa vào bảng đoạn (SCT) Vì kích thước của SCT có thể lớn và thay đổi theo kích thước của tiến trình do đó trong kỹ thuật bộ nhớ ảo hệ điều hành thường chứa SCT trong bộ nhớ chính và dùng một thanh ghi để ghi địa chỉ bắt đầu của bộ nhớ nơi lưu trữ SCT của tiến trình khi tiến trình được nạp vào bộ nhớ chính để chạy Thành phần segment number của địa chỉ ảo được dùng để chỉ mục đến bảng đoạn và tìm địa chỉ bắt đầu của segment tương ứng trong bộ nhớ chính Giá trị này sẽ được cộng với thành phần Offset có trong địa chỉ ảo để có được địa chỉ vật lý thực cần tìm 3.2.3 Một số thuật lợi của phân đoạn không gian địa chỉ 1 Nó đơn giản để điều khiển các cấu trúc dữ liệu lớn dần (growing) trong quá trình hoạt động của hệ thống Nếu người lập trình không biết trước dữ liệu sẽ lớn đến chừng nào tại thời điểm chạy thì việc ấn định kích thước của động cho segment mang lại nhiều thuận lợi cho người lập trình 2 Nó cho phép các chương trình không phụ thuộc vào sự thay đổi vào sự biên dịch lại Nó không yêu cầu thiết lập lại toàn bộ chương trình khi chương trình được liên kết hoặc được nạp trở lại Việc này chỉ có thể thực hiện bằng cách sử dụng nhiều phân đoạn (Multiple Segment) 3 Nó thích hợp với chiến lược chia sẻ segment giữa các tiến trình Người lập trình có thể đặt một chương trình tiện ích hoặc một bảng dữ liệu thường sử dụng vào một segment mà có thể được tham chiếu bởi nhiều tiến trình khác nhau 4 Nó thích hợp với chiến lược bảo vệ bộ nhớ Bởi vì một segment có thể được sinh ra để chứa một tập xác định các thủ tục hoặc dữ liệu, sau đó người lập trình hoặc người quản trị hệ thống có thể gán quyền truy cập với các độ ưu tiên thích hợp nào đó 4 Lợi ích của việc sử dụng bộ nhớ ảo a) Các giải thuật quản lý bộ nhớ trong là cần thiết vì các chỉ thị đang được thực thi phải ở trong bộ nhớ vật lý Tiếp cận đầu tiên để thoả mãn yêu cầu này các lệnh phải đặt trong bộ nhớ vật lý Tuy nhiên điều này lại làm cho chương trình bị giới hạn kích thước với kích thước của bộ nhớ vật lý - Trên thực tế, việc kiểm tra các chương trình thực cho chúng ta thấy rằng, trong nhiều trường hợp, toàn bộ chương trình là không cần thiết Thậm chí trong những trường hợp toàn bộ chương trình được yêu cầu nhưng không phải tất cả chương trình được yêu cầu cùng một lúc - Lợi ích khi thực thi chương trình chỉ một phần chương trình ở trong bộ nhớ: Một chương trình sẽ không còn bị hạn chế bởi dung lượng bộ nhớ vật lý khả dụng Người dùng sẽ có thể viết chương trình cho một không gian địa chỉ ảo cực lớn, đơn giản hóa tác vụ lập trình Bởi vì mỗi chương trình người dùng có thể chiếm ít bộ nhớ vật lý hơn, nhiều chương trình có thể được chạy cùng một lúc, với mức tăng tương ứng về mức sử dụng CPU nhưng không tăng thời gian phản hồi hoặc thời gian quay vòng Cần ít yêu cầu I/O hơn để tải hoặc trao đổi chương trình chạy nhanh hơn - Do đó, việc chạy một chương trình không hoàn toàn nằm trong bộ nhớ sẽ có lợi cho cả hệ thống và người dùng b) Bộ nhớ ảo liên quan đến việc tách bộ nhớ logic nguười dùng khỏi bộ nhớ vật lý Sự tách biệt này cho phép cung cấp một bộ nhớ ảo cực lớn cho các lập trình viên khi chỉ có một bộ nhớ vật lý nhỏ hơn - Bộ nhớ ảo làm cho nhiệm vụ kết hợp chương trình dễ dàng hơn nhiều, lập trình viên không còn phải lo lắng về dung lượng bộ nhớ vật lý khả dụng; thay vào đó, có thể tập trung vào vấn đề được lập trình - Không gian địa chỉ ảo bao gồm các lỗ hổng được gọi là không gian địa chỉ thưa thớt các lỗ hổng có thể được lấp đầy nếu chúng ta muốn liên kết động các thư viện (hoặc có thể là các đối tượng )khác trong khi thực hiện chương trình c) Ngoài việc tách bộ nhớ logic khỏi bộ nhớ vật lý, bộ nhớ ảo cho phép các tệp và bộ nhớ được chia sẻ bởi hai hoặc nhiều tiến trình thông qua chia sẻ trang, nó mang lợi ích sau: - Các thư viện hệ thống có thể được chia sẻ bởi một số quy trình thông qua ánh xạ đối tượng được chia sẻ vào một không gian địa chỉ ảo - Bộ nhớ ảo cho phép một tiến trình tạo một vùng bộ nhớ mà nó có thể chia sẻ với một tiến trình khác Các tiến trình chia sẻ vùng này coi nó là một phần của không gian địa chỉ ảo của chúng - Tăng tốc độ tạo quy trình 5 Hạn chế: - Bộ nhớ ảo sẽ xử lý và truy cập lâu hơn so với bộ nhớ vật lý - Sẽ tốn nhiều thời gian để tải các ứng dụng được lưu trữ ảo khi máy tính chuyển đổi giữa bộ nhớ ảo và bộ nhớ vật lý - Những máy có ram thấp có thể bị giật, đó là khi máy liên tục chuyển đổi giữa bộ nhớ ảo vả bộ nhớ vật lý Điều này có thẻ làm chậm máy tính, gây ra sự chạm trễ về hiệu suất - Làm giảm dung lượng ổ cứng khả dụng và làm giảm tuổi thọ của ổ cứng - Làm giảm tính ổn định của hệ thống và hệ suất tổng thể 6 Tổng kết Bộ nhớ ảo là một kỹ thuật cho phép chúng ta ánh xạ một không gian địa chỉ logic lớn vào một bộ nhớ vật lý nhỏ hơn Bộ nhớ ảo cho phép chúng ta chạy các tiến trình cực kỳ lớn và tăng độ đa nhiệm, tăng sử dụng CPU Hơn nữa, nó giúp các nhà lập trình ứng dụng không phải lo lắng về sẵn có bộ nhớ Ngoài ra, với bộ nhớ ảo, một số tiến trình có thể chia sẻ thư viện và bộ nhớ của hệ thống Bộ nhớ ảo thường được thực hiện bằng phân trang theo yêu cầu Phân trang theo yêu cầu không đưa trang vào bộ nhớ cho đến khi trang đó được tham chiếu Việc tham chiếu đầu tiên gây ra lỗi trang cho hệ điều hành Nhân hệ điều hành sẽ tra bảng nội bộ để xác định trang đó được đặt ở đâu trên khối lưu trữ Sau đó, nó tìm một khung trống và đọc trang vào từ khối lưu trữ Bảng trang được cập nhật để phản ánh sự thay đổi này, và chỉ thị gây ra lỗi trang được khởi động lại Phương pháp này cho phép một tiến trình chạy ngay cả khi toàn bộ hình ảnh bộ nhớ của nó không nằm trong bộ nhớ chính cùng lúc Miễn là tỷ lệ lỗi trang đủ thấp, hiệu suất là chấp nhận được Chúng ta có thể sử dụng phân trang theo yêu cầu để giảm số khung được cấp cho một tiến trình Sắp xếp này có thể tăng độ đa nhiệm (cho phép nhiều tiến trình có sẵn để thực thi cùng một lúc) và trong lý thuyết ít nhất là tăng sử dụng CPU của hệ thống Nó cũng cho phép các tiến trình được chạy ngay cả khi yêu cầu bộ nhớ của chúng vượt quá tổng bộ nhớ vật lý có sẵn Những tiến trình như vậy chạy trong bộ nhớ ảo Nếu yêu cầu bộ nhớ tổng vượt quá khả năng của bộ nhớ vật lý, thì có thể cần thay thế các trang từ bộ nhớ để giải phóng khung cho các trang mới Các thuật toán thay thế trang khác nhau được sử dụng Thay thế trang theo FIFO dễ lập trình nhưng mắc phải sự bất thường Belady Thay thế trang tối ưu đòi hỏi có kiến thức về tương lai Thay thế trang LRU là một xấp xỉ của thay thế trang tối ưu, nhưng ngay cả việc thực hiện nó cũng có thể khó khăn Ngoài ra đối với giải thuật thay thế trang, chính sách cấp phát khung trang được yêu cầu Cấp phát có thể cố định, đề nghị thay thế trang cục bộ, hay đề nghị thay thế toàn cục Theo đó, mỗi quá trình nên được cấp phát đủ các khung cho tập làm việc hiện hành của nó Nếu một quá trình không có đủ bộ nhớ cho tập làm việc của nó, nó sẽ bị trì trệ Cung cấp đủ khung cho mỗi quá trình để tránh trì trệ có thể yêu cầu đổi chỗ và lập lịch tiến trình Ngoài ra, để yêu cầu chúng ta giải quyết các vấn đề chính của thay thế trang và cấp phát khung trang, thiết kế hợp lý hệ thống phân trang yêu cầu chúng ta xem xét kích thước trang, nhập/xuất, khoá, phân lại trang, tạo quá trình, cấu trúc chương trình, sự trì trệ, Bộ nhớ ảo có thể được xem như một cấp của cơ chế phân cấp trong các cấp lưu trữ trong hệ thống máy tính