c - 系统调用 - 内核使用的函数

标签 c kernel

我被问及系统调用,它们是什么,它们用于哪种模式,以及 read()、getchar() 和 sqrt() 是否使用系统调用。

对于第一部分,我回答说系统调用提供进程和操作系统之间的接口(interface),这些在内核模式下使用。

困扰我的是,对我来说,唯一使用这 3 个系统调用的函数是 read()。

我说的对吗?或者 getchar() 和 sqrt() 也使用系统调用?

(注意:来自 unistd.h 的 read() 来自 stdio.h 的 getchar() 和来自 math.h 的 sqrt())

最佳答案

系统调用和常规调用的区别在于,系统调用必须向操作系统发出陷阱,而常规调用只调用另一个用户级子例程。您说得对,区别在于执行调用的模式。

Sqrt 不是系统调用。它所做的只是执行一个简单的计算。如果我没记错的话,read() 和 getchar() 都是系统调用,因为操作系统是处理输入/输出操作的系统。

关于c - 系统调用 - 内核使用的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44641146/

相关文章:

c - 确保系统调用中的 UID/GID 检查在 RCU 临界区中执行

c++ - 在 C 和 C++ 中调用函数时 EAX 寄存器的初始化差异

linux - 在/proc/sockstat 中,哪些 TCP 状态算作 'inuse' 哪些算作 'alloc'?

c++ - 在 OpenCL 内核中实现半精度 float 据类型

C:仅在声明后赋值时编译

c - 如何正确实现c malloc/realloc函数?

linux - 内核如何区分线程和进程

c - 字数统计程序 - stdin

c++ - 有符号零的最小值和最大值

c - 在事先不知道将输入多少个值的情况下如何设计输入?