(冯 ~诺伊曼模型) ,由运算器,存储器,控制器,输入设备,输出设备组成。
引入操作系统的目的:提供一个计算机用户与计算机硬件系统之间的接口,有效控制和管理计算机系统中的各种硬件和软件资源,合理组织计算机系统的工作流程,以改善系统性能。
操作系统与硬件的关系:操作系统时覆盖在硬件上的第一层软件,管理计算机硬件资源
操作系统与其他系统软件的关系:操作系统时一种特殊地系统软件,时其他系统软件与硬件之间的接口。
操作系统的特征(4项):
基本功能(五项)
1.无操作系统阶段(手工操作)
问题:CPU与I/O设备之间速度不匹配
解决办法:脱机输入/输出技术
2.单道批处理系统
单道批处理系统特点:
3.多道批处理系统
**多道程序设计技术:**将一个以上的作业存放在主存中,并且同时处于运行状态,这些作业共享处理器,外设以及其他资源。
特点:
综上,操作系统是一组控制和管理计算机硬件和软件资源,合理地组织计算机工作流程以及方便用户的程序的集合。
用户在一次解题或一个事务处理过程中要求计算机系统所做工作的集合,包括用户程序,所需数据以及命令。
1.批处理操作系统:不能加以干预
2.分时操作系统:时间片轮转
3.实时操作系统:被控制对象允许的时间范围内做出快速反应
4.兼有两种以上,则为通用操作系统
5.其他操作系统
核心态(管态,系统态):主体:操作系统管理程序执行时所处状态。能执行包括特权指令的一切指令,能访问所有寄存器和存储区。
用户态(目态):主体:用户程序执行时所处状态,只能执行规定的指令,只能访问指定寄存器和存储区
特权指令:只能由操作系统内核部分使用,不允许用户直接使用的指令(I/O指令,设置中断屏蔽指令,清内存指令,存储保护指令和设置时钟指令)
中断:外中断,系统正常功能
异常:内中断,错误引起
系统调用:程序接口或应用编程接口(API),是应用程序同系统之间的接口。
操作流程:用户程序需要执行系统调用时,准备并传递系统调用所需参数,通过陷入指令(trap)进入操作系统的系统内核,用户态进入内核态,执行对应系统调用函数,使用特定系统内核功能,返回结果给用户进程,从内核态回到用户态。
进程是资源分配的基本单位(与线程的主要区别),也是独立运行的基本单位。
前驱图
顺序执行
并发执行
Bernstein条件:读集和写集,令并发程序保持封闭性和可再现性。
进程定义:
进程的特征(四项):
进程和程序的关系
进程映像:由程序段,相关数据段和PCB三部分,也叫进程实体;
进程映像与进程的关系:进程映像是静态的,进程是动态的,进程是进程实体的运行过程。
进程和作业的区别
**进程的组成 : PCB(进程存在的唯一标识) + 程序段 + 数据段 **
**PCB = **PID(进程标识符)+ 进程当前状态 + 进程队列指针 + 程序和数据地址 + 进程优先级 + CPU保护现场区 + 通信信息 + 家族联系 + 占有资源清单
为什么说PCB是进程存在的唯一标志:
PCB的作用:PCB是系统为每个进程定义的一个数据结构(其作用是使程序(含数据)能独立运行),PCB的作用是为了保证程序的并发执行。创建进程实质上使创建PCB,撤销进程实质上是撤销PCB。
**在进程的整个生命周期中,系统总是通过PCB对进程进行控制,系统也是根据进程的PCB感知进程的存在。**系统调度到某进程后,根据其PCB中保存的处理机状态信息,设置进程恢复运行的现场,并根据PCB中的程序数据地址找寻数据与程序。进程在执行过程中都需要通过访问PCB来实现与其他合作进程进行同步,通信和访问文件。当暂停执行时,其端点的处理机环境也保存在PCB中。
综上,PCB是进程存在的唯一标志。
进程的五种基本状态:
进程状态的相互转换
进程状态之间的转换并非都是可逆的。
进程之间的状态转换并非都是主动的
进程状态具有唯一性,一个具体的进程再扔和一个时刻必须只能处于一种状态。
执行状态只能由就绪状态转换,而无法由阻塞状态直接转换。
**进程的创建 **
进程的撤销
进程的阻塞与唤醒
**阻塞原语(P原语):**执行态-》阻塞态,主动行为
**唤醒原语(V原语):**阻塞态-》就绪态,发现者进程调用原语,是一种被动行为。
进程切换
进程的运行环境发生了变化。
与调度的区别:调度是决定将系统资源分配给哪个进程。进程切换是实际分配系统资源,且一定会发生中断,进行处理器模式切换,从用户态进入内核,再回到用户态。
但是处理器模式切换不一定发生进程切换。
低级进程通信:同步与互斥
高级进程通信
线程的引入
线程的引入提高了程序并发执行的程度,改善资源利用率,进一步提高了系统吞吐量(线程引入的目的)
线程的定义
正确提法、补充理解:
综上,线程是进程内一个相对独立的,可调度的执行单元,线程自己基本上不用有资源。
多线程指一个进程中有多个线程,这些线程共享该进程资源。
线程的实现
由操作系统内核提供线程控制机制; 或者 由用户程序利用函数库提供线程的控制机制; 或者在操作系统内核与用户程序两个层次上提供控制机制。
**内核级线程:**依赖于内核,由操作系统内核完成创建和撤销工作的线程。一个内核级线程由于I/O操作被阻塞时,不会影响其他线程的执行
用户级线程:不依赖操作系统内核,由应用进程利用线程库提供创建,同步,调度和管理线程的函数来控制线程。因此,用户级线程可用于不支持内核级线程的多进程操作系统,或单用户操作系统,但是当一个线程阻塞时,整个进程都必须等待。
线程锁
线程的状态与转换
线程的六种状态
进程与线程的比较
调度:引入线程的操作系统中,线程是独立调度的基本单位,进程是拥有资源的基本单位。同一进程中,线程切换不会引起线程切换,在不同进程中进行线程切换会引起进程切换。
资源:进程拥有资源基本单位,线程几乎没有,除了必要的需求
并发性:两者都可以并发执行
系统开销:引入线程,大大减小了开销,同时同一进程内多个线程共享进程的地址空间,线程的通信与同步容易实现。
高级调度(作业调度):按照一定原则从外存上处于后备状态的作业中选择一个或多个给他们发配内存等资源,运行频率低。
中级调度,提高内存利用率与系统吞吐量,负责内存管理与扩充(换页时,将页面在外存与内存之间调度)
低级调度(进程调度)分配处理器资源,运行频率高。
作业调度与进程调度区别
功能:
调度的场合:
不能进行调度的场合:
1.先来先服务调度算法(作业调度,进程调度, FCFS)
2.短作业优先调度算法(作业调度,进程调度, SJF):把处理器分配给最快完成的作业(进程)。
3.优先级调度算法(作业调度,进程调度):将处理器分配给优先级最高的进程,如何确定进程的优先级
优先级相同情况下,通常按照先来先服务或者短作业优先的顺序执行。
4.时间片轮转调度算法(进程调度)
5.高响应比优先调度算法(作业调度)
综合等待时间和运行时间。
响应比 = 作业响应时间/估计运行时间 = (作业等待时间+作业运行时间)/估计运行时间
6.多级队列调度算法(进程调度)
7.多级反馈队列调度算法(进程调度)时间片轮转调度算法和优先级调度算法的综合与发展。
时间片逐渐增大,优先级逐渐降低.
最后一个队列采用时间片轮转调度法
当有优先级更高的新进程进入队列,则将正在执行的今晨放回第i个队列的队尾,新进程抢占处理器资源。
两种形式的制约关系
**临界资源:**同时仅允许一个进程使用的资源
临界区:进程中用于访问临界资源的代码(临界段)
硬件方法与软件方法都存在忙等(违背让权等待)的问题
除了初值,信号量的值只能由P操作和V操作改变(P, V操作为原子操作,P申请资源,V释放资源,成对出现)
信号量的分类:
管程是一个语言成分,管程地互斥访问完全由编译程序在编译时自动添加,而且保证正确。
基本特征:
无限期等待某个其他进程占有的、自己永远无法得到的资源。
资源分类:可剥夺资源, 不可剥夺资源 (分类完全取决于本身的性质)
死锁产生原因:资源竞争,但资源竞争不等于死锁 , 死锁产生原因为 系统资源不足(根本原因)和进程推进顺序不当(重要原因)
死锁产生的必要条件
(四个条件缺一不可,可以通过破坏四个条件来预防死锁)
死锁避免与死锁预防不是一个概念,都是在死锁发生前采取措施,死锁预防对系统限制条件严格,并发性差,但不用计算死锁发生可能性; 死锁避免对限制条件宽松,有利于并发执行但是分配资源之前要计算分配后是否安全。
破坏四个条件 2.4.2
允许进程动态申请资源,进行资源分配前,先计算资源分配的安全性。
若在某一时刻,系统能按某种顺序为每个进程分配其所需要的资源,直至最大需求,使每个进程都顺利完成,此时为安全状态,该序列为安全序列(并不唯一,可能有多个)。
若在某一时刻系统中不存在这样的一个安全序列,则处于不安全状态(可能发生死锁,并不代表必然或者已经死锁了)。
n个进程,m类资源,Availablem,Max(最大需求矩阵)[n][m]
, 分配矩阵Allocation[n]m, Need[n][m]需求矩阵
N e e d [ i ] [ j ] = M a x [ i ] [ j ] − A l l o c a t i o n [ i ] [ j ] Need[i][j] = Max[i][j] - Allocation[i][j] Need[i][j]=Max[i][j]−Allocation[i][j]
死锁检测:
死锁检测算法,与银行家算法类似
死锁解除
进程饥饿:资源分配策略不公平,不能保证等待时间上界的存在,此时等待时间给进程推进和响应带来明显影响.
进程饿死:饥饿到一定程度,进程所赋予的任务即使完成也不再具有实际意义时,则称为进程饿死。
**活锁:**在忙时等待条件下发生的饥饿。
程序链接:
程序装入:
物理地址 = 基址寄存器内容 + 逻辑地址 物理地址 = 基址寄存器内容 + 逻辑地址 物理地址=基址寄存器内容+逻辑地址
4.内存保护
内部碎片:已经分配给作业但不能被利用的内存空间(某个作业所占用的内存区域如果没有装满)
外部碎片:系统中还没有分配作业,但由于碎片太小而无法分配给申请内存空间的新进程的存储块(作业和作业之间的空隙)
空闲分区算法:
按分区大小是否固定分为
逻辑地址 = 页号 + 页内偏移 逻辑地址 = 页号+页内偏移 逻辑地址=页号+页内偏移
逻辑地址A,页面大小L
P = ( i n t ) ( A / L ) , W = A P = (int)(A/L),W = A%L P=(int)(A/L),W=A
- **页表:页面与物理块的映射关系(通常在内存中)**
- **基本地址变换机构:页表寄存器(PTR)**
- **具有块表的地址变换机构**
- 简单分页(纯分页):将所有页面一次性调入主存,否则等待。
- 两级页表与多级页表
- 页表大小计算:M页表长度由页号位数决定,宽度由块号位数决定
- 两级页表:逻辑地址 = 外层也好,外层页内地址, 页内地址
- 多级页表:缺点多次访问内存地址变换浪费时间
- 页的共享与保护
- 优点
- 内存利用率高,实现了离散分布,便于存储访问控制,无外部碎片
- 缺点
- 需要硬件支持(快表),内存访问效率下降,共享困难,有内部碎片
- 请求分页存储管理
- 段表及地址变换过程
段表项: 段号, 段长, 该段的内存起始地址
可加入快表加速
- 段的共享与保护
- **纯代码/可重入代码 :不能修改的代码,可以共享**
- **地址越界保护**
- **访问控制保护**
- 优缺点
- 优点:便于程序模块化处理和处理变换的数据结构;便于动态链接和共享;无内部碎片
- 缺点:需要硬件支持;为满足分段的动态增长和减少外部碎片要采用拼接技术;最大尺寸受主存可用空间限制;有外部碎片
为什么分页存储管理系统的地址空间是一维的,分段存储管理系统是二维的?
页号是系统自动生成的,本身地址是线性连续的,给出地址系统自动划分页号和页内偏移。段号是自定义的段的大小和意义不同,寻找数据或指令必须指定段号和段内偏移。
分页 | 分段 |
---|---|
信息的物理单位 | 信息的逻辑单位 |
目的:系统管理所需,提高内存利用率 | 目的:为了更好满足用户的需求 |
页的大小固定且由系统决定 | 段的长度不定,由用户编写的程序决定 |
作业地址空间一维 | 作业地址空间二维 |
有内部碎片,无外部碎片 | 无内部碎片,有外部碎片 |
同时设置 页表和段表,每个进程一个段表(段号,页表地址,页表长度),每个段表一个页表(页号,块号),段表寄存器。
特点:段页式地址变换要访问内存3次,可采用快表加速
结合了段式,页式的优点,克服了段式的外部碎片问题,但是内部碎片没有像页式一样少,平均内部碎片比页式多。
虚拟内存管理技术的引入原因:此前的存储管理方法存在一次性和驻留性,难以满足较大的作业或者较多的作业进入内存执行,部分代码使用率低,部分代码需要较长处理时间,内存空间浪费问题严重,因此引入一种能让作业部分装入就可以运行的存储管理技术。
局部性原理:大多数程序执行时在一段较短的时间内仅使用程序代码的一部分,程序访问的存储空间也局限于某个区域。
虚拟内存的定义及特征:程序装入时,一部分放入内存,一部分放在外存,启动程序(部分装入),访问信息不在内存中,再将所需部分调入内存(请求调入)。操作系统将内存中暂时不实用的内容置换到外存上,从而腾出空间存放将调入内存的信息(置换功能)。从效果上看,计算机系统为用户提供了一个存储容量比实际内存大得多的存储器,从逻辑上扩充内存容量的存储器系统称为虚拟存储器(虚存)。
虚拟内存特征:
常用的虚拟存储技术有, 请求分页存储管理,请求分段存储管理,请求段页式存储管理。
请求分页原理
请求分页 = 基本分页存储管理系统 + 请求调页功能 + 页面置换功能
页表结构
状态位:判断页面是否在主存中,不在就发生缺页中断
访问字段:记录访问次数
修改位:没修改,就不同步到外存中,反之将页面写到外存,减少磁盘写的次数。
缺页中断与地址转换
一条指令可以产生多个缺页中断。
优缺点:
页面置换和连续分配方式中的交换的区别:
页面置换的单位:页面
交换的单位:整个进程
缺页中断不必然导致页面置换,缺页中断且没有空闲块时调用页面置换。
最佳置换算法(OPT):每次置换掉以后不再使用的或者以后最迟使用的的页面,有最低缺页率,但是无法实现。
先进先出算法(FIFO):总是淘汰最先进入内存的页面,可能造成Belady异常(缺页次数随着分配的物理块号的增加而增加),与实际情况不符,实际效果不佳
最近最少使用算法(LRU):选择最近最长时间没有被使用的页面进行淘汰,使用寄存器组和栈来实现,性能较好。
时钟置换算法(CLOCK):(最近未使用算法(NRU)),LRU与FIFO折中,设置页面访问位标记最近是否被访问,维护所有页面的循环链表,页面在链表中则访问位为1,否则从上次淘汰的页面位置的下一位开始,将途径的访问位为1的页面置零,遇到为0的就淘汰,循环遍历,比LRU少了硬件支持,实现简单,但是比FIFO使用的硬件要多。
改进型时钟算法:加入修改位,优先淘汰没有被修改的页面。减少了磁盘I/O次数,但增加了扫描次数。
最不常用置换算法(LFU):选择到当前时间为止访问次数最少的页面淘汰,每个页面都要计数器,每次淘汰计数值最小的,同时将计数器都清零。
页面缓冲算法(PBA):建立页面缓存,找回刚刚被置换的页面,减少系统I/O消耗,设两个链表一个已修改,一个未修改,修改页面数量达到一定程度一起写入磁盘。
工作集模型原理:让操作系统监视各个进程的工作集大小,若有空闲物理块可新调一个进程入内存,增加多道程度,或者选择进程兑换到磁盘,减少内存进程数量防止抖动发生。
页面分配策略
页面调入策略
Belady异常:缺页率会随着所分配的物理块数量增加而增加。堆栈类算法的页面置换算法不会发生这类异常。
抖动现象:刚淘汰的页面反复调入调出,几乎不能完成任何有效工作。
缺页率,衡量页面置换算法的重要指标。 作业有n页,系统分配给作业m页空间(m<= n) ,作业在运行中访问A次页面,其中所访问的页面不存在,需要将所需页调入内存F次。
缺页率 f = F / A 缺页率f = F / A 缺页率f=F/A, 命中率 = 1 − f 命中率 = 1- f 命中率=1−f
类似请求分页存储管理系统,除了段号,段长,内存始址
分页存储管理 | 分段存储管理 | 段页式存储管理 | |
---|---|---|---|
有无外部碎片 | 无 | 有 | 无 |
有无内部碎片 | 有 | 无 | 有 |
优点 | 内存利用率高,基本解决内存零头问题 | 段拥有逻辑意义,便于共享,保护和动态链接 | 兼有二者 |
缺点 | 页缺乏逻辑意义,不能很好满足用户 | 内存利用率不高,难以找到连续的空闲区放整段 | 多访问一次内存 |
没有快表: EAT = 2t
存在快表:EAT = a*b +(t+a)(1-b) + t, a访问快表时间。访存一次时间t,快表命中率b.
命中快表的概率d,缺页率f
E A T = a + d ∗ t + ( 1 − d ) [ t + f ( T + a + t ) + ( 1 − f ) ( a + t ) ] EAT = a + d*t + (1-d)[t+f(T+a+t) + (1-f)(a+t)] EAT=a+d∗t+(1−d)[t+f(T+a+t)+(1−f)(a+t)]
T = n ∗ T 1 + ( 1 − n ) T 2 T = n*T_1 + (1-n)T_2 T=n∗T1+(1−n)T2,(n页面被修改的概率)
文件是具有文件名的一组相关元素的集合,在文件系统中是一个最大的数据单位,描述了一个对象集,每个文件都有一个文件名,用户通过文件名来访问文件。
文件的属性
文件的分类
按用途分类
按保护级别分类
按信息流向分类
按数据形式分类
文件的操作
文件的结构
文件目录
文件控制块FCB (FCB + 文件体 = 文件)
单机目录结构
优点:易于实现,管理简单
缺点:不允许文件重名,文件查找速度慢
二级目录结构
将文件目录分为主文件目录和用户文件目录。
优点:解决了重名问题,查找速度高,二级目录缺乏灵活性,在与其他文件进行合作与访问时会产生很多问题。
树形目录结构
非叶子节点都是目录文件,叶子节点是文件。
优点:方便文件分类,层次结构清晰,有效进行文件管理和保护
缺点:按路径逐级访问中间节点,增加了磁盘访问次数,影响查询速度,不便于文件共享
图形目录结构
加入有向边,有向无环图,共享计数器
优点:便于共享
缺点:系统管理复杂。
共享动机
传统树形目录文件的共享通过不同用户将各自文件的FCB设置相同的物理地址来实现,当其中一个目录项添加了新的内容,其他目录项没添加,新增的内容不能被共享。
基于索引结点的共享方式(硬链接)
目录项只有文件名与索引节点指针,就能实现修改的共享,也能实现文件的异名共享,但是文件被多用户共享时,文件拥有者不能删除文件。
利用符号链实现文件共享(软链接)
创建称为链接的新目录项,新的目录项包含被共享文件的路径名。
优点:解决了基于索引结点共享方法中文件拥有者不能删除共享文件的问题,但是其他用户访问共享文件时,要逐层查找目录,开销大。
防止文件受到物理破坏和非法访问。
访问类型
访问控制
文件系统是指操作系统中与文件管理有关的软件和数据的集合。从系统角度看,文件系统是对文件的存储空间进行组织和分配,负责文件的存储并对存入文件进行保护和检索的系统。具体来说,它负责为用户建立、撤销、读写、修改和复制文件。从用户角度看,文件系统主要实现了按名存取。
外村分配方式
静态分配,动态分配
连续分配 查找速度快,信息简单,但容易产生碎片,需要定期进行存储空间紧缩
链接分配
索引分配
为每个文件分配索引块,索引块里有索引表,表项对应应该分配给文件的物理块。
支持直接访问,不会产生外部碎片,解决文件长度受限问题,但是索引块分配增加存储空间开销,存取文件要两次访问外存,存取速度慢(可以先将索引表调入内存,这样就只用访问一次即可)
单级索引分配
两级索引分配
混合索引分配
文件存储空间管理
空闲文件表法
空闲块链表法
位示图法 二进制标记状态
成组链接法(UNIX的文件存储空间管理方法)
适用大型文件系统,占用空间小,超级块不大,大多数工作在内存进行,效率高。
磁盘
引导控制块
分区控制块
目录结构
文件控制块
磁盘的访问时间
T a = 寻道时间 T s + 旋转延迟 T r + 传输时间 T t T_a =寻道时间T_s+旋转延迟T_r+传输时间T_t Ta=寻道时间Ts+旋转延迟Tr+传输时间Tt
寻道时间:磁头收到读指令后 从当前位置移动到目标磁道位置所需的时间
T s = m × n + s ,启动磁臂时间 s ,磁头移动 n 条磁道,移动一个磁道 m T_s=m×n+s , 启动磁臂时间s,磁头移动n条磁道,移动一个磁道m Ts=m×n+s,启动磁臂时间s,磁头移动n条磁道,移动一个磁道m
旋转延迟
T r = ( 1 / r ) / 2 T_r=(1/r)/2 Tr=(1/r)/2 r磁盘旋转速度, 等价于磁盘旋转半周的时间,半周是随机旋转长度的平均期望值。
传输时间取决于每次读写的字节数b和磁盘的旋转速度r,N一个磁道上的字节数。
T t = b / ( r N ) T_t=b/(rN) Tt=b/(rN)
先来先服务算法FCFS
最短寻道时间优先算法SSTF
选择与当前磁头所在的磁道距离最近的请求作为下一次服务的对象,寻道性能较好,但不能保证平均寻道时间最短,可能存在饥饿现象
扫描算法SCAN或者电梯调度算法
在磁头当前移动方向上选择与当前磁头所在磁道距离最近的请求作为下一次服务对象,有较好的寻道能力,避免了饥饿现象,但对两端磁道请求比较不公平。
循环扫描算法C-SCAN
规定磁头单向,循环扫描移动,消除了对两端磁道请求的不公平。
磁道请求序列
55 58 39 18 90 160 150 38 184
磁盘格式化
低级格式化:分扇区方便读写
引导块,通常在ROM中
坏扇区,扇区备用
I/O设备的分类
设备控制器是一个可编址设备
设备控制器功能
I/O控制方式
DMA控制方式与中断控制方式的差别
DMA控制方式与通道控制方式的差别
I/O设备管理软件分为四层
确定一个好的顺序来执行I/O请求
(I.O核心子系统改善计算机效率的方法:I/O调度,使用主存或磁盘上的存储空间技术(缓冲,高速缓存,假脱机))
缓冲技术可以提高处理器与外设并行程度。
缓冲区的引入缓和了CPU与设备速度不匹配的矛盾,降低了设备对CPU的中断频率,放宽对中断响应时间的限制,提高了设备与CPU的并行操作程度,提高了系统吞吐量和设备利用率。
缓冲技术实现方法
缓冲的分类
高速缓存是可以保存数据备份的告诉存储器,访问高速缓存比访问原始数据更高效,速度更快。
高速缓存与缓冲区的区别
设备分配依据的主要数据结构
设备分配策略
设备独立性
引入逻辑设备和物理设备,逻辑设备表LUT(逻辑设备名,物理设备名,设备驱动程序地址)
好处:设备分配时的灵活性,易于实现I/O的重定向。
设备分配程序
通过共享设备来虚拟独占设备,提高设备利用率和系统效率。
SPOOLing==同时外设联机操作、排队转储技术,是一种低速输入/输出设备与主机交换的一种技术,核心思想——联机方式实现脱机效果。
SPOOLing的组成
再输入输出之间增加输入井,输出井的排队转储环节,消除用户的联机等待时间
特点: