Những giới hạn đó không đến từ Debian hoặc từ Linux, chúng đến từ phần cứng. Các kiến trúc khác nhau (bộ xử lý và bus bộ nhớ) có những hạn chế khác nhau.
Trên các bộ xử lý PC x86-64 hiện tại, MMU cho phép 48 bit không gian địa chỉ ảo . Điều đó có nghĩa là không gian địa chỉ được giới hạn ở 256TB. Với một bit để phân biệt địa chỉ kernel với địa chỉ người dùng, để lại 128TB cho không gian địa chỉ của quy trình.
Trên các bộ xử lý x86-64 hiện tại, địa chỉ vật lý có thể sử dụng tối đa 48 bit , có nghĩa là bạn có thể có tối đa 256TB. Giới hạn đã tăng dần kể từ khi kiến trúc amd64 được giới thiệu (từ 40 bit nếu tôi nhớ lại chính xác). Mỗi bit của không gian địa chỉ tốn một số logic nối dây và giải mã (làm cho bộ xử lý đắt hơn, chậm hơn và nóng hơn), vì vậy các nhà sản xuất phần cứng có động cơ để giảm kích thước.
Linux chỉ cho phép các địa chỉ vật lý lên tới 2 ^ 46 (vì vậy bạn chỉ có thể có tối đa 64TB) vì nó cho phép bộ nhớ vật lý được ánh xạ hoàn toàn trong không gian kernel. Hãy nhớ rằng có 48 bit không gian địa chỉ; một bit cho kernel / user để lại 47 bit cho không gian địa chỉ kernel. Một nửa số đó tại hầu hết các địa chỉ bộ nhớ vật lý trực tiếp và nửa còn lại cho phép kernel ánh xạ bất cứ thứ gì nó cần. (Linux có thể đối phó với bộ nhớ vật lý không thể được ánh xạ đầy đủ cùng một lúc, nhưng điều đó mang lại sự phức tạp bổ sung, do đó, nó chỉ được thực hiện trên các nền tảng mà nó yêu cầu, chẳng hạn như x86-32 với PAE và armv7 với LPAE.)
Nó hữu ích cho bộ nhớ ảo lớn hơn bộ nhớ vật lý vì nhiều lý do:
- Nó cho phép kernel ánh xạ toàn bộ bộ nhớ vật lý và còn chỗ trống cho các cặp bản đồ ảo.
- Ngoài các ánh xạ của bộ nhớ vật lý, còn có các ánh xạ hoán đổi, các tệp và trình điều khiển thiết bị.
- Thật hữu ích khi có bộ nhớ chưa được ánh xạ ở những nơi: các trang bảo vệ để bắt tràn bộ đệm , các vùng chưa được xử lý lớn do ASLR , v.v.