计算机操作系统概述
# 计算机操作系统概述
# 1. 操作系统的基本概念
# 1.1 操作系统的概念
操作系统(Operation System),简称OS,是管理计算机『硬件』与『软件』资源的计算机程序。

『计算机系统』的构成
- 用户
- 应用程序
- 操作系统(OS)
- u硬件(裸机)

OS是一种『系统软件』
- 与硬件交互
- 对资源共享进行调度管理
- 解决并发操作处理中存在的协调问题
- 数据结构复杂,外部接口多样化,便于用户反复使用
作为『系统软件』, OS做了哪些事
管理与配置内存
决定系统资源供需的优先次序
控制输入设备与输出设备
操作网络与管理文件系统等基本事务
提供一个让用户与系统交互的操作界面
# 1.2 操作系统的目标和功能
在计算机上配置OS的目标
有效性
- 提高系统资源利用率
- 提高系统的吞吐量
方便性
可扩充性
开放性
OS的功能
OS作为计算机系统资源的管理者
OS作为用户与计算机『硬件系统』之间的接口
OS实现了对计算机资源的抽象
OS作为计算机系统资源的管理者
处理机管理
1.进程控制
2.进程同步
3.进程通信
4.调度
存储器管理
1. 内存分配
2. 内存保护
3. 地址映射
4. 内存扩充
I/O设备管理
1. 缓冲管理
2. 设备分配
3. 设备处理
文件管理
1. 文件存储空间的管理
2.目录管理
3.文件的读/写管理和保护
OS作为用户与计算机『硬件系统』之间的接口
程序接口
命令接口
GUI(Graphical User Interface),图形用户接口
OS实现了对计算机资源的抽象
将具体的计算机硬件资源抽象成软件资源, 方便用户使用和扩展
开放了简单的访问方式,隐藏了实现细节
举例:使用浏览器进行搜索
# 1.3 操作系统的特征

# 1.3.1 并发(concurrence)
同一时间间隔内执行和调度多个程序的能力
特点:
- 宏观上,处理机同时执行多道程序
- 微观上,处理机在多道程序间高速切换(分时交替执行)
- 关注单个处理机同一时间段内处理任务数量的能力
相似概念:并行
**并发:**同一时间间隔(时间段)发生的事件数量 午餐时段,学校餐厅并发用餐人数为12人
**并行:**同一时刻(时间点)发生的事件数量 同一时间点,学校餐厅最多并行3人打餐
# 1.3.2 共享(sharing)
即资源共享,系统中的资源供多个『并发执行』的应用程序共同使用
**同时访问方式:**同一时段允许多个程序同时访问共享资源
**互斥共享方式:**也叫独占式,允许多个程序在同一个共享资源上独立而互不干扰的工作
并发和共享互为存在条件
- 共享性要求OS中同时运行着多道程序
- 若只有单道程序正在运行,则不存在共享的可能
- 并发性难以避免的导致多道程序同时访问同一个资源
- 若多道程序无法共享部分资源(比如磁盘),则无法并发
# 1.3.3 虚拟(virtual)
使用某种技术把一个物理实体变成多个逻辑上的对应物。
时分复用技术(TDM,Time Division Multiplexing)
- 虚拟处理机技术:“四核八线程”
- 虚拟设备技术:虚拟打印机
空分复用技术(SDM,Space Division Multiplexing)
虚拟磁盘技术:将一块硬盘虚拟出若干个卷
虚拟存储器技术
# 1.3.4 异步(asynchronism)
多道程序环境下,允许多个程序并发执行;单处理机环境下,多个程序分时交替执行;
- 程序执行的不可预知性
- 获得运行的时机
- 因何暂停
- 每道程序需要多少时间
- 不同程序的性能,比如计算多少,I/O多少
- 宏观上“一气呵成”,微观上“走走停停”

# 2. 操作系统的发展和分类

# 2.1 手工操作阶段
无操作系统的计算机系统
# 2.1.1 人工操作方式
- 用户独占全机
- CPU等待人工操作
# 2.1.2 脱机输入/输出方式
- 解决了人机矛盾
- 减少了CPU的空闲时间
- 提高了I/O速度
- 一次只能执行一个程序
# 2.2 批处理阶段
# 2.2.1 单道批处理系统(OS前身)
- 自动性
- 顺序性
- 单道性
- 内存中只有一道程序
- CPU需要等待I/O完成

# 2.2.2 多道批处理系统
- 提高CPU的利用率
- 可提高内存和I/O设备利用率
- 增加系统吞吐量
- 平均周转时间长
- 无人机交互

单道批处理系统与多道批处理系统对比
- 单道批处理系统:主要解决CPU、内存和I/O设备利用率不足的问题
- 多道批处理系统:主要解决I/O操作时CPU闲置问题

# 2.3 分时操作系统

一台主机连接多个带有显示器和键盘的终端,同时允许多个用户通过自己的终端,以交互方式使用计算机,共享主机中的资源
为什么需要分时系统?
- 人机交互
- 共享主机
- 便于用户上机
关键问题
- 及时 接收
- 及时 处理(作业提前进入内存,并能够与用户交互)
分时系统的特征
- 多路性:时间片轮转机制
- 独立性:用户彼此独立
- 及时性:用户能在短时间内获得响应
- 交互性:用户可以请求多种服务
分时系统的缺点
- 作业/用户优先级相同,不能优先处理紧急任务
与分时系统比较
- 多路性
- 独立性
- 及时性:以用户能接受的等待时间为准
- 交互性
- 可靠性:多级容错,保障系统和数据的安全
# 2.4 实时操作系统
系统能即时响应外部事件的请求,在规定的时间内完成对该事件的处理,并控制所有实时任务协调一致地运行。
应用需求
- 实时控制
- 实时信息处理
实时任务
- 周期/非周期性实时任务(根据周期性)
- 硬/软实时任务(根据截止时间)
# 2.5 微机操作系统的发展

微机操作系统的发展
- 单用户单任务
- CP/M、MS-DOS
- 单用户多任务
- Windows 1.0 - XP
- 多用户多任务
- UNIX OS:Solaris、Linux、Mac
- MS-DOS:Windows 10
# 3. 操作系统的运行环境
# 3.1 概念
- 内核程序 <- - -> 应用程序
- 核心态 <- - -> 用户态
- 特权指令 <- - -> 非特权指令

# 3.2 内核
# 3.2.1 时钟管理
- 计时:提供系统时间
- 时钟中断:比如进程切换
# 3.2.2 中断机制
提高多道程序环境下CPU利用率 外中断:中断信号来源于->外部设备 内中断:中断信号来源于->当前指令

内中断也叫:异常/陷入/例外
内中断的三种情况
- 陷阱/陷入(Trap):由应用程序主动引发
- 故障(fault):由错误条件引发
- 终止(abort):由致命错误引发

中断处理过程

# 3.2.3 原语
- 由若干条指令组成,是一个程序段
- 用来完成某个特定功能
- 执行过程不会被中断,具有“原子性”
- 原语运行在内核空间
# 3.2.4 系统数据结构
- 进程管理:作业控制块、进程控制块
- 存储器管理:存储器分配与回收
- 设备管理:缓冲区、设备控制块
# 3.3 系统调用
由操作系统实现,给应用程序调用,是一套接口的集合应用程序访问内核服务的方式

# 4. 操作系统的结构是怎么设计的?
# 4.1 传统的操作系统结构(大内核)
# 4.1.1 无结构操作系统
设计者只是把注意力放在功能的实现和获得高的效率上,缺乏首尾一致的设计思想
此时的OS是为数众多的一组过程的集合, 每个过程可以任意地相互调用其它过程,致使操作系统内部既复杂又混乱。因此,这种OS是无结构的, 也有人把它称为整体系统结构
- 一系列过程(程序)的集合,过程间可以相互调用
- 结构复杂且混乱,难以调试、阅读和维护

# 4.1.2 模块化结构OS

基于“分解”和“ 模块化” 原 来 则来控制大型软件的复杂度
将OS按功能划分为若干个具有一定独立性和大小的模块
每个模块具有某方面的管理功能,如进程管理模块、存储器管理模块、 I/O设备管理模块
规定好各模块间的接口,使各模块之间能通过该接口实现交互
再进一步将各模块细分为若干个具有一定功能的子模块,同样也要规定好各子模块之间的接口
优点:
- 提高OS设计的正确性、可理解性和可维护性
- 增强OS的适应性
- 加速开发过程
缺点:
- 模块接口设计难以扩展后续需求
- 各模块设计没有统一的决策标准,导致模块接口设计不可靠
# 4.1.3 分层式结构OS
有序分层法,自顶向下依次依赖
设计时,自底向上:每一步建立在可靠的基础上
优缺点
- 容易保证系统正确性
- 容易扩充和维护
- 自上而下的层次通信,导致系统效率降低

# 4.2 微内核OS结构

足够小的内核,只实现OS核心功能
- 与硬件处理紧密相关的部分,比如硬件处理、客户与服务器通信和其它基本功能
- 一些较基本的功能
- 客户和服务器之间通信(客户/服务器模式)
应用“机制与策略分离”原理 采用面向对象技术
微内核的OS的优点
- 提高OS的可扩展性、可靠性、可移植性
- 支持分布式系统
- 融入了面向对象技术
微内核的OS的缺点
- 相较早期OS,降低了一定的效率