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