2011-09-01 28 views
12

Đây có thể là một câu hỏi ngớ ngẩn nhưng nó chỉ xuất hiện trong đầu tôi. Tất cả văn bản về không gian địa chỉ tiến trình và bố cục bộ nhớ ảo đều đề cập rằng không gian địa chỉ tiến trình có không gian dành riêng cho hạt nhân là . Ví dụ: trên hệ thống 32 bit, không gian địa chỉ tiến trình là 4GB trong đó 1 GB được dành riêng cho hạt nhân trong Linux (Có thể khác trên hệ điều hành khác).Tại sao hạt nhân được cho là đang trong không gian địa chỉ quy trình?

Tôi chỉ tự hỏi tại sao hạt nhân được gọi là trong không gian địa chỉ tiến trình khi một quá trình không thể trực tiếp địa chỉ hạt nhân. Tại sao chúng ta không nói rằng hạt nhân có một không gian địa chỉ riêng biệt hơn là một tiến trình và tại sao chúng ta không thể có một bảng trang khác cho chính hạt nhân tách biệt với các bảng trang của các tiến trình?

+0

Bạn có thể xác định một hoặc nhiều URL cụ thể mô tả cách không gian địa chỉ quy trình có không gian dành riêng cho hạt nhân không? Nó chắc chắn không phải là phổ quát; Tôi khá chắc chắn rằng có những hệ thống 32 bit (không nhất thiết dựa trên Linux) sử dụng hơn 3 GiB bộ nhớ chia sẻ trong một quá trình duy nhất, mà không để lại 1 GiB cho hạt nhân. –

+0

Tôi chỉ đưa ra một ví dụ rằng một số không gian được dành riêng cho hạt nhân. Các chi tiết cụ thể không quan trọng đối với câu hỏi. – vjain27

Trả lời

13

Khi quá trình thực hiện cuộc gọi hệ thống, chúng tôi không cần chuyển đổi bảng trang (từ bảng trang không gian địa chỉ tiến trình thành bảng trang không gian địa chỉ hạt nhân) để phục vụ cuộc gọi hệ thống (chỉ nên thực hiện ở chế độ hạt nhân)). Điều này được gọi là hạt nhân đang chạy trong bối cảnh quy trình.

Một số sự kiện hạt nhân không chạy trong ngữ cảnh quy trình sẽ tải các bảng trang chỉ dành cho hạt nhân.

OK?

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