当前位置:   article > 正文

库函数和系统调用的区别_库函数调用需要切换内核态

库函数调用需要切换内核态

一、系统调用


系统调用,我们可以理解是操作系统为用户提供的一系列操作的接口(API),这些接口提供了
对系统硬件设备功能的操作。这么说可能会比较抽象,举个例子,
我们最熟悉的 hello world 程序会在屏幕上打印出信息。程序中调用了 printf() 函数,而库
函数 printf 本质上是调用了系统调用 write() 函数,实现了终端信息的打印功能。


二、库函数


库函数可以理解为是对系统调用的一层封装。系统调用作为内核提供给用户程序的接口,它的
执行效率是比较高效而精简的,但有时我们需要对获取的信息进行更复杂的处理,或更人性化
的需要,我们把这些处理过程封装成一个函数再提供给程序员,更方便于程序猿编码。


三、系统调用意义


  避免了用户直接对底层硬件进行编程。比如最简单的hello world程序是将信息打印到终端,
终端对系统来说是硬件资源,如果没有系统调用,用户程序需要自己编写终端设备的驱动,
以及控制终端如何显示的代码。
  隐藏背后的技术细节。比如读写文件,如果使用了系统调用,用户程序无须关心数据在磁盘的
哪个磁道和扇区,以及数据要加载到内存什么位置。
  保证系统的安全性和稳定性。要知道用户程序是不能直接操作内核地址空间的,比如一个刚
出道的程序猿,让他直接去访问内核底层的数据,那么内核系统的安全性就无法保证。
而系统调用的功能是由内核来实现,用户只需要调用接口,无需关心细节,也避免了系统的安全
隐患。方便程序的移植性。如果针对一个系统资源的功能操作比如 write()&

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小蓝xlanll/article/detail/256364
推荐阅读
相关标签
  

闽ICP备14008679号