操作系统引论
操作系统是配置在计算机硬件上的第一层软件,是对硬件系统的首次扩充。其主要作用是管理好这些设备,提高它们的利用率和系统的吞吐量,并为用户和应用程序提供一个简单的接口,便于用户使用。
文章目录
1. 操作系统功能和目标
- 资源的管理者
- 处理机管理
- 存储器管理
- 文件管理
- 设备管理
- 作为用户与计算机硬件系统之间的接口
- 命令接口(允许用户直接使用)
- 联机命令接口:用户说一句,系统做一句
- 脱机命令接口:用户说一堆,系统做一堆
- 程序接口(允许用户通过程序间接使用):由一组系统调用组成(程序接口=程序调用)
- GUI:如Windows,安卓,iOS,macos的图形化操作界面
- 目标:方便用户使用
- 命令接口(允许用户直接使用)
- 对计算机资源的抽象
- 对硬件机器的扩展:扩充机器
操作系统的特性
- 并发性
- 并发:指两个或多个事件在同一时间间隔内发生
- 并行:指两个或多个事件在同一时刻发生
- 共享性
- 互斥共享方式:如对摄像头设备的共享
- 同时共享方式:如对硬盘资源的共享
- 虚拟
- 空分复用技术:如虚拟存储技术
- 时分复用技术:虚拟处理机技术,虚拟设备技术
- 异步
重要考点:理解并行与并发的区别
并发和共享互为存在条件
没有并发和共享,就谈不上虚拟和异步,因此并发和共享是操作系统的两个最基本的特征
2. OS的发展与分类
- 人工操作方式
- 缺点:用户独占全机,CPU等待人工操作
- 单道批处理系统
- 优点:缓解了一定程度的人机速度矛盾,资源利用率有所提升
- 缺点:内存中仅能有一道程序运行,只有该程序运行结束之后才能调入下一道程序,CPU有大量时间是在空闲等待I/O完成,资源利用率依然很低。
- 多道批处理系统
- 优点:多道程序并发执行,共享计算机资源。资源利用率大幅度提升,CPU和其他资源保持“忙碌”状态,系统吞吐量增大
- 缺点:用户响应时间长,没有人机交互功能(用户提交自己的作业之后就只能等待计算机处理完成,中间不能控制自己的作业执行)
- 分时操作系统
- 定义:计算机以时间片为单位轮流为各人用户/作业服务,各个用户可通过终端与计算机进行交互
- 优点:用户请求可以被及时响应,解决了人机交互问题,允许多个用户同时使用一台计算机,并且用户对计算机的操作相互独立,感受不到别人的存在
- 缺点:不能优先处理一些紧急任务,操作系统对各个用户/作业都是完全公平的,循环的为每个用户/作业服务一个时间片,不区分任务的紧急性
- 实时操作系统
- 优点:能优先响应一些紧急任务,某些紧急任务不需时间片排队。
- 在实时操作系统的控制下,计算机系统接收到外部信号后及时进行处理,并且要在严格的时限内处理完事件。
- 实时操作系统的主要特点是及时性和可靠性
- 硬实时系统:必须在绝对严格的规定时间内完成处理(如导弹控制系统,自动驾驶系统)
- 软实时系统:能接受偶尔违反事件规定(如12306火车订票系统)
- 网络操作系统
- 分布式操作系统
- 个人计算机操作系统
3. OS的运行机制和体系结构
- 运行机制
- 两种指令:特权指令,非特权指令
- 两种处理器状态:核心态,用户态
- 两种程序:内核程序,应用程序
- 操作系统内核
- 时钟管理:实现计时功能
- 中断处理:负责实现中断机制
- 原语
- 是一种特殊的程序
- 这种程序的运行具有原子性——其运行只能一气呵成,不可中断
- 运行时间较短、调用频繁
- 对系统资源进行管理的功能
- 进程管理
- 存储器管理
- 设备管理
- 操作系统的体系结构
- 大内核
- 讲操作系统的主要功能模块作为系统内核,运行在核心态
- 优点:高性能
- 缺点:内核代码庞大,结构混乱,难以维护
- 微内核
- 只把基本的功能保留在内核
- 优点:内核功能少,结构清晰,方便维护
- 缺点:需要频繁地在核心态和用户之间切换,性能低
- 大内核
最常考知识点
- 特权指令只能在核心态下执行
- 内核指令只能在核心态下执行
- 核心态、用户态之间的切换
4. 中断的概念和作用
中断是指程序执行过程中,遇到急需处理的事件时,暂时中止CPU上现行程序的运行,转去执行相应的事件处理程序,待处理完成后再返回原程序被中断处或调度其他程序执行的过程
操作系统是“中断驱动”的;换言之,中断(广义)是激活操作系统的唯一方式
中断有广义和狭义之分,上述中断时指广义的中断
- 当中断发生时,CPU立即进入核心态
- 当中断发生后,当前运行的进程暂停运行,并由操作系统内核对中断进行处理
- 对于不同的中断信号,会进行不同的处理
用户态、核心态之间的切换是怎么实现的?
“用户态->核心态”是通过中断实现的,并且中断是唯一途径
“核心态->用户态”的切换是通过执行一个特权指令,将程序状态字(PWS)的标志位设置为“用户态”
中断的分类
- 内中断(也称异常、例外、陷入)
- 自愿中断:指令中断(如系统调用时使用的访管指令,又称陷入指令、trap指令)
- 强迫中断:硬件故障(如缺页),软件中断(如整数除0)
- 外中断(中断)
- 外设请求(如I/O操作完成发出的中断信号)
- 人工干预(如用户强行中止一个程序)
另一种分类方式
- 内中断(内部异常)
- 陷阱、陷入(trap)
- 故障(fault)
- 终止(abort)
- 外中断
- I/O设中断请求
- 人工干预
外中断的处理过程
- 每条指令执行结束后,CPU检查是否有外部信号中断
- 若有外部信号中断,则需要保护被中断进程的CPU环境
- 根据中断信号类型转入相应的中断处理程序
- 恢复原进程的CPU环境并退出中断,返回原进程继续往下执行
4.系统调用
应用程序通过系统调用请求操作系统的服务。系统中的各种共享资源都由操作系统统一掌管,因此在用户程序中,凡是与资源有关的操作(如存储分配、I/O操作、文件管理等),都必须通过系统调用的方式向操作系统提出服务请求,由操作系统代为完成。这样可以保证系统的稳定性和安全性,防止用户进行非法操作。
系统调用(按功能分类)
- 设备管理:完成设备的请求/释放/启动等功能
- 文件管理:完成文件的读/写/创建/删除等功能
- 进程控制:完成进程的创建/撤销/阻塞/唤醒等功能
- 进程通信:完成进程之间的消息传递/信号传递等功能
- 内存管理:完成内存的分配/回收等功能
系统调用相关处理涉及到对系统资源的管理、对进程的控制,这些功能需要执行一些特权指令才能完成,因此系统调用的相关处理需要在核心态下进行
系统调用会使处理器从用户态进入核心态
系统调用和库函数的区别
- 系统调用时操作系统向上层提供的接口
- 有的库函数是对系统调用的进一步封装
- 当今编写的应用程序大多是通过高级语言提供的库函数间接的进行系统调用
系统调用背后的过程
- 传递系统调用参数
- 执行陷入指令
- 执行系统调用相应的服务程序
- 返回用户程序
系统调用发生在用户态,对系统调用的处理发生在核心态。
执行陷入指令会产生内中断,使处理器从用户态进入核心态