Hệ điều hành hiện đại vận hành dưới hai chế độ quyền hạn riêng biệt để bảo vệ phần cứng và dữ liệu hệ thống: User Mode (Chế độ người dùng) và Kernel Mode (Chế độ hạt nhân).
1. User Mode (Chế độ người dùng)
- Môi trường chạy các ứng dụng người dùng (trình duyệt, trình soạn thảo, game...).
- Quyền hạn **thấp**: Không được truy cập trực tiếp phần cứng, không được thực hiện lệnh đặc quyền.
- Nếu cố gắng thực hiện lệnh đặc quyền -> Gây ra **Exception/Interrupt** -> Chuyển sang Kernel Mode để OS xử lý (thường kill process).
- Bộ nhớ: Chỉ truy cập được không gian địa chỉ ảo của chính process đó.
2. Kernel Mode (Chế độ hạt nhân / Supervisor Mode)
- Môi trường chạy lõi hệ điều hành (Kernel), driver thiết bị.
- Quyền hạn **cao nhất (Đặc quyền)**: Truy cập toàn bộ phần cứng, quản lý bộ nhớ, lập lịch CPU, xử lý ngắt.
- Các lệnh đặc quyền (Privileged Instructions): Quản lý I/O, Chuyển đổi chế độ, Quản lý ngắt, Cấu hình MMU/Page Table.
3. Cơ chế chuyển đổi (Mode Switching)
Chuyển từ User Mode -> Kernel Mode xảy ra khi:
- System Call (Gọi hệ thống): App yêu cầu dịch vụ OS (đọc file, tạo process, malloc...). Sử dụng lệnh `syscall` / `int 0x80` / `svc`.
- Interrupt (Ngắt phần cứng): Bàn phím, chuột, timer, network card gửi tín hiệu.
- Exception/Trap (Ngoại lệ): Chia cho 0, truy cập bộ nhớ sai, lệnh không hợp lệ.
Chuyển từ Kernel -> User: Trả về từ System Call, Khởi động process mới, Context Switch.
4. Tầm quan trọng của Dual Mode
- Bảo vệ (Protection): Process lỗi không làm sập toàn bộ hệ thống.
- Cách ly (Isolation): Process A không đọc/ghi bộ nhớ Process B.
- Bảo mật (Security): Ngăn chặn malware can thiệp kernel (nếu kernel an toàn).
Minh họa luồng xử lý System Call
User Process (User Mode)
|
| 1. Gọi hàm thư viện (glibc) -> read(fd, buf, n)
v
| 2. Thực hiện lệnh syscall (Assembly) -> Trap vào Kernel
v
Kernel (Kernel Mode)
|
| 3. System Call Handler xác thực, truy cập ổ cứng (Driver)
|
| 4. Copy dữ liệu từ Kernel Buffer -> User Buffer
|
| 5. Trả về (return from syscall) -> Quay lại User Mode
v
User Process (Tiếp tục chạy)
Hiểu rõ Dual Mode là cơ sở để lập trình hệ thống (System Programming), viết driver, và phân tích bảo mật (Rootkit, Exploit kernel).