Tôi sẽ cung cấp cho bạn một câu trả lời đơn giản, nhưng để biết thêm thông tin, tôi khuyên bạn nên liên kết bên dưới với tài liệu kiến trúc của AMD, đọc rất dễ dàng.PS: Tôi chưa bao gồm Xeon hoặc PAE ở đây ..
Kiến trúc IA-32 (x86) có bus địa chỉ vật lý 32 bit cho RAM.
Xe buýt 32 bit được chia tách thành các phân đoạn 2x16bits, mỗi đoạn có khả năng truy cập 2GB RAM với tổng số 4GB.
Điều này được gọi là chuyển đổi ngân hàng bộ nhớ.
Để cho phép bảo vệ, Intel cùng với MS đã quyết định sử dụng một phân đoạn cho kernelmode và một cho usermode - đó là lý do tại sao Windows trong lịch sử có không gian địa chỉ usermode 2GB. Đó là giới hạn phần cứng x86, không phải là giới hạn của Windows.
Phân khúc này ghi lại không gian hạt nhân và địa chỉ không gian người dùng được tách biệt. Đó là cách bảo vệ bộ nhớ được thực hiện.
Ngoài ra, tổng đài IA-32 cũng có thanh ghi bên trong 32 bit nên không thể trang. Đây là chế độ thực (không có bản dịch địa chỉ).
Phân trang yêu cầu 36bits Tôi nghĩ (không báo cho tôi) là nơi IA32e xuất hiện. Các bit bổ sung trên IA-32e cho phép phân trang từ HDD, đây là cách duy nhất có thể chạy trên x64 Windows kể từ x64 yêu cầu NX và nó nằm ở bit 63.
Vui lòng đọc tài liệu kiến trúc AMD, cá nhân tôi tìm thấy chúng nhiều thông tin hơn các phiên bản của Intel.
http://developer.amd.com/wordpress/media/2012/10/24593_APM_v21.pdf
PS với AMD64 bộ nhớ phẳng được giới thiệu, với việc từ bỏ phân khúc.
Tuy nhiên, các quy trình 32bit vẫn cần đăng ký phân đoạn. Trên AMD64 khi một quá trình 32 bit chạm đầu stack, một con trỏ được ném đến một địa chỉ cơ sở trên thanh ghi phân đoạn mới. Bằng cách này, các ứng dụng 32 bit có hiệu quả có thể ăn nhiều RAM tùy thích, không giới hạn. Cũng trong vòng lý do ... ...
Hy vọng điều này sẽ hữu ích.
Bạn đang sử dụng bộ tách rời nào? Có lẽ nó mặc định luôn luôn deducing và hiển thị đăng ký phân khúc dựa trên opcode ngay cả khi bộ nhớ không được phân đoạn. – Michael
@Michael: Tôi đang sử dụng ollydbg – Krab
Bộ nhớ vẫn được phân đoạn, mặc dù các hệ điều hành phổ biến nhất chỉ sử dụng một phân đoạn và đặt tất cả các thanh ghi phân đoạn thành cùng một giá trị. –