- Published on
Hiểu về Linux System Calls cho DevOps & SRE
- Authors
- Name
- Bạch Đăng Tuấn
- Occupation
- Kỹ sư công nghệ thông tin
- Zalo: 0934.01.07.04
Hiểu về Linux System Calls cho DevOps & SRE
📑 Mục Lục
Trong bài viết này, chúng ta sẽ cùng tìm hiểu về Linux System Calls (Syscalls) — một chủ đề thường được đề cập trong các buổi phỏng vấn DevOps và SRE, đặc biệt là ở các công ty công nghệ lớn.
Vì sao DevOps/SRE cần hiểu Syscall?
- Không phải ai làm DevOps cũng thường xuyên làm việc với hệ thống thấp tầng hoặc xử lý sự cố hiệu năng.
- Theo kinh nghiệm thực tế của tôi là kỹ sư Cloud Engineer, chỉ khoảng 20% thời gian liên quan đến troubleshooting, còn lại chủ yếu là thiết kế & triển khai.
- Tuy nhiên, hiểu biết về Syscall rất quan trọng, vì chúng ta làm việc với server — và server = hệ điều hành.
Kiến thức nền tảng cần nắm
🔸 Kernel Space
- Là nơi hệ điều hành (kernel) hoạt động.
- Kernel kiểm soát mọi thứ: RAM, CPU, I/O, driver, security...
- Có toàn quyền truy cập hệ thống phần cứng.
🔸 Userspace
- Là nơi các ứng dụng người dùng chạy (trình duyệt, máy chủ web, terminal…).
- Không thể truy cập trực tiếp phần cứng.
- Khi ứng dụng gặp sự cố, hệ điều hành vẫn không bị crash — vì bị cách ly khỏi kernel.
Syscall là gì?
- Là giao tiếp giữa chương trình ở userspace với kernel để yêu cầu sử dụng tài nguyên hệ thống.
- Kernel đóng vai trò "người gác cổng", đảm bảo chương trình không phá vỡ hệ thống.
💡 Syscalls được triển khai trong kernel và người dùng gọi qua thư viện trung gian như glibc
trong C.

ls
Ví dụ thực tế: Lệnh ls
là lệnh userspace để hiển thị nội dung thư mục.- Khi bạn chạy
ls
, chương trình sẽ thực hiện hàng loạt syscall để hỏi kernel lấy thông tin file từ ổ đĩa. - Quá trình này bao gồm: open, read, stat, close…

Các loại System Call thường gặp
1. Process Control (Quản lý tiến trình)
fork()
: Tạo tiến trình mớiexec()
: Thay thế tiến trình hiện tại bằng chương trình khácexit()
: Kết thúc tiến trìnhwait()
: Đợi tiến trình conkill()
: Gửi tín hiệu đến tiến trình
💡 So sánh fork()
vs exec()
là câu hỏi phỏng vấn phổ biến.
2. File Management (Quản lý file)
open()
,close()
,read()
,write()
,unlink()
,chmod()
- Dùng để thao tác với file và metadata
3. Device Management (Quản lý thiết bị)
ioctl()
: Tương tác thiết bị theo cách đặc biệtread()
,write()
trên thiết bị
4. Information Maintenance (Thông tin hệ thống)
getpid()
: Lấy PID tiến trìnhtime()
,sysinfo()
,setpriority()
: Lấy/gán thông tin hệ thống
5. Communication / IPC (Giao tiếp liên tiến trình & mạng)
pipe()
: Tạo kênh giao tiếp một chiềushmget()
: Chia sẻ bộ nhớsocket()
,send()
,recv()
: Giao tiếp qua mạng
Kết luận
- Syscalls không phải là công cụ hàng ngày của DevOps, trừ khi bạn làm việc với performance tuning, kernel dev, hoặc troubleshooting sâu.
- Tuy nhiên, hiểu rõ cơ chế hoạt động và các loại syscall sẽ giúp bạn:
- Debug lỗi ứng dụng tốt hơn
- Xử lý vấn đề hiệu năng chuyên sâu
- Tự tin hơn khi đi phỏng vấn SRE/DevOps