系统调用

计算机系统有两种模式,一种是用户模式,另一种是内核模式。在计算机系统中,有不同类型的进程在计算机系统中运行。当用户运行一个应用程序时,它被称为用户模式或计算机处于用户模式。当有硬件资源的需求时,进程向内核发出请求,以获得进程的访问权,然后计算机进入内核模式。这些请求是通过使用系统调用发出的。计算机在这两种模式之间频繁切换。每当任务完成后,计算机就会从内核模式返回到用户模式。这种模式的转换被称为上下文切换。

库调用

库调用是一种要求使用编程库中定义的特定功能的请求。一个库文件包含代码数据文件、对象文件,它们被打包成一个文件使用。要进行库调用,首先应该导入库。库调用可能依赖于系统调用来完成任务。

系统调用和库调用的区别

编号 系统调用 库调用
1 系统调用是由程序提出的进入内核模式的请求,以访问一个进程。 库调用是由程序提出的访问一个编程库中定义的库函数的请求。
2 在内核模式下,程序可以直接访问内存和硬件资源。 在用户模式下,程序不能直接访问内存和硬件资源。
3 在系统调用中,模式被执行或从用户模式切换到内核模式。 在库调用中,该模式只在用户模式下执行。
4 在系统调用中,执行过程的速度要比库调用慢,因为有一种过渡模式叫做上下文切换。 在库调用中,执行过程的速度比系统调用快,因为没有上下文切换的模式。
5 系统调用是一个由内核提供的函数,用于进入内核模式以访问硬件资源。 库调用是一个由编程库提供的函数,用于执行一项任务。
6 系统调用是内核的入口,因此它们不被链接到程序中。 库函数被链接到你的程序中。
7 系统调用是不可移植的。 库调用是可移植的。
8 系统调用比库调用有更多的权限,因为它是以监督模式运行的。 库调用比系统调用的权限小,因为它只在用户模式下运行。
9 系统调用是由系统提供的,并由系统内核执行。 库调用包括ANSI C标准库。
10 在系统调用中,所有的功能都是内核的一部分。 在库调用中,所有的库函数都是编程语言的标准库文件的一部分。
11 每当一个程序需要内存或硬件资源时,它直接向内核发出请求,通过使用系统调用获得进程访问。 每当程序员或开发者使用一个特定的库函数时,程序员必须通过在他的程序中加入一个头文件来调用库函数。预处理器(#)指令有助于包括头文件。一些有用的头文件是:#include<stdio.h>#include<math.h>#include<conio.h>
12 系统调用的例子有:fork()exec() 库调用的例子有:fopen()fclose()scanf()printf()