一、操作系统概述
操作系统的作用
- OS是用户与硬件系统之间的接口(命令方式、系统调用方式和图形、窗口方式)
- OS是计算机系统资源的管理者(处理器、存储器、I/O设备、文件)
- OS是扩充机/虚拟机(覆盖了软件的机器称为扩充机或虚机器)
基本的操作系统
- 批处理操作系统(目标:资源利用率、系统吞吐量,多道:多个作业并发运行)
- 实时操作系统(目标:快速响应)
- 分时操作系统(多路性:一主机多终端,独占性:一用户一终端,及时性:及时响应,交互性)
操作系统的基本特征(OS最基本特性:并发和共享)
- 程序的并发执行(若干事件在同一时间间隔内发生,串行:一CPU处理多作业,并行:多CPU处理多作业)
- 资源共享(多进程共享系统资源,资源分为互斥共享(独占资源)、同时访问)
- 虚拟
- 操作的异步性
操作系统的功能
- 处理机管理(进程控制、进程同步、进程通信、调度)
- 存储器管理(内存分配、地址映射、存储保护、存储扩充)
- 设备管理(缓冲管理、设备分配、设备驱动)
- 文件系统管理(存储空间管理、目录管理、读写管理)
- 用户接口
- 现代OS的新功能
操作系统结构
- 无结构OS
- 分层式结构OS
基本原则:每一层都仅使用其底层所提供的功能和服务 - 模块化结构OS
- 微内核OS结构(以客户 / 服务器(C / S)为基础,面向对象程序设计(OOP))
二、进程管理
进程
-
程序是静态的,进程是动态的(本质区别)
程序是永久的,进程是暂时的 -
组成部分:程序、数据、进程控制块PCB
-
特征:
动态性、并发性(最基本特征)
独立性:进程是独立获得资源和调度的基本单位
异步性 -
基本状态
就绪
运行
等待/ 阻塞
-
PCB
- 作用
PCB是OS感知进程存在的唯一标志;
将程序变为能独立运行的基本单位,可与其他进程并发执行;
进程与PCB是一一对应的;
PCB随进程创建而建立,随进程结束而回收; - PCB表(组织所有PCB)
PCB表的大小决定了系统中最多可同时存在的进程个数(系统并发度)
线程
线程是进程中的一个实体,线程是系统调度的基本单位
进程使多个程序并发执行提高系统效率
线程减少并发执行时空开销
进程与线程比较
传统OS中拥有资源、独立调度基本单位是进程、进程
引入线程系统中拥有资源、独立调度基本单位是进程、线程
管程
- 定义:包含一个数据结构(能为并发执行进程所执行的一组操作)。
- 组成:
(1)局部于管程的共享变量说明
(2)对该数据结构进行操作的一组过程
(3)对局部于管程的数据设置初始值的语句
进程通信
- 共享存储系统(SharedMemory)
- 管道通信系统(pipe、FIFO)
- 消息传递系统(MessageQueue)
- 客户机-服务器系统(套接字Socket)
进程同步
- 生产者——消费者问题
- 读者 / 写者问题
- 哲学家就餐问题
三、处理机调度与死锁
处理机调度
- 作业调度(高级调度)
- 决定接纳哪个作业,即哪个进程进入系统中处理(为其创建进程,使其就绪)
- 批处理系统有作业调度
- 控制了并发的度
- 进程调度(低级调度)
- 决定哪个进程获得处理机
- 任何OS均有进程调度
- 中级调度
- 提高内存利用率
响应时间:首次运行时间 — 提交时间
周转时间:完成时间 — 提交时间
带权周转时间:周转时间 / 运行时间
平均周转时间:所有周转时间的和 / 作业数量
平均带权周转时间:所有带权周转时间的和 / 作业数量
调度算法
- 先来先服务调度算法(FCFS)
- 利于长作业/ 进程,不利于短作业/ 进程
- 短专业优先调度算法(SJF)
- 利于短作业/ 进程,不利于长作业/ 进程
- 最高响应比优先调度算法(HRRN)
- 响应比:1+(作业等待时间 / 作业处理时间)
- 举个栗子
死锁产生的原因
- 竞争资源引起进程死锁
- 进程推进顺序不当引起死锁
产生死锁的必要条件
- 互斥使用:资源非共享
- 不可剥夺:不能强行剥夺进程拥有的资源
- 请求和保持:等待新资源时继续占有已有资源
- 环路等待(死锁一定有环,有环不一定死锁)
预防死锁
破坏四个必要条件之一
- 破坏请求和保持:一次性分配策略
- 破坏不可剥夺:剥夺资源法
- 破环环路:资源有序分配
避免死锁
- 银行家算法
- 举个栗子
四、存储器管理
内存碎片 / 内存零头
- 内零头:进程在向操作系统请求内存分配时,系统满足了进程所需要的内存需求后,还额外还多分了一些内存给该进程,也就是说额外多出来的这部分内存归该进程所有,其他进程是无法访问的。
- 内零头:内存中存在着一些空闲的内存区域,这些内存区域虽然不归任何进程所有,但是因为内存区域太小,无法满足其他进程所申请的内存大小而形成的内存零头。
存储器管理的功能
- 地址映射
- 主存分配与回收
- 存储保护
- 主存扩充(虚拟内存)
地址映射(地址重定位)
-
物理地址,也称绝对地址、内存地址
-
逻辑地址,也称相对地址、程序地址、虚地址
-
程序装入内存,逻辑地址到物理地址的修改为地址映射,也即地址重定位
-
举个栗子
-
据程序地址字分离出页号P和页内地址(偏移量)W
主存分配
1.连续分配方式
- 单一连续分配(分为系统区,用户区,程序使用全部用户区)
- 固定分区分配(内存划为个数固定、大小不一的分区,每个分区放一道作业)
- 动态分区分配(系统运行时建立分区,使分区大小与作业大小相等)
(1)首次适应法(FF)
(2)循环首次适应法(下次匹配法)(NF):按分区的先后次序,从上次分配的分区起查找,到最后分区时再回到开头
(3)最佳适应法(BF)
(4)最坏适应法(WF)
空闲分区表的组成方式分别为首址递增(1)和(2),空闲区大小递增(3),空闲区大小递减(4) - 可重定位分区分配(在动态分区分配基础上,增加紧凑功能,即合并小的空闲分区)
- 举个栗子
2.非连续分配方式(离散分配)
- 分页存储管理方式(页表)
- 分段存储管理方式(段表)
- 段页式存储管理
(1)引入原因:
分页系统能有效提高内存的利
用率,而分段则能更好地满足用户的需要,因此可以将两者结合成一种新
的存储管理方式系统称为“段页式系统”。
(2)原理
先将用户程序分成若干段并分别赋予段名,再将这些段分为若干页
地址结构:由段号、段内页号和页内地址三项共同构成地址 - 快表(联想存储器 / TLB)
为减少逻辑地址到物理地址的转换时间,分页和分段管理用快表加速;
页表放在快速存储器中(Cache)为快表,放在内存中为慢表;
未引入快表,分页、分段、段页式访问内存次数依次为2、2、3。
使用快表只访问 1 次内存。 - 分页管理与分段管理的区别:
(1)页是信息的物理单位,分页是为实现离散分配方式,以消减内存的零头,提高内存的利用率,分页是由于系统管理的需要不是用户的需要;段是信息的逻辑单位,它含有一组其意义相对完整的信息,分段的目的是为了能更好的满足用户的需要。
(2)页的大小固定且由系统决定,由系统把逻辑地址分为页号和页内地址两部分,是由机器硬件实现的,因而在系统中只能有一种大小的页面;段的长度不固定,决定于用户所编写的程序,通常由编译程序在对流程序进行编译时,根据信息的性质来划分。
(3)分页的作业地址空间是一维的,各个模块在链接时必须组织成同一个地址空间;分段的作业地址空间是二维的,各个模块在链接时可以每个段组织成一个地址空间。
(4)段比页大,因而段表比页表短,可以缩短查找时间,提高访问速度。
(5)段的共享比页的共享更容易。 - 举个栗子
页面置换算法
-
最佳页面算法(OPT)
转换将来最晚访问或不会访问的页面,置换性能最好,但无法实现
-
先进先出页面置换算法(FIFO)
置换最早装入内存的页面,性能较差,会产生belady现象(分配物理页数增多,缺页次数增加)
-
最近最久未使用页面置换算法(LRU)
置换最近最久未访问的页面,为OPT较好近似
-
轮转算法(clock)
即最近未使用算法 -
最不经常使用(LFU)
置换访问最少的页面 -
举个栗子
主存扩充(虚拟内存)
- 常规存储管理特征:
一次性(作业必须一次全部装入内存后才能运行)
驻留性(作业装入内存后,一直驻留在内存中) - 虚拟存储器特征:
离散性(内存分配时采用离散分配的方式)
多次性(一个作业被分成多次调入内存运行)
对换性(允许在作业运行过程中换进换出)
虚拟性(逻辑上扩充内存容量) - 虚拟存储器原理:
(1)进程运行前:全部装入外存,部分装入内存
(2)进程运行时:
牺牲外存空间和CPU时间换取内存空间。
(访问页不在内存,发生缺页中断,中断处理程序:
找到访问页在外存的地址;
在内存找一空闲页面;
如没有,按淘汰算法淘汰一个;
读入所需页面(切换进程);
重新启动中断指令。)
五、IO设备管理
-
定义:设备是指计算机系统中除CPU、内存和系统控制台以外的所有设备。
-
设备分类:
(1)低速设备:键盘、鼠标
(2)中速设备:打印机
(3)高速设备:磁盘、光盘
(4)字符设备:打印机、终端、modem
(5)块设备:磁盘、磁带、光盘 -
I/O系统基本功能
(1)隐藏物理设备细节
(2)设备独立/无关性:编程时,用逻辑设备名,由系统将其转换为物理设备
(3)提高处理机与I/O设备利用率
(4)对I/O进行控制 -
I/O系统模型
-
设备管理功能:
(1)监视系统中所有设备的状态
(2)设备的分配
(3)I/O控制 -
I/O控制方式
(1)循环测试I/O方式(程序查询)
CPU不断使用指令检测方法来获取外设工作状态,不能处理其他业务,只能一直等待,到外设完成数据准备工作,CPU才能开始进行信息交换。
硬件结构也比较简单,CPU的运行效率极低。
(2)I/O中断方式
遇到突发事件(I/O设备发出中断请求)而中断正在执行的程序,转而对突发事件进行处理,待处理完后继续原程序的执行。
每执行一条指令,处理机都要测定是否有中断信号。
节省了CPU时间,硬件结构相对复杂。
(3)DMA方式
直接存储器存取方式,是一种完全由硬件执行I/O交换的工作方式。
需要更多的硬件,适用于主存和高速外围设备之间大批量数据交换的场合。
(4)通道方式
即I/O处理机,实现内存与外设的数据批量交换。
道的出现则进一步提高了CPU的效率,这种效率的提高是以增加更多的硬件为代价的。
六、磁盘管理
- 磁盘调度算法
(1)FCFS:先来先服务
举个栗子
(2)SSTF:最短寻道时间优先
(3)Scan:扫描算法(电梯算法)
磁头按一个方向移动,如果该方向还有访问请求则继续扫描,否则改变移动方向
(4)C-Scan:单向扫描算法(循环扫描算法)
同扫描算法(电梯算法),区别是朝一个方向一直扫描(磁盘是环状)。
- 磁盘的访问过程
(1)寻道:磁头移动定位到指定磁道
(2)旋转延迟:待扇区旋转到磁头
(3)数据传输:数据由磁盘传至内存
七、文件管理
- 文件形式:
(1)由字节组成,无结构文件,即流式文件。(UNIX、MS-DOS采用)
(2)由记录组成。 - 文件物理结构:
(1)连续结构:
顺序存取、随机存取。
如磁带(顺序存取)。
(2)链接结构
顺序存取
(3)索引结构
顺序存取、随机存取 - 目录结构作用:
(1)实现按名存取
(2)实现文件重名
(3)提高检索文件速度
(4)文件共享