问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

linux 系统api 和kernel api 一样么

发布网友 发布时间:2022-04-23 06:17

我来回答

5个回答

热心网友 时间:2023-10-03 05:18

linux kernel只提供一种叫系统调用给应用程序,linux系统提供了glibc这样的函数库专门封装了内核提供的系统调用,所以应用程序的开发就直接调用glibc库提供的库函数就可以了。

注:1、linux系统包括linux kernel、glibc库等。
2、因为应用程序调用系统调用是通过汇编指令完成的,所以才有了glibc的封装,简化了应用开发的难度。

kernel中提供的系统调用处理函数
sys_socket、sys_open、sys_close、sys_read、sys_write等
glibc中对应的是
socket、open、close、read、write等

glibc中的socket函数就是调用了int $0x80这条汇编指令,从而使cpu切换到内核态,执行sys_socket这个函数的。
函数调用流程:
socket->int $0x80->sys_socket。

现在2.6版本的内核提供了300多个系统调用:

glibc的下载地址:
http://ftp.gnu.org/gnu/glibc/
linux kernel的下载地址:

http://www.kernel.org/pub/linux/kernel/

热心网友 时间:2023-10-03 05:19

linux内核中调用用户空间的程序可以使用init这样的方式,调用 kernel_execve
不过内核还是提供了更好的辅助接口call_usermodehelper,自然最后也是调用kernel_execve
调用特定的内核函数(系统调用)是 GNU/Linux 中软件开发的原本就有的组成部分。但如果方向反过来呢,内核空间调用用户空间?确实有一些有这种特性的应用程序需要每天使用。例如,当内核找到一个设备, 这时需要加载某个模块,进程如何处理?动态模块加载在内核通过 usermode-helper 进程进行。
让我们从探索 usermode-helper 应用程序编程接口(API)以及在内核中使用的例子开始。 然后,使用 API 构造一个示例应用程序,以便更好地理解其工作原理与局限。
usermode-helper API
usermode-helper API 是个很简单的 API,其选项为用户熟知。例如,要创建一个用户空间进程,通常只要设置名称为 executable,选项都为 executable,以及一组环境变量(指向 execve 主页)。创建内核进程也是一样。但由于创建内核空间进程,还需要设置一些额外选项。

热心网友 时间:2023-10-03 05:19

你说的是 system call吧? Linux下开发使用glibc封装的版本,一般不直接调用。具体man syscalls:
The system call is the fundamental interface between an application and
the Linux kernel.

System calls and library wrapper functions
System calls are generally not invoked directly, but rather via wrapper
functions in glibc (or perhaps some other library). For details of
direct invocation of a system call, see intro(2). Often, but not
always, the name of the wrapper function is the same as the name of the
system call that it invokes. For example, glibc contains a function
truncate() which invokes the underlying "truncate" system call.
...

写记事本可以不调用sysem call, 如文件读写可以用标准的封装fread/fwrite而不是系统调用read/write。甚至可以直接用toolkit库的封装,如用GTK+或Qt等库的函数,不需要考虑具体的实现。

热心网友 时间:2023-10-03 05:20

kernel api只在写系统内核时使用,一般编程不会用。
一般编程最底层的调用也是系统调用,是对内核的封装,是与操作系统交互的最低层接口。
一般在linux编程还是使用库api,加系统调用。

热心网友 时间:2023-10-03 05:20

kernel就是Linux的核心

即使C也要调用kernel api吧
个人理解

热心网友 时间:2023-10-03 05:18

linux kernel只提供一种叫系统调用给应用程序,linux系统提供了glibc这样的函数库专门封装了内核提供的系统调用,所以应用程序的开发就直接调用glibc库提供的库函数就可以了。

注:1、linux系统包括linux kernel、glibc库等。
2、因为应用程序调用系统调用是通过汇编指令完成的,所以才有了glibc的封装,简化了应用开发的难度。

kernel中提供的系统调用处理函数
sys_socket、sys_open、sys_close、sys_read、sys_write等
glibc中对应的是
socket、open、close、read、write等

glibc中的socket函数就是调用了int $0x80这条汇编指令,从而使cpu切换到内核态,执行sys_socket这个函数的。
函数调用流程:
socket->int $0x80->sys_socket。

现在2.6版本的内核提供了300多个系统调用:

glibc的下载地址:
http://ftp.gnu.org/gnu/glibc/
linux kernel的下载地址:

http://www.kernel.org/pub/linux/kernel/

热心网友 时间:2023-10-03 05:19

linux内核中调用用户空间的程序可以使用init这样的方式,调用 kernel_execve
不过内核还是提供了更好的辅助接口call_usermodehelper,自然最后也是调用kernel_execve
调用特定的内核函数(系统调用)是 GNU/Linux 中软件开发的原本就有的组成部分。但如果方向反过来呢,内核空间调用用户空间?确实有一些有这种特性的应用程序需要每天使用。例如,当内核找到一个设备, 这时需要加载某个模块,进程如何处理?动态模块加载在内核通过 usermode-helper 进程进行。
让我们从探索 usermode-helper 应用程序编程接口(API)以及在内核中使用的例子开始。 然后,使用 API 构造一个示例应用程序,以便更好地理解其工作原理与局限。
usermode-helper API
usermode-helper API 是个很简单的 API,其选项为用户熟知。例如,要创建一个用户空间进程,通常只要设置名称为 executable,选项都为 executable,以及一组环境变量(指向 execve 主页)。创建内核进程也是一样。但由于创建内核空间进程,还需要设置一些额外选项。

热心网友 时间:2023-10-03 05:19

你说的是 system call吧? Linux下开发使用glibc封装的版本,一般不直接调用。具体man syscalls:
The system call is the fundamental interface between an application and
the Linux kernel.

System calls and library wrapper functions
System calls are generally not invoked directly, but rather via wrapper
functions in glibc (or perhaps some other library). For details of
direct invocation of a system call, see intro(2). Often, but not
always, the name of the wrapper function is the same as the name of the
system call that it invokes. For example, glibc contains a function
truncate() which invokes the underlying "truncate" system call.
...

写记事本可以不调用sysem call, 如文件读写可以用标准的封装fread/fwrite而不是系统调用read/write。甚至可以直接用toolkit库的封装,如用GTK+或Qt等库的函数,不需要考虑具体的实现。

热心网友 时间:2023-10-03 05:20

kernel api只在写系统内核时使用,一般编程不会用。
一般编程最底层的调用也是系统调用,是对内核的封装,是与操作系统交互的最低层接口。
一般在linux编程还是使用库api,加系统调用。

热心网友 时间:2023-10-03 05:20

kernel就是Linux的核心

即使C也要调用kernel api吧
个人理解
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
怀孕多久验孕棒能查出来 苹果8p屏幕有个很小的黑点,开始以为是脏东西,原来是屏幕,不仔细看看不... 剪映怎么添加音乐字幕 剪映添加音乐字幕教程 谁能帮我起个个性英文名 萧姓男孩名字2023年4月30日出生的 孩子父亲姓李是男孩1月4日下午5点20分出生叫李佳明希望行家根据五行五 ... 梦见别人买围巾 古代没有监控,青楼女子为何不逃跑,非要花大价钱赎身(不敢,也逃不了... 内蒙古2023年acca报名时间 内蒙古注会条件 VOViY97,1813A和1813T有什么区别 API到底是什么? 为什么linux下的API功能那么少 vivoy97h和v1813一样吗? linux下的系统调用和api有到底有什么区别 Ⅴiv0手机丫97屏幕跟V1813A手机屏幕是通用吗? linux的API和windows的API一样吗 能互相通用吗 Vivo v1813a有没有otg 功能? Linux库函数,Linux 系统API 这两个概念有区别吗? 电脑怎样设置蓝牙连接 蓝牙与电脑如何连接? 谁能帮忙我在千图网下素材 生活中,把妻子逼成什么样子,是丈夫的最大失职? 一个英文名字 女孩 带有萌这个字的中文意思 人到了中年,一定要把自己逼成什么样的状态? 请帮我起个女生哒英文名字。 穷会把人逼到什么样,你见过最“狼狈”的人是怎样的? 如何逼单 可爱特别的英文名 怎样看待逼读现象? linux的api函数哪里有,C和C++怎么调用API vivo v1813A有OTG吗 V1813A支持电信吗? linux内核提供的能够访问用户指针的api有哪些,哪些是安全的,怎么检查安全性 t恤衫穿久了衣领发黄怎么处理 vivov1813a和vivos1是同款手机壳吗? Linux操作系统API调用syscall 监控录像机录像存储时间怎样计算《模拟网络两种》最好有公式 vivo y97和v18131样吗? 白色的T恤穿几次领口就发黄了,怎么把它洗干净? API是什么意思 模拟摄像头一天能占硬盘多少G空间,我需要安装6路模拟摄像头24小时录像储... 衣服放久了,领子和袖口有些发黄,怎么洗掉? linux内核api有必要学吗 vivo y97和v1813一样吗? linux驱动程序中怎么做api函数供应用程序调用 什么是数字摄像机? 黑色的短袖衣服洗了几次领子变黄了怎么办? 16路的模拟摄像头要保存一年的视频需要多少容量? linux系统api一共多少个