介绍系统调用之前,先来了解一下用户态和系统态。根据进程访问资源的特点,我们可以把进程在系统上的运行分为两个级别:
1. 用户态:用户态运行的进程或可以直接读取用户程序的数据。
2. 系统态:系统态运行的进程或程序几乎可以访问计算机的任何资源,不受限制。
我们运行的程序基本都是运行在用户态,如果我们调用操作系统提供的系统态级别的子功能就需要系统调用了。也就是说在我们运行的用户程序中,凡是与系统态级别的资源有关的操作(如文件管理、进程控制、内存管理等),都必须通过系统调用方式向操作系统提出服务请求,并由操作系统代为完成。这些系统调用按功能大致分为如下几类:
设备管理。完成设备的请求或释放,以及设备启动等功能。
文件管理。完成文件的读、写、创建以及删除等功能。
进程控制。完成进程的创建、撤销、阻塞以及唤醒等功能。
进程通信。完成进程之间的消息传递或信号传递等功能。
内存管理。完成内存的分为、回收以及获取作业占用内存区大小及地址等功能。