2016 - 2024

感恩一路有你

交流方式 过程调用和系统调用的区别?

浏览量:1273 时间:2021-03-11 07:19:07 作者:admin

过程调用和系统调用的区别?

所谓的系统调用是由内核提供的一系列功能强大的函数。这些系统调用是在内核中实现的,然后以某种方式将系统调用给用户,一般通过gate(TRAP)实现。系统调用是用户程序与内核之间的接口。系统调用的整个过程可以概括如下:

1。执行用户程序(如fork)

2。根据glibc中的函数实现,获取系统调用号,执行int$0x80生成中断。

3. 转换地址空间并切换堆栈,然后执行save ALL.(内核模式)

4。中断处理,并根据系统调用表调用内核函数。

5. 执行内核函数。

6. 在长期的编程中,人们发现使用系统调用有一个很大的缺点,即程序的可移植性。例如,Linux系统提供的系统调用函数与windows系统提供的不同。它们不仅实现方式不同,而且提供给用户的函数名和参数也不同。因此,一个很好的实现程序,使用Linux系统调用wait4等函数,那么他在windows上编译是不会通过的。于是人们想到了一种方法,就是封装windows和Linux系统调用,给你一个统一的函数(我以前叫它接口),这样程序的可移植性问题就解决了。因此我们可以认为库函数是系统调用的封装(并非所有库函数都是),以解决一些公共问题,提供统一的系统调用接口。库函数和系统调用的优缺点是:系统调用的速度明显快于库函数(不是全部,但大部分都是),但系统调用缺乏可移植性。库函数比较慢,但是解决了移植的问题。在开发过程中,我们应该根据自己的实际情况来决定使用哪个

系统调用,它是内核直接提供给用户层的接口。比如读写。仔细观察这些系统调用可以发现,当内核实现它们时,它有一个同名的do函数。换句话说,系统调用中仍然有一些底层函数。库函数是用户自己编写的接口或api。比如libc。比如FREAD、fwrite等,看一下库函数的实现,它们一般都是对系统调用的重新封装。在freead中调用read。

交流方式 系统调用有哪些 linux常用系统调用

版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。