Intro and Overview
- 1Intro and OverviewThis article
- 2Kernel và ranh giới cô lập
- 3Page Tables
xv6 là một unix OS, được phát triển nhằm mục đích education của đại học MIT. Hệ điều hành xv6 lúc đầu được viết cho kiến trúc x86, nhưng về sau đã được chuyển đổi sang kiến trúc RISC-V để phù hợp với kiến trúc mở và chạy trên multicore. xv6 được chạy giả lập trên QEMU với khoảng ~6000 line code chủ yếu viết bằng ngôn ngữ C và assembly.
xv6 được thiết kế với mục đích nhỏ gọn nhưng vẫn mang những đặc trưng cốt lõi của Unix bao gồm
- Processes: chạy trong các không gian địa chỉ ảo (virtual address spaces) riêng biệt, được hỗ trợ bởi các bảng phân trang (page tables).
- Filesystem: hỗ trợ tệp và cấu trúc thư mục phân cấp kiểu Unix.
- Pipes: cho phép truyền dữ liệu (pipe data) từ chương trình này sang chương trình khác.
- Multitasking: có ngắt bộ đếm thời gian (timer interrupt) để các tiến trình chạy song song thông qua chia sẻ thời gian (time slicing).
- System calls: hỗ trợ 21 lời gọi hệ thống cơ bản (so với 300-500 của các hệ điều hành thực tế).
xv6 tích hợp 1 shell đơn giản gồm 10 lệnh:
- cat, echo, grep, kill, ln, ls, mkdir, rm, wc.
xv6 cũng đã lược bỏ những thức phức tạp như: không có user IDs, không có quy trình login hay xác thực. Các bit bảo vệ tệp như Read, Write, Execute cũng được loại bỏ. Không có lệnh mount, chỉ sử dụng 1 hệ thống tệp. Không hỗ trợ Paging out, không thể chuyển không gian ảo ra disk, nghĩa là không thể chạy nhiều tiến trình vượt quá dung lượng RAM vật lý. Không hỗ trợ Networks, không có cơ chế giao tiếp IPC giữa các processes.
Các System Calls có trong xv6
- fork , wait , exit, kill, getpid, sleep.
- open, close, read, write, pipe, exec, mknod, link, unlink, fstat, chdir, dup.
- sbrk (mở rộng vùng nhớ heap), uptime (xem thời gian kernel đã chạy).
Ref:
[1] https://pdos.csail.mit.edu/6.828/2025/xv6/book-riscv-rev5.pdf
[2] https://pdos.csail.mit.edu/6.828/2025/














