Hệ điều hành cho lập trình viên
Sê-ri đo đạc: hệ điều hành thật sự làm gì với chương trình của bạn — lời gọi hệ thống, chuyển ngữ cảnh, lỗi trang, lập lịch, bộ nhớ ảo, I/O — đo thật bằng strace, perf, /proc, /usr/bin/time trong container Linux dùng một lần.
4/45 phần đã đăng
Hệ điều hành
1
Lời gọi hệ thống
Một syscall (getpid) tốn ~123 ns, gấp 55 lần một lời gọi hàm (2 ns) — vì phải vượt vào kernel. Tôi tưởng glibc cache pid nên getpid rẻ; strace chứng minh nó trap mỗi lần. Đo thật.
03/09/2026
· 7 phút đọc
2
Chuyển ngữ cảnh
Chuyển ngữ cảnh giữa hai tiến trình trên cùng một lõi tốn ~691 ns. Nhưng lần đầu không ghim lõi tôi đo ra 15000 ns — vì hai tiến trình rơi vào hai lõi khác, đo nhầm đại lượng. Đo thật.
03/09/2026
· 7 phút đọc
3
fork và copy-on-write
fork một tiến trình 512MB chỉ tốn 28 micro giây — nó không sao chép data, chỉ chép bảng trang. Nhưng chi phí không mất: mỗi lần ghi sau đó trả một COW fault. Đo bằng getrusage thật.
03/09/2026
· 7 phút đọc
4
execve nạp chương trình
execve thay ảnh tiến trình tại chỗ: cùng PID, chương trình khác. Tôi bọc nó bằng printf trước và sau để đo — cả hai đều mất, vì execve vứt bộ đệm và không trở về. Đo bằng /proc thật.
03/09/2026
· 7 phút đọc
Còn 41 phần nữa sẽ lần lượt được đăng.