前言:
考完试之后把我的笔记抄进优快云,当复习了。
知识点并不全,只是一些重点和我的自己的理解
一 概述
1.操作系统是系统资源的管理者,是最接近于硬件的“软件”
2.特征
| 并发 | 多个事件宏观上是同时发生,单微观上是交替发生。(并行才是真正的同时发生) |
| 共享 |
即资源共享 |
| 虚拟 | |
| 异步 | 指的是进程执行不是一次性到底,而是走走停停 |
注:并发和共享同时存在。没有并发和共享就没有虚拟和异步
3.分类:单道批处理系统、多道批处理系统、分时操作系统、实时操作系统
4.中断和异常
| 内中断/异常 | 即中断信号来自于cpu内部的中断,分为: | 陷阱/陷入:由陷入指令引发,如系统调用 |
| 故障:由错误条件引起,如缺页故障 | ||
| 终止:由致命错误引起,如除0 | ||
| 外中断/中断 | 来自cpu外部的中断 | 如时钟中断、I/O中断 |
5.系统调用
二 进程管理
1.进程概述
进程是动态的,程序是静态的,进程是程序的一次运行。
进程由PCB、程序段、数据段三部分组成。
进程是系统进行资源分配和调度的独立单位。
PCB(progress control block)进程控制块,是一种数据结构。
特征:并发性、独立性、异步性、动态性、结构性
2.进程状态
进程状态一般分为5个:创建、就绪、运行、阻塞、结束

3.进程控制
| 创建进程 |
1申请空白PCB 2为进程分配资源 3初始化PCB 4将PCB插入就绪队列 |
| 终止 |
1找到对应PCB 2如果进程正在运行,则剥夺CPU 3终止其子进程 4将其资源返还给父进程或计算机 5删除PCB |
| 阻塞 |
1找到对应PCB 2保存PCB内的信息 3PCB插入到等待队列 |
| 唤醒 |
1找到PCB2 2将其从等待队列移除并且设置为就绪态加入就绪 队列 |
| 切换 |
1将运行信息存入PCB 2PCB移入相应队列 3选择另外一个程序执行,并且更新PCB 4根据PCB恢复对应P环境 |
4.进程通信
| 共享存储 | 两个进程开辟一个共享空间用于信息交换 |
| 管道通信 | 一个大小固定的缓冲区,一个管道只能实现半双工 |
| 消息传递 |
进程间数据交换以格式化的消息为单位。如 |消息头|消息体| 分为: 直接通信方式:直接放在消息缓冲队列 间接通信方式:消息先发送到中间实体,类似于信箱 eg:电子邮件 |
5.线程
引入:有的进程需要同时做很多事,所以就引入了线程,从而增加了并发度。eg:QQ即可聊天又可同时视频
特征:
线程成为了程序执行的最小单位,基本CPU执行单元,调度的基本单位(引入线程前是进程为调度的基本单位)。
进程间地址独立,线程间课共享资源
实现方式:
| 用户级线程 | 早起操作系统使用,进程内部有线程,但是线程的运行需排队。线程的切换不需要从用户态变为内核态,操作系统感知不到线程的存在。 |
优点:开销小速度快 缺点:当一个线程阻塞全部都会阻塞,并发度低 |
| 内核级线程 | 线程的管理由操作系统完成,线程切换需要变态 |
优点:一个阻塞不会全部阻塞,并发度高 缺点:管理成本高,较慢 |
多线程模型:
| 一对一模型 | 一个用户级线程对应一个内核级线程,并发度高,开销很大 |
| 多对一模型 | 多个用户级线程对应一个内核级线程,即就是纯粹的用户级线程 |
| 多对多模型 | 多个用户级线程对应多个内核级线程,克服了上述两者的缺点 |
6.处理机调度
概念:当有一大堆任务要处理,但是资源有限,就要通过某种规则来决定处理这些任务的顺序
调度分为:
| 作业调度/高级调度 | 外存到内存 |
| 进程调度/低级调度 | 内存到CPU,低级调度最频繁 |
| 内存调度/中级调度 | 外存到内存 |
调度方式分为:抢占式和非抢占式。
7.调度算法
| 先来先服务(FCFS) |
非抢占式 优点:公平简单 缺点:对短作业很不利 饥饿:不会导致饥饿 | |
| 短作业优先(SJF) | 每次选择当前已经到达的且运行时间最短的作业 |
一般为非抢占式,可以为抢占式 优点:平均等待时间最短 缺点:若有源源不断的短作业,长作业会导致饥饿 |
| 高响应比优先(HRRN) |
每次调度选择响应比最高的作业 响应比=(等待时间+要求服务时间)/要求服务时间 |
非抢占式 优点:结合上述两者给出的折中方案 不会饥饿 |
| 时间片轮转(RR) |
让各个进程执行一个时间片,依次运行 时间片太大:先来先服务 时间片太小:切换开销大 |
抢占式 优点:公平,适用于分时操作系统 缺点:没有区分紧急,进程切换会有一定开销 不会饥饿 |
| 优先级调度算法 | 每个作业会有一个优先级,调度时选择优先级高的 |
抢占和非抢占都有
|
| 多级反馈队列调度算法 |
从上到下有多个队列,优先级依次降低,每个队 列里的每个作业只会执行相同的时间片长度。A 作业在第一队列执行一个时间片,如果没有运 行完,则放入第二个队列排队。计算机运行会 从第一个队列往下运行,第一个队列里面没有作 业了才会运行第二个队列。 |
抢占式 优点:公平 会饥饿 |
8.进程同步
概念:因为进程由异步性,即进程之间的运行顺序是随机的,所以要通过一定的手段是进程之间形成制约关系,按照一定顺序来执行,即进程同步。
互斥:当一个进程使用临界资源,另一个进程必须等待。
进程同步又称为直接制约关系,异步称为简介制约关系
互斥原则:
空闲让进
忙则等待
有限等待:进程应该在有限的时间内进入临界区
让权等待:当进程无法进入临界区,应该立即释放处理机,避免占用CPU
9.实现互斥
软件实现办法:


硬件实现方法:中断屏蔽法
10.信号量
11.经典同步问题
12.管程
定义:为特殊的软件模块,可以理解为软件一个类
特点:管程内的数据只有通过调用管程内的函数才可进行访问;每次只允许一个过程在管程内执行;互斥同步由编译器实现
13.死锁
定义:形成一种相互等待对方资源的阻塞的情况
死锁形成条件:
| 互斥 |
资源互斥 |
| 不剥夺 | 获得的资源未使用完不可让给其他进程 |
| 请求和保持 | 拥有资源然后还要其他资源 |
| 循环等待 |
等待资源形成一个循环结构 |
死锁产生:资源竞争;信号量使用不当;进程推进顺序非法。
死锁预防:破坏四种条件中的任何一个即可。
死锁避免:
银行家算法:
死锁检测:
三 内存
1.编址
按字节编址:每个存储单元为1字节即1B,8个2进制位
按字编址:具体看计算机为多少位。32位计算机就有32bit。
2.编译、链接、装入

链接:
静态链接:在程序运行前将各目标模块及他们所需的库函数链接成一个可执行的文件(装入模块)
装入时动态链接:边装入边链接
运行时动态链接:在程序运行时需要该模块的时候才装入该模块,更灵活,便于实现目标模块的共享。
装入:
绝对装入:装入内存之前就知道了程序要放到哪个位置,在编译的时候就把逻辑地址转化为最终的物理地址。
可重定位装入:装入内存时对地址进行一种固定模式的操作,如都加100.
动态重定位:把地址转换推迟到程序正真运行的时候才进行。需要重定位寄存器
3.内存管理
内存地址的分配和回收:
如何给程序分配相应的内存地址
※连续分配方式※
即寻找一个大小合适的连续内存空间分配给作业
| 单一连续分配方式 | 内存被分为系统区和用户区,系统区用于存放操作系统用户相关数据。用户区用于存放进程的数据。只能存放一道用户程序。用于早期操作系统 |
优点:实现简单,无外部碎片。 缺点:只能用于单用户、单任务操作系统中。有内部碎片(因为整个用户区都是分配给这一个任务的,但是用户区没有使用完);存储器利用率较低 |
| 固定分区分配方式 | 在上者基础上,将用户区分为大小相同或者也可以不同大小的分区,每个分区中装入一道作业。 |
优点:简单,无外部碎片。 缺点:解决了上者无法用于多道程序的问题。会产生内部碎片(固定大小分区分配)。 |
| 动态分区分配算法 | 前两者划分的内存时一开始就是固定的,之后再把程序装入内存。而动态分区分配指的是在装入内存时才分配内存给进程,分配的内存依然是连续的,只是会根据所需内存大小来动态进行分配。方法有 | 首次适应算法:从低地址开始寻找合适的内存块 |
| 最佳适应算法:每次寻找较小的分区 | 最佳和最坏在每次分配内存后都要对内存块排序 | |
| 最坏适应算法:每次寻找较大的分区 | ||
| 邻近适应算法:在首次适应算法基础上每次都从上一个内存找起,而不是像首次一样从头开始找。 |
※非连续分配方式※
(1)分页存储:
利用每个程序对应的一个快表,快表记录逻辑地址到实际地址的映射,从而将内存分配给程序。这种映射显然是非连续的。
内存的一个分区:页框=内存块=物理块=物理页面
进程逻辑空间单位:页=页面
页表作用:
页表保存了逻辑空间中页面到物理内存块的映射,一个进程拥有一个页表,一个页表项就是一组映射。
快表(TLB):
快表是一种高速缓存,比内存快。快表的作用方式和页表相同,只是快表保存的是最近使用过的映射数据,利用的是局部性原理。
和cache的区别:TLB中只有页表项,而cache会有其他数据。
局部性原理:
时间局部性:如果执行了程序中某个指令,这个指令待会可能会被再次执行
空间局部性:如果程序访问了某个单元,这个单元及其附近区域可以会被再次访问。
通过带有快表来分配回收:
1 cpu给出逻辑地址后,得出页号和页内偏移量
2 在快表中寻找是否有相应逻辑页号。如果有,则分配对应的块号
3若快表中没有,则到内存中查找对应的页表
(2)分段储存
进程的地址空间按照程序自己的逻辑分为若干段,比如一个类就为一个段。按照段来分配内存。
段表:
段表也是保存的映射,只不过保存方式是:段号|段长|基址 的形式。(段号一般从零开始,基址为这个段分配内存的首地址)
(3)段页式存储
先按照逻辑(类)分段,在将一个段按照分页存储进行分配内存。
内存空间扩充:
覆盖技术:程序分为多个段,常用的常驻内存,不常用的 在用的时候再调入内存。内存内有一个固定区和若干个覆盖区,覆盖区就用于不常用模块,即覆盖技术。用于早期操作系统
交换技术:内存空间紧张时,系统将内存中某些进程暂时换出到外存,把外存中某些已经具备运行条件的进程换入到内存中,交换技术就是指的这个交换过程
区别:覆盖是在同一程序中,交换是不同程序之间。
内存保护:
①在CPU中设置一对上下限寄存器,存放用户作业在主存中的上限和下限地址
②采用重定位寄存器(基址寄存器)和界址寄存器(限长寄存器),前者存放进程起始地址,后者存放最大逻辑地址。
4.虚拟内存
就是在需要这个数据的时候才将其调入内存中。
传统内存分配是将程序一次性装入内存,并发度低,而且程序中有一部分数据并不会使用,从而造成浪费。所以引出虚拟内存,起作用就是在需要的时候才将数据调入内存。这就是看似很小的内存却可以运行大小远超于它的程序的原因。
缺页中断:因为数据没有全部调入内存,所以会存在逻辑页面没有对于的内存块的情况,此时就发生了缺页中断。而后需要从外存中调入相关数据,而调入的方法就要按照对于页面置换算法。
缺页中断属于内中断(故障)。
页面置换算法:
| 最佳置换算法(OPT) |
每次选择淘汰的页面将是以后都不会使用的(因为无法预知未来哪个页面不会使用,所以这个不能实现,只是理想中的最好情况) |
| 先进先出(FIFO) | 先分配的内存就先置换 |
| 最近最久未用(LRU) | 每次淘汰的是当下最久没有使用的页。需要特殊的硬件支持用于给页面计时。 |
| 时钟置换算法(NRU) |
抖动:指的是频繁换入换出内存
原因:分配给进程的内存块不够
工作集:某段时间分配内存块的集合
驻留集:某段时间分配内存块的记录
四 文件
研究的是在外存中的存放,单位是盘块
1.文件的逻辑结构
| 无结构文件(流式):如记事本 | ||
| 有结构文件(记录式):如数据库 | 逻辑结构 | 顺序文件 |
| 索引文件 | ||
| 索引顺序文件 |
2.文件目录
可理解为文件夹
目录本身就是一种有结构文件,由一条条记录组成,每条记录储存了目录下的文件信息。
每个文件占用一个目录项,用来表示这个文件在外存中的位置
文件控制块FCB:
目录中一条记录即为FCB,一个FCB就是一个目录项
FCB中一般包含:文件名、物理地址、逻辑结构、物理结构、存取控制信息(读写)、使用信息
目录的操作:
搜索
创建/删除文件
显示目录:用户可视
修改目录
目录结构:
| 单级目录 | 这个系统只有一个目录表,表中存放的目录项表示一个文件的信息(理解为整个系统只有一个文件夹) | 缺点:不允许文件重名(可以理解为一个文件夹下不能有重名文件) |
| 两级目录结构 | 分为主文件目录和用户文件目录 | 允许重名 |
| 多级(树形)目录结构 | 是现代的计算机内的目录结构 |
绝对路径:从根目录开始的路径: 相对路径:从当前目录出发 缺点:不易实现文件共享 |
| 无环图目录结构 | 在的树形的基础上添加一些指向统一节点的有向边,便于文件共享 |
索引节点:将FCB中的除文件名的其他数据都放在一个索引节点中,然后FCB每一项中就只有两项,一项是文件名一项是索引节点的指针。这样一个FCB就变小了,一个磁盘块中所包含的FCB数量增加,从而用于存储FCB的磁盘块数量降低,那么启动磁盘的次数就降低,从而节约时间。
3.文件的物理结构(文件在磁盘上如何存)
| 连续分配 | 每个文件在磁盘上有一段连续的磁盘块,文件目录中保存起始磁盘块号和长度 |
优点:支持顺序和随机访问 缺点:物理上不容易对文件存储进行拓展;存储空间利用率低,会产生磁盘碎片 | |||
| 链接分配 |
“非连续的”,利用链式结构将不同地方的磁盘块串起来,都不会产生磁盘碎片 | 隐式链接 |
FCB中记录了起始和结束块号 每个磁盘块都会保存指向下一个盘块的指针 | 只支持顺序访问,不支持随机访问 | |
| 显式链接 |
把用于链接的指针显式的存放在一张表中,即文件分配表(FAT) 类似于数据结构中的链式结构的二维映射表的实现方法 | 支持随机访问 | |||
| 索引分配 | 一个问价有一个索引块,这个索引块指向一个磁盘块,这个磁盘块中保存的就是这个文件的索引表;这个索引表类似于页表,记录的是逻辑块号和实际块号之间的映射。 | 如果一个磁盘块装不下文件的索引表可以通过: | 链接方案 | 即将多个索引表利用指针串起来 | |
|
多层索引 | 类似一多层页表,索引指向的也是一个索引 | ||||
| 混合索引 |
第一个顶级索引表中既有直接地址(即有表项记录的逻辑到物理块号的映射) 也有简介地址(即表项记录的是下一层索引) | ||||
4.文件存储空间的管理(磁盘上的空闲如何管理)
| 空闲表法 |
即用一个二维表记录空闲区的起始盘块号和接下来连着几个空的盘块 | |
| 空闲链表法 | 空闲盘块链 | 以一个盘块为单位,将空闲的盘块组成一条链 |
| 空闲区块链 | 以一段连续的空闲盘块为单位,将空闲串起来 | |
| 位示图法 | 以一个二进制位来表示一个盘块的空闲状态,1B可以表示8个盘块 | |
| 成组链接法 |
其原理是将盘块分成多个组,每组的第一个盘块用于保存下一组每个盘块的大小,除了第一个盘块外其他的盘块都是空闲盘块。 这个链式结构的根部是一个“超级块”盘块,存放第一组盘块号。 空闲盘块的分配和回收都是对第一组盘块进行操作,类似于头插法。 | 空闲链表法不适用于大型的文件系统,所以有了成组链接法,适用于大型文件系统 |
5.文件的基本操作
6.文件保护
| 口令保护 | 为文件设置一个口令,用户访问问价的时候需要提供口令(一般口令存放在对应的FCB或者索引节点中) |
优点:空间和时间开销小 缺点:因为口令在系统内部,不够安全 |
| 加密保护 | 是用某个密码对文件加密,访问时需要提供正确的密码。如利用一串固定密码来对原始数据进行异或操作来进行加密 |
优点:保密强 缺点:加密解密耗时 |
| 访问控制 | 为每个文件的FCB中加入访问控制表,记录了每个用户可以进行的操作 |
7.磁盘
结构:磁盘由一个个盘面重叠而成;一个盘面中有一圈圈的磁道,每个磁道存储的数据大小相同;每个磁带分为一个个扇区,每个扇区就是一个“磁盘块”
时间概念:
寻道时间:启动磁头臂和移动磁头到对应的磁道的时间和
延迟时间:旋转磁盘到对应的扇区所花费的时间
传输时间:进行读写所用的时间
调度算法:
| 先来先服务(FCFS) | ||
| 最短寻找时间(SSTF) | 优先选择当前最近的磁道 |
可保证局部时间最短,但总时间不可保证最短 优点:性能较好 缺点:可能会导致饥饿 |
| 扫描算法(SCAN) | 磁头移动到最边缘的数据磁道后,再反方向扫描回来 |
优点:不会饥饿 缺点:响应频率不平均(越中间越平均) |
| 循环扫描算法(C-SCAN) | 移动到边上后,又从之前开始的地方开始扫描 | 优点:解决了扫描不平均的缺点 |
磁盘管理:
磁盘初始化
| 低级(物理)格式化 | 将磁道划分扇区,一个扇区分为头、数据部分、尾三部分 |
| 将磁盘分区 | 类似于电脑分为C盘、D盘 |
| 逻辑格式化 | 创建文件系统,包括创建根目录、初始化存储空间管理所用的数据结构(如位示图、空闲分区表) |
引导块
坏块
五 IO
1.IO设备:可将数据输入到计算机或者输出的外部设备
2.分类
3.IO控制器
IO控制器就是CPU和IO设备之间的电子设备,CPU控制IO控制器来控制设备。
功能:
接受来自CPU的命令:IO控制器中的控制寄存器用于存放CPU参数和命令
向CPU被告设备的状态:状态寄存器
数据交换
地址识别:为了区分设备控制器中的各个寄存器,也需要哦给各个寄存器设置一个地址
组成:
CPU和控制器之间的接口:之间的寄存器有 数据、状态、控制寄存器
IO逻辑
控制器和设备之间的接口
3.IO控制方式
| 程序直接控制方式 | 即“轮询”,CPU不断询问控制器的状态 |
优点:简单 缺点CPU和设备之间只能串行工作,CPU长期处于忙等状态 | 两者数据都要经过CPU |
| 中断驱动方式 |
引入中断机制,在读写的时候偶将程序中断,CPU就可用于其他进程。 CPU每次只在 字 传输的开始和结束介入控制 |
数据传送单位:字 优点:解决了上者CPU利用率低 缺点:每次传输一个字,如果传输数据量大,也会很费时 | |
| DMA方式 | 利用DMA控制器来对设备IO进行控制 |
数据传输单位:块 优点:数据不再经过CPU;CPU仅仅在整个传输过程的开始和结束介入,并行度提高 缺点:CPU每次发出一条IO指令,只能读写一个或者多个连续的数据块,对于离散的数据读取就不太方便 | 数据不经过CPU |
| 通道控制方式 | 一种硬件,通道可以识别并且执行一系列通道指令(可理解为弱鸡版的CPU),通道中无内存且处理指令单一 |
数据传送单位:一组数据块 优点:只有在传送这一组数据的开始结尾CPU才介入。 缺点:需要专门的硬件支持 |
4. 假脱机技术(spooling)
脱机技术:脱离主机的技术进行输入输出操作。
缓解了CPU和IO设备的速度矛盾。比如磁带,收音机在忙碌的同时也可以将数据放入磁带中。可以理解为一种队列
假脱机技术:即在磁盘上开辟两个储存区域“输入井”和“输出井”
共享打印机:如果只有一台打印机,虽然只有一台,当有多个进程要使用打印机时,系统会答应进程的请求并且接受它的数据,但是由于打印机在忙碌中,打印机没有办法立即分配给进程,所以就将数据放入磁盘中的“输出井”中,每个进程都觉得自己在独享一台打印机。

2940

被折叠的 条评论
为什么被折叠?



