01操作系统概述
主要内容
操作系统的定义
操作系统是一个大型系统程序
- 提供用户接口,便利用户使用和控制计算机。
- 负责计算机的全部软硬件资源的分配和调度,控制与协调并发活动,实现信息的存取和保护。
简而言之
- 为用户提供友好的接口
- 管理并调度系统资源
操作系统的功能
-
进程管理(cpu管理)
具体功能:
- 进程控制:创建,暂停,唤醒,撤销
- 进程调度:调度策略,优先级
- 进程通信
-
存储管理
作用:
- 内存分配
- 内存共享
- 内存保护
- 虚拟内存
-
设备管理
- 设备无关性
- 设备的传输控制
- 设备的驱动
-
文件管理:文件和目录的管理
- 存储空间管理
- 文件的操作
- 目录的操作
- 文件和目录的存取权限管理
操作系统的特性
- 并发性:同时处理多个任务 的能力
- 共享性:为多个并发任务提供资源共享
- 不确定性:具有处理随机事件的能力(处理中断的能力,自动化处理的能力)
操作系统的发展历史
计算机硬件发展的四个阶段:
- 电子管时代
- 晶体管时代
- 集成电路时代
- 大规模集成电路时代
操作系统发展的四个阶段:
-
手工操作 40年代
-
单道批处理系统 50年代
-
多道批处理系统 60年代初
-
分时系统 60年代
世界上第一个实用化的分时操作系统:UNIX ,实现了操作系统的可移植性,与计算机硬件无关,引进了特殊文件的概念,第一次把外设看作文件管理
操作系统的评价指标
- 吞吐量:在单位时间内处理信息的能力
- 响应能力:从接受数据到输出结果的时间间隔
- 资源的利用率:设备使用的频率
- 可移植性:改变硬件环境仍能正常工作的能力
- 可靠性:发现,诊断和恢复系统故障的能力
操作系统的进一步发展(分时系统的衍化)
- 微机操作系统(PC机)
- 多处理操作系统
- 网络操作系统
- 分布式操作系统
- 实时操作系统
- 嵌入式操作系统
重难点
操作系统的功能(√)
多道程序设计技术
分时的概念
理解操作系统的特性(√)
并发环境下程序的运行特点
- 运行过程不可见
- 结果不可再现
- 程序运行被干扰(开放性)
02操作系统逻辑结构
主要内容
操作系统的虚拟机的概念
面对用户,操作系统可以称为虚拟计算机(提供用户界面,屏蔽硬件细节,扩展硬件功能,系统更安全可靠,效率更高)
操作系统的逻辑结构
逻辑结构的种类:
-
整体式结构:以模块为单位
-
层次式结构:例如TCP/IP协议栈
Linux内核具有分层特点(宏内核),Linux = 内核 + Shell + X Window + 应用程序
-
微内核结构(客户/服务器结构 client/server)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RszwbOgr-1589703776160)(C:\Users\Zhao Chongxuan\Desktop\pics\批注 2020-05-08 135139.jpg)]
微内核和宏内核的对比
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KdYMzvXE-1589703776168)(C:\Users\Zhao Chongxuan\Desktop\pics\批注 2020-05-08 135444.jpg)]
CPU 的态
指CPU的工作状态,对资源和指令使用权限的描述
态的分类:
- 核态(Kernel mode) 能够访问所有资源和执行所有指令,管理程序/OS内核
- 用户态(User mode) 仅能访问部分资源,其它资源受限,用户程序
- 管态(Supervisor mode) 介于核态和用户态之间
存储器
存储程序和数据 的部件
分类:
- 按与CPU的联系:
- 主存:直接与CPU交换信息
- 辅存:不能直接与CPU交换信息
- 按存储元的材料
- 半导体存储器(常作主存)
- 磁存储器(磁盘磁带)
- 光存储器(光盘)
- 按存储器读写工作方式
- RAM
- ROM
存储体系:三级存储体系
- 高速缓存(CACHE)
- 主存
- 磁盘
分级存储系统的工作原理
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NhO7EJO8-1589703776171)(C:\Users\Zhao Chongxuan\Desktop\pics\批注 2020-05-08 140556.jpg)]
中断机制
中断定义:指CPU对突发的外部事件的反应过程或机制
断点:程序中断处:将要执行的下一指令的地址:CS:IP
现场:程序运行依赖的信息集合
中断相应过程:
- 识别中断源
- 保护断点和现场
- 装入中断服务程序的入口地址(CS:IP)
- 进入中断服务程序
- 恢复现场和断点
- 中断返回:IRET
中断相应的实质:
- 交换指令执行地址
- 交换CPU的态
- 工作
- 现场保护和恢复
- 参数传递(通信)
实模式(REAL MODE)
- 程序按照8086寻址方法访问0~FFFFFh(1MB)空间
- 寻址方式:物理地址(20位)
- CPU单任务运行
实模式存取的1MB空间:
- 前面640K【00000 – 9FFFF】 :基本内存
- 中间128K【A0000 – BFFFF】:显卡显存
- 末尾256K【C0000 – FFFFF】:BIOS
- 基本输入输出系统
- C0000 – C7FFF:显示卡BIOS
- C8000 – CBFFF:IDE控制器BIOS
- F0000 – FFFFF:系统BIOS 功能:CMOS设置,设备的基本I/O服务(中断服务),POST(上电自检)和系统自举
操作系统的启动
-
初始引导
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MhyGvbJY-1589703776176)(C:\Users\Zhao Chongxuan\Desktop\pics\批注 2020-05-08 143000.jpg)]
-
核心初始化
OS内核初始化系统的核心数据,如寄存器的初始化,存储系统和页表的初始化,核心进程创建
-
系统初始化
为用户使用系统做准备,使系统处于待命状态。初始化文件系统,网络系统,控制台,图形界面
重难点
虚拟机概念
态的概念
中断机制
03用户界面
04进程管理
进程定义
进程是程序在某个数据集合上的一次运行活动
进程的特征
- 动态性
- 并发性
- 异步性
- 独立性
设计临界区访问机制的四个原则
忙则等待、空闲让进、有限等待、让权等待(等待的进程要放弃CPU,让其他进程有机会得到CPU)
进程的互斥关系
多个进程由于共享具有独占性的资源,必须协调各进程对资源的存取顺序:确保没有任何两个或以上的进程同时进行资源的存取操作。
线程的典型使用场景
- 程序的多个功能需要并发执行
- 改善窗口程序的交互性
- 需要改善程序结构的地方
- 多核CPU的应用,充分发挥多核性能
05进程死锁
死锁的起因
- 系统资源有限
- 并发进程的推进顺序不当
死锁的必要条件
- 互斥条件:资源具有独占性,进程互斥使用资源
- 不剥夺条件:进程在释放资源前不能被其他进程剥夺
- 部分分配条件:进程所需资源逐步分配,需要时申请和分配
- 环路条件:多个进程构成环路,环中每个进程已占用的资源被前一个进程申请,而自己所需新资源又被环中后一进程所占用
解决死锁的策略
- 预防死锁
- 破坏互斥条件——难
- 破坏不剥夺条件——代价大
- 破坏部分分配条件——预先静态分配法
- 破坏环路条件——有序资源分配法
- 避免死锁
- 检测死锁
- 恢复死锁
06进程调度
调度的目标
- 相应速度尽可能快
- 进程处理时间尽可能短
- 系统吞吐量尽可能大
- 资源利用率尽可能高
- 对所有进程公平
- 避免饥饿
- 避免死锁
调度算法
- 先来先服务调度FCFS
- 短作业优先调度算法(Short Job First)
- 响应比高者优先调度算法(响应比 = 1 + 等待时间 / 运行时间)
- 优先数调度算法(静态优先数+动态优先数)
- 循环轮转调度法(ROUND-ROBIN)
- 可变时间片轮转调度算法
- 多重时间片循环调度法
Linux调度机制
-
进程的分类:
- 普通进程
- 采用动态优先级来调度,task_struct中的
counter
代表动态优先级 - 调度程序周期性地修改优先级,避免饥饿
- 采用动态优先级来调度,task_struct中的
- 实时进程
- 采用静态优先数来调度,task_struct中的
priority
代表静态优先级 - 用户事先指定,以后不会改变
- 采用静态优先数来调度,task_struct中的
- 普通进程
-
基于优先级调度
-
既支持普通的分时进程,也支持实时进程
-
让实时进程优先与普通进程
-
保证普通进程公平使用CPU时间
守护进程
- 后台服务程序
- 生存周期长,系统装入时启动,系统关闭时终止
- 周期性的执行某种任务或等待处理某些特别的事件
- 很多系统服务通过守护进程完成
- 守护进程名字一般以‘d’结尾
- 独立于控制终端
07存储管理
存储管理的功能
- 地址映射:逻辑地址——物理地址
- 虚拟存储:时间换取空间
- 内存分配
- 存储保护:避免越权越界
物理内存管理方法
- 分区存储管理(固定分区,动态分区)
- 固定分区:把内存固定地分为若干个大小不等的分区供各个程序使用。
- 每个分区的大小和位置固定,系统运行期间不再重新划分。
- 分区表(区号,大小,起始地址,标志)
- 动态分区:在程序装入的时候创建分区,使分区大小刚好与程序的大小相等
- 特点:分区的个数和大小均可变,存在内存碎片
- 空闲表描述内存空闲区的位置和大小的数据结构
- 空闲区表如何排序——放置策略
- 首次适应法,按空闲区位置首地址递增排序
- 最佳适应法,按空闲区大小递增排序
- 最坏适应法,按空闲区大小递减排序
- 解决碎片的方法
- 规定门限值
- 内存拼接技术
- 把程序分拆几个部分装入不同分区,充分利用碎片
- 固定分区:把内存固定地分为若干个大小不等的分区供各个程序使用。
- 内存覆盖技术 Overlay
- 目的:在较小的内存空间中运行较大的程序
- 内存交换技术 Swapping
- 原理:内存不够时把进程写到磁盘(换出),当进程要运行时重新写回内存(换入)
- 优点:增加进程并发数,不用考虑程序结构
虚拟内存管理方式
-
页式虚拟存储管理
- 进程空间:虚拟页,进程以页为单位装入内存
- 内存:物理页,内存以页框位单位分配使用
- 页表(页面映射表)记录页与页框之间的对应关系和页面的其他特性(中断位、辅存地址、访问位、修改位)
- 快表机制:
- 快表:页表放在Cache中;慢表:页表放在内存中
- 快表容量小,访问快,成本高
- 快表是慢表的部分内容的复制
- 地址映射优先访问快表
- 快表的命中率较高
- 页面共享:多个进程共享相同的代码或数据(物理页框),页表填上相同的页框号就能实现对应的页面共享。
- 页表扩充:中断位、辅存地址、访问位、修改位
- 缺页中断:目的页不在内存,产生异常中断
- 缺页率:f = 缺页次数 / 访问页面总次数
- 命中率 = 1 - f
- 页面抖动:页面在内存和辅存间频繁交换的现象,会导致系统效率下降
- 页表的淘汰算法
- 最佳算法(OPT),淘汰以后不再需要或在最远的将来才会用到的页面
- FIFO,淘汰在内存中停留时间最长的页面
- 最久未使用淘汰算法(LRU),淘汰最长时间未被使用的页面
- 最不经常使用算法(LFU),淘汰截止到当前时间使用次数最少的页面
- 影响缺页次数的因素
- 淘汰算法
- 分配给进程的页框数
- 页本身的大小
- 程序的编制方法——局部性
- 页式系统的不足
- 页面划分无逻辑含义
- 页的共享不灵活
- 页内碎片
-
段式虚拟存储管理
- 把进程按逻辑含义划分为多个段;以段为单位装入,每段分配连续的内存;
-
段页式虚拟存储管理
- 在段式存储管理中结合页式存储管理技术
- 虚拟地址 | 段表 + 页表
-
保护模式 下的段描述符
-
段描述符 Descriptor :描述段的属性,8字节
- 段基址
- 段界限
- 段属性
-
描述符表:存放描述符的数组
-
典型描述符表:
- 全局描述符表 GDT
- 局部描述符表 LDT
- 中断描述符表 IDT
-
典型寄存器:
- GDTR、LDTR、IDTR
- LDTR:索引,指向GDT中的某个LDT描述符
- LDTR = 选择子Selector
-
GDT / GDTR / LDT / LDTR的关系
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AzwusU8R-1589703776179)(C:\Users\Zhao Chongxuan\Desktop\pics\批注 2020-05-09 170725.jpg)]
-
Linux的段机制
- Linux四个范围一样的段:0~4G
- 内核数据段
- 内核代码段
- 用户数据段
- 用户代码段
- 内核段特权级为 0
- 用户段特权级为 3
- 作用
- 隔离用户数据和系统数据
- 简化(避免)逻辑地址到线性地址转换,直接将虚拟地址当作线性地址,二者完全一致
- 保留段的等级保护机制
08设备管理
设备管理的主要功能
- 设备分配
- 是设备管理的基本任务
- 设备分配程序按照一定的策略,为申请设备的进程分配设备,并记录设备的使用情况
- 设备映射
- 设备管理模块将逻辑设备映射到物理设备的功能
- 物理设备 ID或字符串
- 逻辑设备 友好名
- 设备独立性
- 物理设备对用户透明,用户使用统一规范的方式使用设备
- 用户编程时使用设备逻辑名,由系统实现逻辑设备到物理设备的转换
- 设备驱动
- 对物理设备进行控制,实现I/O操作
- 接受应用的服务请求,转化为具体的I/O指令,控制设备完成相关操作
- 向用户提供统一的接口 read/write/open…
- 设备驱动程序的特点:
- 设备驱动程序与硬件密切相关
- 每类设备都要配置特定的驱动程序
- 驱动程序一般由设备厂商根据操作系统要求编写
- 操作系统仅对设备驱动的接口提出要求
Linux设备的分类
- 字符设备 以字节为单位,如串口设备
- 块设备
- 块设备存取通过buffer cache进行
- 例如IDE硬盘设备
- 网络设备 通过BSD套接口访问(SOCKET)