Giới hạn không gian địa chỉ bộ nhớ ảo của ứng dụng Win32 là gì?


2

Dưới đây là những gì tôi hiểu, xin vui lòng sửa cho tôi nếu tôi sai về phần 3 GB?

  • không gian địa chỉ bộ nhớ ảo của ứng dụng win32 bị giới hạn bởi 4GB.

  • Trong không gian địa chỉ bộ nhớ 4GB mà mỗi quá trình nhận được, chỉ có 2GB thực sự có sẵn cho chương trình sử dụng; 2GB khác được dành riêng để sử dụng bởi kernel.

  • Tùy chọn khởi động / 3GB có thể cho phép một số chương trình sử dụng nhiều không gian địa chỉ bộ nhớ hơn.

Nếu một ứng dụng win32 như vậy đang chạy trên HĐH Win64,

  • giới hạn 4GB trên của tổng không gian địa chỉ bộ nhớ ảo có thể truy cập vẫn được áp dụng?

  • giới hạn 2GB vẫn được áp dụng?

  • tùy chọn / 3GB vẫn khả dụng?

cảm ơn!


1
một loạt các bài đăng trên blog phải đọc của Mark Russinovich, bài này về điểm: blog.technet.microsoft.com/markrussinovich 2008/11/17/17
Amro

Câu trả lời:


7

Nhắc đến bảng ở đây , chúng ta có thể thấy rằng một ứng dụng 32 bit có thể có ba giới hạn bộ nhớ ảo khác nhau:

Một ứng dụng 32 bit được liên kết với /LARGEADDRESSAWAREcờ trên x64 Windows sẽ nhận được 4GB cho chính nó.

Một ứng dụng 32 bit được liên kết với /LARGEADDRESSAWAREcờ trên x86 Windows với /3GBcờ khởi động sẽ có 3GB cho chính nó.

Trong tất cả các trường hợp khác, ứng dụng 32 bit sẽ được phân chia ứng dụng / kernel 2GB / 2GB mặc định ..


1

Vâng, phụ thuộc , không.


1
Không có tùy chọn / 3GB trên HĐH 64 bit, nhưng không cần thiết. Các ứng dụng LAA 32 bit luôn có thể sử dụng bộ nhớ ảo 4GB đầy đủ trên các phiên bản Windows 64 bit.
David Schwartz

Er, không hoàn toàn "luôn luôn". Một ứng dụng 32 bit sẽ phải được liên kết với / LARGEADDRESSAWARE để sử dụng 4GB bộ nhớ ảo. Nếu không, nó bị giới hạn ở mức 2GB.
Jamie Hanrahan
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.