一、系统调用
系统调用,我们可以理解是操作系统为用户提供的一系列操作的接口(API),这些接口提供了
对系统硬件设备功能的操作。这么说可能会比较抽象,举个例子,
我们最熟悉的 hello world 程序会在屏幕上打印出信息。程序中调用了 printf() 函数,而库
函数 printf 本质上是调用了系统调用 write() 函数,实现了终端信息的打印功能。
二、库函数
库函数可以理解为是对系统调用的一层封装。系统调用作为内核提供给用户程序的接口,它的
执行效率是比较高效而精简的,但有时我们需要对获取的信息进行更复杂的处理,或更人性化
的需要,我们把这些处理过程封装成一个函数再提供给程序员,更方便于程序猿编码。
三、系统调用意义
避免了用户直接对底层硬件进行编程。比如最简单的hello world程序是将信息打印到终端,
终端对系统来说是硬件资源,如果没有系统调用,用户程序需要自己编写终端设备的驱动,
以及控制终端如何显示的代码。
隐藏背后的技术细节。比如读写文件,如果使用了系统调用,用户程序无须关心数据在磁盘的
哪个磁道和扇区,以及数据要加载到内存什么位置。
保证系统的安全性和稳定性。要知道用户程序是不能直接操作内核地址空间的,比如一个刚
出道的程序猿,让他直接去访问内核底层的数据,那么内核系统的安全性就无法保证。
而系统调用的功能是由内核来实现,用户只需要调用接口,无需关心细节,也避免了系统的安全
隐患。方便程序的移植性。如果针对一个系统资源的功能操作比如 write()&