Trong Linux kernel, biết được cách memory được chia tách như thế nào bên trong hệ thống là cực kỳ quan trọng. Vì biết các chương trình nằm ở đâu và yêu cầu trên hệ thống để có thể chi chuyển memory từ nơi này đến nơi khác, có thể cung cấp cho chúng ta một cái nhìn sâu sắc về performance, hoặc những thiếu xót bên trong hệ thống. Và khi nói đến networking – nơi chúng ta cần di chuyển các gói tin thông qua một hệ thống, việc có kiến thức này thậm chí trở nên quan trọng hơn bao giờ hết.
Xem thêm: System call là gì
Phân biệt Kernel Space và User Space
Memory được chia vào 2 khu vực, còn được biết đến là kernel space và user space.
- Kernel Space: Mã thực thi có quyền truy cập không hạn chế vào bất kỳ không gian địa chỉ nào của memory và tới bất kỳ phần cứng nào. Nó được dành riêng cho các chức năng có độ tin cậy cao nhất bên trong hệ thống. Kernel mode thường được dành riêng cho các chức năng hoạt động ở cấp độ thấp nhất, đáng tin cậy nhất của hệ điều hành. Do số lượng truy cập mà kernel có, bất kỳ sự không ổn định nào bên trong mã thực thi kernel cũng có thể dẫn đến lỗi hệ thống hoàn toàn.
- User Space: Mã thực thi bị giới hạn truy cập. Nó là không gian địa chỉ mà các process user thông thường chạy. Những processes này không thể truy cập trực tiếp tới kernel space được. Khi đó lời gọi API được sử dụng tới kernel để truy vấn memory và truy cập thiết bị phần cứng. Bởi truy cập bị hạn chế, các trục trặc hay vấn đề gì xảy ra trong user mode chỉ bị giới hạn trong không gian hệ thống mà chúng đang hoạt động và luôn có thể khôi phục được. Hầu hết các đoạn mã đang chạy trên máy tính của bạn sẽ thực thi trong user mode.