System call là gì?

Phrase None
Lời gọi hệ thống

Lời gọi hệ thống (system call) là một yêu cầu do một chương trình thực hiện đối với hệ điều hành (operating system). Nó cho phép một ứng dụng truy cập các hàm (function) và lệnh từ API của hệ điều hành.

Lời gọi hệ thống (system call) thực hiện các hoạt động cấp hệ thống, chẳng hạn như giao tiếp với các thiết bị phần cứng và đọc và ghi file. Bằng cách thực hiện các lời gọi hệ thống (system call), các nhà phát triển có thể sử dụng các hàm viết sẵn được hỗ trợ bởi hệ điều hành (OS) thay vì viết chúng từ đầu. Điều này giúp đơn giản hóa việc phát triển, cải thiện độ ổn định của ứng dụng và làm cho ứng dụng dễ "di động" hơn giữa các phiên bản hệ điều hành khác nhau.

Các ứng dụng chạy trong một vùng bộ nhớ được gọi là không gian người dùng (user space). Một lời gọi hệ thống (system call) truy cập vào kernel của hệ điều hành chạy trong không gian kernel (kernel space). Khi một ứng dụng thực hiện một lời gọi hệ thống kernel space, trước tiên nó phải yêu cầu sự cho phép từ kernal. Điều này có thể được thực hiện với một yêu cầu ngắt (interrupt), yêu cầu này sẽ tạm dừng tiến trình (process) hiện tại và chuyển quyền điều khiển cho kernel.

Nếu yêu cầu được cho phép, kernel sẽ xử lý yêu cầu, chẳng hạn như tạo hoặc xóa file. Khi hoạt động hoàn tất, kernel chuyển kết quả đầu ra (output) trở lại ứng dụng, nó sẽ chuyển dữ liệu từ không gian kernel sang không gian người dùng trong bộ nhớ. Ứng dụng nhận đầu ra từ kernel làm đầu vào (input). Trong mã nguồn (source code) của một chương trình, đây có thể là một giá trị tham số (parameter) hoặc một giá trị trả về (return value) trong một hàm. Sau khi nhận được thông tin đầu vào, ứng dụng sẽ tiếp tục quá trình.

Một lời gọi hệ thống (system call) cơ bản, chẳng hạn như lấy ngày và giờ của hệ thống, có thể mất vài nano giây. Một lời gọi hệ thống (system call) nâng cao hơn, chẳng hạn như thiết lập giao tiếp với thiết bị mạng có thể mất vài giây. Để tránh tắc nghẽn (bottleneck), hầu hết các hệ điều hành khởi tạo một kernel thread riêng biệt cho mỗi lời gọi hệ thống (system call). Các hệ điều hành hiện đại đa luồng, có nghĩa là chúng có thể xử lý nhiều lời gọi hệ thống (system call) cùng một lúc.

Learning English Everyday