1.1 System call(linux)系统函数调用过程/如何查看linux内核版本 您所在的位置:网站首页 如何查看linux操作系统版本号码 1.1 System call(linux)系统函数调用过程/如何查看linux内核版本

1.1 System call(linux)系统函数调用过程/如何查看linux内核版本

2023-06-08 17:53| 来源: 网络整理| 查看: 265

System call A system call is a controlled entry point into the kernel, allowing a process to request that the kernel perform some action on the process’s behalf.

系统调用是内核控制的的一个接入点,让进程请求内核代替它进行一系列行为的操作。本质上讲系统调用就是内核定义的一个数字,不同的系统调用方法用不同的数字标识。 系统调用的过程:

1.调用在C library里包装好的方法。 2.函数参数通过stack传入,参数->stack->copy->registers寄存器。 3.将标识改系统调用方法的数字传入CPU register。 4.执行具体的指令。用户模式切换到内核模式。 The wrapper function executes a trap machine instruction (int 0x80) 0x80是CPU定义的指令,每个数字表示CPU做不同的操作。 trap machine相当于一个开关,要CPU做什么样的操作就按相应的开关,而不同开关用不同的数字标识。 5.对CPU指令相应结果处理。 On Linux, system call service routines follow a convention of returning a nonnegative value to indicate success. In case of an error, the routine returns a negative number, which is the negated value of one of the errno constants.

系统调用成功:返回一个正数。 系统调用失败:返回一个负数,在errno中定义中表示的一个错误码。

1.1 System call(linux)系统函数调用过程/如何查看linux内核版本_linux

上图是《The linux programing interface》一书中描述的系统方法调用的过程。

最初在我们个人编写的程序中就是简单一个方法中的调用语句。经过C编译包装就编程了对应到CPU指令的指令集对应的数字,然后内核相应处理执行者将该指令对应的数字抛给CPU,就完成了系统方法的调用。最后如果返回了错误,就返回相应的错误标示。

查看内核版本:uname -srm 查看内核信息:hostnamectl



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

      专题文章
        CopyRight 2018-2019 实验室设备网 版权所有