Bất kỳ ai có thể vui lòng cho tôi biết sự khác biệt giữa bộ nhớ ảo và không gian hoán đổi là gì?
Và tại sao chúng tôi lại nói rằng đối với máy 32 bit, bộ nhớ ảo tối đa có thể truy cập chỉ là 4 GB?
Bất kỳ ai có thể vui lòng cho tôi biết sự khác biệt giữa bộ nhớ ảo và không gian hoán đổi là gì?
Và tại sao chúng tôi lại nói rằng đối với máy 32 bit, bộ nhớ ảo tối đa có thể truy cập chỉ là 4 GB?
Câu trả lời:
Có một sự giải thích tuyệt vời về bộ nhớ ảo trên superuser .
Nói một cách đơn giản, bộ nhớ ảo là sự kết hợp của RAM và không gian đĩa mà các tiến trình đang chạy có thể sử dụng.
Không gian hoán đổi là phần bộ nhớ ảo trên đĩa cứng, được sử dụng khi RAM đầy.
Về lý do tại sao CPU 32bit bị giới hạn ở bộ nhớ ảo 4gb, nó được giải quyết tốt ở đây :
Theo định nghĩa, bộ xử lý 32 bit sử dụng 32 bit để chỉ vị trí của mỗi byte bộ nhớ. 2 ^ 32 = 4,2 tỷ, có nghĩa là một địa chỉ bộ nhớ dài 32 bit chỉ có thể tham chiếu đến 4,2 tỷ vị trí duy nhất (tức là 4 GB).
Có một số nhầm lẫn về thuật ngữ Bộ nhớ ảo và nó thực sự đề cập đến hai khái niệm rất khác nhau sau đây
Không gian hoán đổi, OTOH, là tên của phần đĩa được sử dụng để lưu trữ các trang RAM bổ sung khi không sử dụng.
Một nhận thức quan trọng cần thực hiện là cái trước là khả thi do phần cứng và hệ điều hành hỗ trợ cho cái sau.
Để hiểu rõ hơn về tất cả điều này, bạn nên xem xét "Bộ nhớ ảo" (như trong định nghĩa 2) được CPU và HĐH hỗ trợ như thế nào.
Giả sử bạn có một con trỏ 32 bit (các điểm 64 bit tương tự nhau, nhưng sử dụng cơ chế hơi khác). Khi "Bộ nhớ ảo" đã được kích hoạt, bộ xử lý coi con trỏ này được tạo thành ba phần.
Bây giờ, khi CPU cố gắng truy cập nội dung của một con trỏ, trước tiên nó sẽ tham khảo bảng Thư mục Trang - một bảng bao gồm 1024 mục nhập (trong kiến trúc X86, vị trí của nó được chỉ đến bởi thanh ghi CR3). Mục nhập thư mục trang 10 bit là một chỉ mục trong bảng này, chỉ mục này trỏ đến vị trí thực của Bảng trang . Đến lượt nó, đây là một bảng khác gồm 1024 mục, mỗi mục là một con trỏ trong bộ nhớ vật lý và một số bit điều khiển quan trọng. (Chúng tôi sẽ quay lại những điều này sau). Khi một trang đã được tìm thấy, 12 bit cuối cùng được sử dụng để tìm địa chỉ trong trang đó.
Có nhiều chi tiết hơn (TLB, Trang lớn, PAE, Bộ chọn, Bảo vệ trang) nhưng phần giải thích ngắn ở trên nắm bắt được ý chính của mọi thứ.
Sử dụng cơ chế dịch này, một hệ điều hành có thể sử dụng một tập hợp các trang vật lý khác nhau cho mỗi quá trình, do đó tạo cho mỗi quá trình ảo tưởng có tất cả bộ nhớ cho chính nó (vì mỗi quá trình có Thư mục Trang của riêng nó)
Trên Bộ nhớ ảo này , Hệ điều hành cũng có thể thêm khái niệm Phân trang . Một trong các bit điều khiển được thảo luận trước đó cho phép chỉ định mục nhập có phải là "Hiện tại" hay không. Nếu nó không có mặt, nỗ lực truy cập mục đó sẽ dẫn đến ngoại lệ Lỗi trang . Hệ điều hành có thể nắm bắt ngoại lệ này và hành động tương ứng. Do đó, hệ điều hành hỗ trợ hoán đổi / phân trang có thể quyết định tải một trang từ Không gian hoán đổi , sửa các bảng dịch và sau đó cấp lại quyền truy cập bộ nhớ.
Đây là nơi mà hai thuật ngữ kết hợp, một hệ điều hành hỗ trợ Bộ nhớ ảo và Phân trang có thể tạo cho các quá trình ảo tưởng về việc có nhiều bộ nhớ hơn thực tế bằng cách phân trang (hoán đổi) các trang trong và ngoài vùng hoán đổi.
Như câu hỏi cuối cùng của bạn (Tại sao lại nói CPU 32 bit bị giới hạn ở Bộ nhớ ảo 4GB). Điều này đề cập đến "Bộ nhớ ảo" của định nghĩa 2, và là kết quả tức thì của kích thước con trỏ. Nếu CPU chỉ có thể sử dụng con trỏ 32 bit, bạn chỉ có 32 bit để biểu thị các địa chỉ khác nhau, điều này cung cấp cho bạn 2 ^ 32 = 4GB bộ nhớ có thể định địa chỉ.
Hy vọng điều này làm cho mọi thứ rõ ràng hơn một chút.
IMHO thật là sai lầm khi sử dụng khái niệm không gian hoán đổi tương đương với bộ nhớ ảo. VM là một khái niệm tổng quát hơn nhiều so với không gian hoán đổi. Trong số những thứ khác, VM cho phép các tiến trình tham chiếu các địa chỉ ảo trong quá trình thực thi, các địa chỉ này được dịch thành địa chỉ vật lý với sự hỗ trợ của phần cứng và bảng trang. Do đó, các tiến trình không quan tâm đến việc hệ thống có bao nhiêu bộ nhớ vật lý, hoặc vị trí của lệnh hoặc dữ liệu thực sự cư trú trong hệ thống phân cấp bộ nhớ vật lý. VM cho phép ánh xạ này. Mục được tham chiếu (hướng dẫn hoặc dữ liệu) có thể nằm trong L1, L2, hoặc RAM, hoặc cuối cùng trên đĩa, trong trường hợp đó, nó được tải vào bộ nhớ chính.
Không gian hoán đổi nó chỉ là một nơi trên bộ nhớ phụ, nơi các trang được lưu trữ khi chúng không hoạt động. Nếu không có đủ RAM, HĐH có thể quyết định hoán đổi các trang của một quy trình để nhường chỗ cho các trang quy trình khác. Bộ xử lý không bao giờ thực hiện lệnh hoặc đọc / ghi dữ liệu trực tiếp từ không gian hoán đổi.
Lưu ý rằng có thể có không gian hoán đổi trong một hệ thống không có máy ảo. Đó là, các quá trình truy cập trực tiếp vào địa chỉ vật lý, vẫn có thể có một phần của nó trên đĩa.
Mặc dù chủ đề khá cũ và đã được trả lời. Tôi vẫn muốn chia sẻ liên kết này vì đây là lời giải thích đơn giản nhất mà tôi tìm thấy cho đến nay. Liên kết dưới đây có sơ đồ để dễ hình dung hơn.
Sự khác biệt chính: Bộ nhớ ảo là một phần trừu tượng của bộ nhớ chính. Nó mở rộng bộ nhớ khả dụng của máy tính bằng cách lưu trữ các phần không hoạt động của RAM nội dung trên đĩa. Bất cứ khi nào nội dung được yêu cầu, nó sẽ tìm nạp nó trở lại RAM. Bộ nhớ hoán đổi hay không gian hoán đổi là một phần của ổ đĩa cứng được sử dụng cho bộ nhớ ảo. Do đó, cả hai cũng được sử dụng thay thế cho nhau.
Bộ nhớ ảo yên tĩnh khác với bộ nhớ vật lý. Các lập trình viên có quyền truy cập trực tiếp vào bộ nhớ ảo hơn là bộ nhớ vật lý. Bộ nhớ ảo là một phần trừu tượng của bộ nhớ chính. Nó được sử dụng để ẩn thông tin của bộ nhớ vật lý thực của hệ thống. Nó mở rộng bộ nhớ có sẵn của máy tính bằng cách lưu trữ các phần không hoạt động của nội dung RAM trên đĩa. Khi nội dung được yêu cầu, nó sẽ tìm nạp nó trở lại RAM. Bộ nhớ ảo tạo ra ảo giác về toàn bộ không gian địa chỉ với các địa chỉ bắt đầu bằng không. Nó chủ yếu được ưa thích vì tính năng tối ưu hóa, nhờ đó nó làm giảm yêu cầu về không gian. Nó bao gồm RAM và không gian đĩa có sẵn.
Bộ nhớ hoán đổi thường được gọi là không gian hoán đổi. Không gian hoán đổi đề cập đến phần bộ nhớ ảo được dành riêng làm vị trí lưu trữ tạm thời. Không gian hoán đổi được sử dụng khi RAM khả dụng không thể đáp ứng yêu cầu của bộ nhớ hệ thống. Ví dụ, trong hệ thống bộ nhớ Linux, hạt nhân định vị mỗi trang trong bộ nhớ vật lý hoặc trong không gian hoán đổi. Kernel cũng duy trì một bảng trong đó thông tin liên quan đến các trang đã hoán đổi và các trang trong bộ nhớ vật lý được lưu giữ. Các trang không được truy cập trong một thời gian dài sẽ được chuyển đến vùng không gian hoán đổi. Quá trình này được gọi là hoán đổi. Trong trường hợp yêu cầu cùng một trang, nó sẽ được hoán đổi trong bộ nhớ vật lý bằng cách hoán đổi một trang khác. Vì vậy,
"Bộ nhớ ảo" là một thuật ngữ chung. Trong Windows, nó được gọi là Paging hoặc pagination. Trong Linux, nó được gọi là Swap.