操作系统:控制和管理整个计算机系统的硬件和软件资源,并合理组织调度计算机工作和资源的分配,以提供给用户和其他软件方便的接口和环境,它是计算机系统中最基本的系统软件
概念语功能
提供的功能
- 处理机管理
- 存储器管理
- 文件管理
- 设备管理
目标
- 安全
- 高效
为上层提供服务
- 普通用户
- GUI
- 命令接口
- 软件/程序员
- 程序接口/系统调用
基本特征
并发
: 宏观上同时发生,微观上交替发生,CPU的调度共享
: 多个进程共同使用同一资源虚拟
: 对资源的抽象(虚拟内存,分时CPU等)异步
: 多道程序环境下,IO资源有限,带来的时间等待
并行
:宏观和微观上都是同时发生,多核CPU
运行机制
两类程序
内核程序
: 多个内核程序组成操作系统内核应用程序
: 基于操作系统之上的的应用程序
两种指令
特权指令
: 只允许操作系统调用(保护计算机安全)非特权指令
: 可以被上层应用程序调用
两种处理器状态
内核态
用户态
CPU通过
内核态
和用户态
区分特权指令,CPU通过程序状态字寄存器(PSW
)标志位区分内核态还是用户态
内核态->用户态
: 执行特权指令修改PSW
标志位用户态->内核态
: 通过中断
引发,由硬件自动完成
中断
中断是操作系统内核夺回CPU的使用权的的唯一途径
(用户态->内核态)
- 内中断: CPU内部触发
- 陷阱,陷入:由程序主动引发,如系统调用
- 故障:由错误条件引起,内核修复故障后,会把CPU使用权还给程序,如缺页故障
- 终止:由致命错误引起的,CPU无法修复,会终止引用程序,如除数为0,非法执行特权指令
- 外中断: 每一条指令执行结束时,CPU都会检查是否有外中断信号(由硬件完成,效率高)
- 时钟中断(50nm)实现并发
- IO设备发出的中断信号(如:打印机准备就绪)
系统调用
应用程序通常使用操作系统提供的一组应用程序接口(库函数
)来使用系统的服务,而这些应用程序接口由一组系统调用
组成,更底层
- 应用程序: 可以直接使用库函数,也可以直接使用系统调用(比较少)
- 库函数:通常由编程语言通过
库函数
的方式提供,封装了系统调用,有些库函数不包含系统调用 - 系统调用(可以通过
汇编语言
调用)
系统调用是操作系统对底层资源管理的抽象,可以让上层更安全的使用系统资源,凡事与共享资源有关的操作(存储/IO/文件),都必须通过系统调用的方式向操作系统内核提出服务请求,保证系统的稳定性和安全性
,防止用户非法操作,主要分为下面几类
- 设备管理: 启动/请求/释放
- 文件管理: 读/写/创建/删除
- 进程控制: 创建/阻塞/唤醒
- 进程通信: 消息传递/信号传递
- 内存管理: 内存的分配/回收
- 应用程序把对应的参数放到
寄存器
- 调用陷入指令(
trap
),让CPU内核切换到内核态 - CPU调用对应的
系统调用
(内核程序) - CPU把使用权返还给应用程序
体系结构
- 底层
- 时钟管理
- 中断处理
- 原语
- 处于最底层,最接近硬件
- 原子性操作
- 运行时间短,调用频繁
- 管理
- 进程管理
- 存储器管理
- 设备管理
由于进程管理,存储器管理,设备管理不直接操作底层,也可以作为用户态执行
- 大内核/宏内核: 将操作系统主要功能模块作为系统内核,运行在内核态
- 优点:高性能
- 缺点:内核代码庞大
- 常用操作系统:Linux,Unix
- 微内核:只保留最基本的功能在内核
- 优点:性能低
- 缺点:内核代码少,易维护
- 常用操作系统:Windows, MacOS