一、操作系统接口
操作系统接口是连接操作系统和应用软件的函数,表现为系统调用
二、系统调用
2.1 什么是系统调用
根据进程访问资源的特点,可以把进程在系统上的运行分为两个级别:
- 用户态:可以直接读取用户程序的数据的进程;
- 内核态:可以访问计算机任何资源的进程
凡是与系统态级别的资源有关的操作(如文件管理、进程控制、内存管理等)都必须通过系统调用方式向操作系统提出服务请求,并由操作系统代为完成。
系统调用功能大致分类:
- 设备管理:完成设备的请求、释放、启动等功能;
- 文件管理:完成文件的读、写、创建和删除等功能;
- 进程控制:完成进程的创建、撤销、阻塞和唤醒等功能;
- 进程通信:完成进程间消息传递或信号传递等功能;
- 内存管理:完成内存分配、回收以及获取作业占用内存区大小及地址等功能。
2.2 系统调用的实现
内存被硬件分割成两部分:内核态和用户态
用户态的应用程序不能进入内核态,因为内核中保存了操作系统的重要信息,比如 Linux 的 root 密码,如果被用户程序直接访问,很容易引起灾难;
操作系统保证用户态的应用程序不能进入内核态的方法:通过比较 DPL(目标特权级别) 和 CPL(当前特权级别) 的大小
系统调用如何进入内核态:硬件提供了主动进入内核的方法——中断:中断指令将 CPL 改成 0