2011-07-07 34 views
12

Tôi đã được hỏi trong một cuộc phỏng vấn nếu bộ nhớ ảo là vô hạn? Tôi trả lời rằng nó không phải là vô hạn. Sau đó, người phỏng vấn đã hỏi giải thích và những gì tôi đề nghị là trong các cửa sổ chúng tôi có một cách thủ công để cấu hình bộ nhớ ảo đến một giới hạn nhất định.Bộ nhớ ảo có vô hạn không?

Tôi muốn biết liệu bộ nhớ ảo có thực sự là Vô hạn không?

Trả lời

24

Trước hết, hãy quên ý tưởng rằng bộ nhớ ảo bị giới hạn bởi kích thước của con trỏ trên máy của bạn.

Giới hạn bộ nhớ ảo không giống với không gian địa chỉ. Bạn có thể giải quyết nhiều bộ nhớ ảo hơn là có sẵn trong không gian địa chỉ dựa trên con trỏ của bạn bằng cách sử dụng phân trang.

  • bộ nhớ ảo giới hạn trên được thiết lập bởi hệ điều hành : ví dụ, trên Windows 32-bit giới hạn là 16TB, và trên 64-bit của Windows giới hạn là 256TB.
  • Bộ nhớ ảo cũng bị hạn chế về mặt vật lý bởi không gian đĩa có sẵn .

Đối với một cái nhìn tổng quan tuyệt vời, trong đó đề cập đến quan niệm sai lầm khác nhau, thấy như sau:

http://blogs.msdn.com/b/ericlippert/archive/2009/06/08/out-of-memory-does-not-refer-to-physical-memory.aspx

+0

Có @stusmith tôi nghĩ bạn đúng về Bạn có thể giải quyết nhiều bộ nhớ ảo hơn là có sẵn trong con trỏ của bạn, và nó là toàn bộ ý tưởng về việc sử dụng bộ nhớ ảo. –

+0

Bộ nhớ ảo không được giới hạn chính xác bởi không gian đĩa, nó có thể được cấp phát nhưng không được ánh xạ, được gọi là "bộ nhớ ảo được bảo lưu". Xem https://msdn.microsoft.com/en-us/library/windows/desktop/aa366887 (v=vs.85).aspx và MEM_RESERVE để được giải thích. –

3

Nếu không có gì khác thì bộ nhớ ảo sẽ bị giới hạn bởi dung lượng ổ đĩa sẵn có, điều này thật đáng buồn là vô tận.

0

Bộ nhớ ảo là tổng kết RAM và dung lượng ổ cứng khả dụng trong hầu hết các trường hợp. Khi tổng kết là một số đếm được, nó không thể là vô cùng.

+0

'bộ nhớ ảo là tổng bộ nhớ RAM và ổ cứng còn trống trong hầu hết các cases' sai. RAM là bộ nhớ vật lý, không phải là ảo – Raoul

+0

@raoul: tôi không nói ram là bộ nhớ ảo. – Donotalo

+0

bạn đã nói rõ ràng 'Bộ nhớ ảo là tổng kết RAM và dung lượng ổ cứng trống trong hầu hết các trường hợp'. – Raoul

2

Ít nhất, kích thước bộ nhớ ảo bị giới hạn bởi kích thước của con trỏ trên nền tảng nhất định (trừ khi con trỏ có gần/xa và mô hình bộ nhớ không phẳng). Ví dụ, bạn không thể giải quyết nhiều hơn khoảng 2^32 (4GB) bộ nhớ bằng cách sử dụng một con trỏ 32 bit.

Trong thực tế, bộ nhớ ảo phải được sao lưu bằng thứ gì đó cuối cùng - như một tệp trang trên đĩa - do đó kích thước bộ nhớ thực thi một giới hạn thực tế hơn.

+0

Xin lỗi, đó là sai. Tra cứu "PAE" (Mở rộng địa chỉ vật lý) chẳng hạn. – stusmith

+1

@stusmith: Một hạt nhân Linux hỗ trợ PAE yêu cầu CPU cũng hỗ trợ PAE. Vì vậy, nó bị giới hạn bởi kiến ​​trúc máy tính, phải không? –

+2

@logic_max: Có, nhưng một chip Intel 32 bit có khả năng hỗ trợ PAE. Có lẽ một cách tốt hơn để đặt nó là: nó là giá trị thấp nhất của [chip hỗ trợ, giới hạn hệ điều hành, không gian đĩa]. Thông thường giá trị thấp nhất là không gian đĩa. – stusmith

0

Bạn có quyền nói, không, nó không phải là vô hạn. Bộ nhớ ảo địa chỉ bị giới hạn bởi không gian địa chỉ kiến ​​trúc. Để biết thêm thông tin, hãy xem virtual memory.

0

Kích thước của bộ nhớ ảo bị giới hạn bởi lược đồ địa chỉ của hệ thống máy tính và số lượng bộ nhớ thứ cấp có sẵn và không theo số lượng thực tế của các vị trí bộ nhớ chính.

Ví dụ: - Ngay cả khi bạn có 20 TB bộ nhớ phụ, điều đó không có nghĩa là bộ nhớ ảo có thể là 20TB. Nó bị hạn chế bởi kiến ​​trúc máy tính của bạn.

Các vấn đề liên quan