2011-12-17 35 views
5

Trong trạng thái giả this câu trả lời: With the 64-bit x86_64 kernel, a 32-bit process can use the entire 4GB address space, except for a couple pages (8KB) at the end of the 4GB address space which are managed by the kernel.32-bit xử lý của địa chỉ trên 64-bit Linux

mục đích của bộ nhớ hạt nhân quản lý này là gì? Nó có nên ở trong không gian hạt nhân, để ngăn chặn sự tham nhũng tình cờ của người dùng không?

Trả lời

6

Trích dẫn nguồn hạt nhân: “Con trỏ hạt nhân có thông tin thừa, vì vậy chúng tôi có thể sử dụng lược đồ nơi chúng tôi có thể trả lại mã lỗi hoặc con trỏ [...] với cùng giá trị trả về.

Các giá trị -1 ..- 4095 (ánh xạ tới 0xfffff000–0xffffffff ở chế độ 32 bit) được dành riêng cho các giá trị errno cấp hạt nhân. 4KB khác từ 0xffffe000–0xffffefff được tổ chức miễn phí cho trang ma thuật vsyscall vdso, nhưng vì trang vdso có thể định vị lại vì nhiều mặt trăng, nên khu vực này vẫn có khả năng chưa được khai thác, tức là mục nhập [stack] trong số /proc/*/maps kết thúc ở 0xffffdfff luôn không phân biệt cho dù [vdso] được ánh xạ tại 0xffffe000 hoặc ở nơi khác.

+1

'-4095 .. -1' là' 0xfffff001 .. 0xffffffff'. '0xfffff000' là' -4096', không phải '-4095', vì vậy nó là giá trị trả về không hợp lệ từ mmap. ([định hình trang đó không thực sự hoạt động] (https://stackoverflow.com/questions/47712502/why-cant-i-mmapmap-fixed-the-highest-virtual-page-in-a-32-bit- linux-process-o), nhưng tôi không tin rằng đó là lý do, trừ khi có một VMA ẩn chứa phần trên cùng để hạt nhân không phải lo lắng về không gian người dùng truyền chúng như args để 'read' hoặc một cái gì đó .) –

2

Một số bộ nhớ hạt nhân có thể nằm trong không gian địa chỉ của người dùng ứng dụng và được sắp xếp theo số mmap -ed với PROT_NONE. Một số không gian địa chỉ sau đó sẽ được sử dụng, nhưng không được truy cập bởi chương trình (vì vậy không có tham nhũng là có thể).

+0

tại sao hạt nhân sẽ phân bổ bộ nhớ trong không gian người dùng? Bạn có thể chỉ ra bất kỳ tài nguyên nào về điều đó không? – pbp

+0

Đó là phân bổ không gian địa chỉ, không thực sự bộ nhớ ... Câu trả lời của Jorgensen http://stackoverflow.com/a/8547556/841108 giải thích tại sao ... –

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