①计算机硬件基础
+1 | -1 | 变化方法 | 1+(-1) | |
原码 | 0000 0001 | 1000 0001 | 数字的二进制形式,最高位是符号位0为正1为负 | 2 |
反码 | 0000 0001 | 1111 1110 | 正数与原码相同,负数符号位不变其余位取反 | -0 |
补码 | 0000 0001 | 1111 1111 | 正数与原码相同,负数在反码的基础上+1 | 0 |
移码 | 1000 0001 | 0111 1111 | 在补码的基础上符号位取反首位0为负1为正 | 0 |
码制 | 定点整数 | 当n=8 | 定点小数 | 当n=8 |
原码 | -( | -127~127 | -( | |
反码 | -( | -127~127 | -( | |
补码 | -( | -128~127 | -1~( | -1~ |
移码 | -( | -128~127 | -1~( | -1~ |
流水线
t1,t2......tk为执行这k部分分别需要的时间;
n为执行多少条指令;
t(max)为执行指令这k部分需要的最长的一段时间,也称作流水线周期
理论公式:(t1+t2+t3+...tk)+(n-1)*t(max)
实践公式:(k+(n-1))*t(max)
流水线吞吐率
指令条数 100
TP= ————————————————————— 以上题为例 TP= ————————————————
流水线的执行时间 203(或204)
流水线最大吞吐率(理想状态下)
1 1
TPmax= ———————————————— 以上题为例 TPmax= ——————————
函数周期(tmax) 2s
流水线的加速比
不使用流水线执行时间
S= ——————————————————————
使用流水线执行时间
以上题为例,不使用流水线的时间为(2s+2s+1s)*100=500
使用流水线的时间为 203(或204)
500
S= ——————
203
流水线的效率
n个任务占用的时空区
E = ——————————————————————————
k个流水段的总的时空区
n个任务所占用的时空区为:(1t+1t+1t+3t)*4=24t
k个流水段的总的时空区为:15t*4=60t
24t
S= ———————
60t
注:可理解为图表中阴影总面积与全部面积之比
执行一条指令的周期是取指、分析、执行所需的时间。CPU会分阶段执行指令,例如取指阶段读到指令,在分析指令和执行指令阶段再去读入操作数。CPU也是根据指令周期的不同阶段区分指令和数据。
Cache相关计算
t1:表示Cache的周期时间
t2:表示主存储器的周期时间
h:表示对Cache的访问命中率(1-h)表示失效率或未命中率
t3:表示Cache+主存储器的系统的平均周期
t3 = h*t1+(1-h)*t2
全相联 | 主存内任何一块数据可调入Cache的任一块中 | 冲突最小 |
组相联 | 某一块只能存入同组号空间内,组内各块可任意存放 | 冲突次之 |
直接映像 | 主存的块只能放在Cache的相同块中 | 冲突最大 |
虚拟存储由主存和辅存构成。
DRAM动态随机存储器,通过周期性刷新保持数据。
SRAM静态随机存储器,相对来说功耗大、体积大、制造成本高。
闪存flash可用来代替ROM。可以在不加电的情况下长期保存数据,还可以快速擦除和重写。
EEPROM中的数据既可以读出,也可以通过电擦除的方式进行改写。
独立磁盘冗余阵列RAID
RAID0 | 没有校验功能,利用率最高 |
RAID1 | 利用率50%,安全性相对好,至少需要2块硬盘,不同的两块磁盘写相同的数据 |
系统总线用于CPU、主存、外设间的数据传输。
总线是一个通用的数据传输通道,发送数据时采用分时机制,接收数据时可以同时接收。
数据总线与地址总线
数据总线的位数通常与微处理的字长一致。
地址总线的大小可以确定内存的容量,例如34位的地址总线可以允许2的34次方的内存容量,即16GB的内存容量。
内总线与外总线
内总线PCI,外总线SCSI,均是并行传输。
相关计算
总线频率=时钟频率/A(A总线传送一次数据所需要的时钟周期数);
总线带宽=总线宽度x总线频率;
十、系统可靠性分析
串联
系统的可靠度:
R=R1*R2*R3......*Rn
系统的失效率
失效率的计算是每个子系统的失效率的和,子系统的失效率=(1-子系统可靠度)是近似的、大致的并不准确
例如20个子系统可靠度是90%此时子系统的失效率是10%,那么整个系统的失效率是200%是不准确的
并联
可靠度:
整个系统的可靠度 = 1-(整个系统的失效率)。
假设每个子系统的可靠度是R1,R2,R3......Rn;那么其对应的失效率是(1-R1),(1-R2),(1-R3)......(1-Rn)
整个系统的可靠度是 R = 1 - [(1-R1)*(1-R2)*(1-R3)......*(1-Rn)]
失效率:
用1减去求得的整个系统的可靠度:系统的失效率=1-R
n模冗余模型
特点:
R1-Rn多个子系统单独处理相同运算,将结果全部输送到表决器,表决器用少数服从多数标准取其中占大多数的结果,舍弃少数结果,如此,若其中有个别系统出错也不会影响正确结果输出,以此来提高可靠度。
十一、校验码及其计算
十一、校验码及其计算
码距:
一个编码系统的码距是整个编码系统中任意两个码字的最小距离,(可以理解为传输形式是几位码距就是几)
码距与检错、纠错的关系:
检错:
最小的码距应该是 d>=a+1
纠错:
最小码距应该是 d>=2b+1
奇偶校验
只能检验错误但是无法确定是哪一位出错,更无法进行修改。
奇校验
添加一位校验位,保证二进制数据中1的个数是奇数个
偶校验
添加一位校验位,保证二进制数据中1的个数是偶数个
循环校验码CRC
特点:
只能进行检错不能进行纠错的编码
模2除法:
例题:
CRC编码编译过程:
首先看多项式,将多项式对应的二进制数求得,并明确其位数,设其位数位a位;
在原始报文后面缀上(多项式对应的二进制位数-1)个0,即(a-1)个0;
然后用原始报文后缀(a-1)个0做被除数,多项式对应二进制数做除数进行模2除法;
将模2除法所得的余数自右向左取(a-1)位,取代原来的(a-1)个0后缀到原始报文,得CRC编码;
校验:
将得到的CRC编码做被除数,将多项式对应的二进制数做除数进行模2除法,若余数为0则说明传输正确,若不为0则说明传输出错。
海明校验码
特点:
可以检错也可以纠错,海明校验码是奇偶校验码的一种扩充。
公式:
>=x+r+1 ,x表示所求信息的二进制位数,r表示校验码位数(r 是满足公式的最小正数)
校验位位置:
校验位的位置是固定的,,
,
,
......
校验位数值计算:
由上可知,信息1011有4位,则有3个校验码,校验码分别在第1,2,4位上,所以信息只能放在第3,5,6,7位上如图所示:
第7位 | 第6位 | 第5位 | 第4位 | 第3位 | 第2位 | 第1位 | 位数 |
1 | 0 | 1 | 1 | 信息位 | |||
r2 | r1 | r0 | 校验位 |
首先用 相加表示出信息位所在的位置,然后根据校验码所在的位置,对应找到各信息位,用信息位上的二进制数进行异或运算:
信息位分别是3,5,6,7位:
第3位的位置可以表示为:3=+
第5位的位置可以表示为:5=+
第6位的位置可以表示为:6=+
第7位的位置可以表示为:7=+
+
已知3个校验码分别在第1,2,4位上,也就是第,
,
;位上;
r0 对应在 位上,则上面有
的是第 7,5,3位,将这3位上的数值自左向右取异或运算(相同同取0不同取1)
r0 = 11
1=1;同理:r1= 1
0
1=0;r2= 1
0
1=0
所以三位校验位的值是001
第7位 | 第6位 | 第5位 | 第4位 | 第3位 | 第2位 | 第1位 | 位数 |
1 | 0 | 1 | 1 | 信息位 | |||
0 | 0 | 1 | 校验位 |
正确的海明校验码是1010 101。
若传输过程中出错,假定只有一位出错;
错误示例1
例如:
接收到为1110 101
7位海明码根据公式 >=x+r+1 可知有3位校验位,且位置固定,则很容易知道校验码是001
那么剩余的就是信息位,信息位是1111。
根据上述求校验码的方式重求校验码:
r0 对应在 位上,则上面有
的是第 7,5,3位,将这3位上的数值自左向右取异或运算(相同同取0不同取1)
r0 = 11
1=1
r1 对应在 位上,则上面有
的是第 7,6,3位,将这3位上的数值自左向右取异或运算(相同同取0不同取1)
r1= 11
1=1
r2 对应在 位上,则上面有
的是第 7,6,5位,将这3位上的数值自左向右取异或运算(相同同取0不同取1)
r2= 11
1=1
得此时得校验码是111(按照r2、r1、r0)
将新得到的校验码各位分别于原校验码取异或
r2 | r1 | r0 | 位置 |
0 | 0 | 1 | 原校验码 |
取异或运算 | |||
1 | 1 | 1 | 新校验码 |
1 | 1 | 0 | 结果110对应的十进制是6则表示第6位出错,将第6位取反就能得到原来正确的信息 |
接收到为1110 101第6位取反1010 101即正确的海明码。
哈夫曼编码
哈夫曼编码通常给定一组字符并附带给各个字母出现的频率。
例
已知某文档包含五个字符,且字符出现的频率如下:
字符 | a | b | c | d | e |
频率 | 40 | 10 | 20 | 16 | 14 |
采取哈夫曼编码对该文档进行压缩存储,则单词“cade”的编码为( ),文档的压缩比为( )
先将频率从大到小排列:10、14、16、20、40;
构造哈夫曼树
构造方式:
依次选取最小的进行构造。虽然哈夫曼树没有明确要求,但是尽量小数在左子树,大数在右子树。
最后自底端向顶端,左子树标为0,右子树标为1;
此时,字符的编码分别为:
字符 | a | b | c | d | e |
频率 | 0 | 100 | 111 | 110 | 101 |
所以,单词cade的编码为111 0 110 101;
在哈夫曼编码中,编码个数n的求解方式为:字符数量<
即本题中字符数量为5,则编码个数为3;
文档的压缩比公式是:(编码个数-加权平均长度)/编码个数
加权平均长度:字符路径长度*出现频率
1*40%+3*10%+3*20%+3*20%+3*16%+3*14%=2.2
故文档的压缩比为 :(3-2.2)/3≈27%
十二、指令系统简介
指令系统是CPU的根本属性,一般包括以下两部分:
操作码
主要指明操作的类型
地址码
指明操作数以及运算结果存放的地址
寻址方式
寻址方式 | 指令需要的操作数不在存储器中 | 速度 |
立即寻址 | 操作数作为指令的一部分直接写在指令中 | 最快 |
寄存器寻址 | 操作数在寄存器中 | 较快 |
直接寻址 | 指令中给出操作数的地址,根据地址去内存中读取 | 最慢 |
寻址方式 | 指令需要的操作数在存储器中 |
寄存器间接寻址 | 操作数有效地址用SI、DI、BX、BP四个寄存器之一来指定 |
寄存器相对寻址 | 有效地址是一个基址寄存器BX、BP或变址寄存器SI、DI的内容和指令的偏移量 |
基址加变址寻址方式 | 有效地址是一个基址寄存器BX、BP或变址寄存器SI、DI的内容之和 |
相对基址加变址寻址方式 | 有效地址是一个基址寄存器BX、BP的值、一个变址寄存器SI、DI的值和指令中的偏移量之和 |
十三、逻辑运算
运算符 | 描述 | 实例 | 结果 |
! | 逻辑非 | !a | 与a相反,若a是true那么!a是false反之亦然 |
&& | 逻辑与 | a&&b | a与b都是true那么结果就是true,如果二者有一个false那么结果就是false |
|| | 逻辑或 | a||b | a与b只要有一个是true那么结果就是true,如果两个都是false结果是false |
逻辑运算是自左向右进行计算的,如果左边的结果可以确定计算的结果那么右边的不会再计算此现象称为短路
例如
a==1&&b==1,如果a==1是false那么不管b==1是true或者false此式子的结果都是0
在&&中一旦左边是false右边不会再进行计算
a==1||b==1,如果a==1是true那么不管b==1是true或者false此式子的结果都是1
在||中一旦左边是true右边不会再进行计算
算术左移
操作数各位依次向左移动n位,最低位补0。符号为<<; 相当于原数字乘以
算术右移
操作数各位依次向右移动n位,符号位不变。符号为>>; 相当于原数字除以
②操作系统概述
一、操作系统基础
操作系统位置
操作系统作用
嵌入式操作系统的特点
微型化 | 占用资源少、系统代码量少 |
可定制 | 能运行在不同的微处理器平台,能根据硬件变化等进行结构与功能上的配置 |
实时性 | 常用于过程控制、数据采集、传输通信等实时性要求比较高的场合 |
可靠性 | 应用具有高可靠性,关键要害措应用要有容错措施 |
易移植性 | 通过硬件抽象技术提高嵌入式操作系统的移植性 |
嵌入式操作系统的初始化
自底向上、从硬件到软件的次序依次为:
片级初始化---板级初始化---系统级初始化(软件为主,主要对操作系统进行初始化)。
二、进程
进程是操作系统中可以并发运行、分配资源的基本单位。
进程是运行中的程序,是程序在某个数据集合上的一次执行过程,具有并发性和动态性。
从静态角度看,进程实体是由进程控制块(PCB)、程序段、数据空间三部分组成的。
用户可以通过接口调用进程控制原语实现进程的建立、撤销、阻塞、唤醒等。
时间片轮转、阻塞或唤醒只能改变进程的状态,不能控制进程的产生与终止。
运行的进程会随着作业运行正常和不正常结束而撤销。
进程三态
进程五态
多道程序特征
多道:内部同时存在多道互相独立的程序
宏观并行:同时进入系统的程序都处于运行状态并未完成
微观串行运行:各作业交替使用CPU
调度算法
先来先服务(FCFS)
是最简单的调度算法,有利于长进程不利于短进程,利于CPU繁忙型作业(多CPU计算少输入输出),不利于I/O繁忙型作业(少量CPU计算大量输入输出)
抢先式多系统任务
抢先式多系统任务中,任何时刻CPU总是分配给优先级最高的作业。
例如:
作业P1:输入输出30ms,CPU10ms,输入输出30ms,CPU10ms;
作业P2:输入输出20ms,CPU20ms,输入输出40ms;
作业P3:CPU30ms,输入输出20ms;
三个作业的优先级 P1>P2>P3 运行时CPU的流转方式为:
作业P1、作业P2首先进行输入输出,此时作业P3占用CPU,运行20ms后,作业P2输入输出完毕抢用CPU,作业P3暂停;
作业P2抢占CPU运行10ms之后,作业P3输入输出完毕,抢占CPU,作业P2中止;
作业P1抢占CPU运行10ms后进行输入输出释放CPU,此时作业P2占用CPU运行未完成的10ms;
作业P2运行10ms后进行输入输出释放CPU,作业P3占用继续运行未完成的10ms;
短作业优先
作业号 | 提交时间 | 运行时间(分钟) |
1 | 6:00 | 60 |
2 | 6:24 | 30 |
3 | 6:48 | 6 |
4 | 7:00 | 12 |
以上四项作业按照短作业优先调度算法次序如下:
作业号 | 提交时间 | 运行开始 | 完成时间 | 运行时间(分钟) | 周转时间(完成-提交) |
1 | 6:00 | 6:00 | 7:00 | 60 | 60 |
2 | 6:24 | 7:18 | 7:48 | 30 | 84 |
3 | 6:48 | 7:00 | 7:06 | 6 | 18 |
4 | 7:00 | 7:06 | 7:18 | 12 | 18 |
作业调度次序为1、3、4、2。
平均周转时间:(60+84+18+18)/4=45。
进程的同步与互斥
互斥:
在同一时刻,只允许某一个进程使用资源,同一个资源不能同时服务于多个进程。进程互斥主要源于资源共享,是进程之间的间接制约关系。
例如:
单人独木桥,在同一时刻桥只服务于一人,同一时刻只允许一人通过,其他人只能等待他通过之后才能逐个继续通过。
与互斥相反的是共享:
例如:过街天桥,同一时刻可通过多人,同一时刻可以服务于多个进程
同步:
速度有差异,在一定情况下停下等待。进程同步主要源于进程合作,是进程之间的直接制约关系。
例如:
张三和李四同时从A点到B点,相同地点相同路径,张三骑车,李四走路,明显张三速度要快于李四,等差距较大时,张三停下等等李四两人一起到达。
实例:
讨论下图哪里存在互斥哪里存在同步
互斥情况:
单缓冲区,同一时刻只允许一人(生产者或者消费者其中一个人)进行操作,一次只能存放一个物品,满足在同一时刻,只允许某一个进程使用资源,同一个资源不能同时服务于多个进程。此为互斥。
同步情况:
单缓冲区只能放入一个物品,生产者放入一个物品后不能继续放入第二个,需等消费者将物品拿走之后才能继续放入,满足速度有差异,在一定情况下停下等代,此为同步。
同步与互斥在同一题目中可能同时存在。
PV操作
临界资源:
诸进程之间需要以互斥方式对其进行访问的共享资源,如打印机,或上述问题中的独木桥;
临界区:
临界区是代码段,是每个进程中访问临界资源的那段代码
信号量:
存在于PV进程内部的一种变量,例如下面的变量S。
信号量取值范围:
信号量≥0:表示某资源的可用数量
信号量<0:表示阻塞队列中等待该资源的进程数量
-(进程个数-资源个数)~ 资源个数
PV操作的作用:
是解决某些并发进程中间某些约束(例如:先后等)。
前驱图
将不分前后的进程同步进行,形成前驱图
PV操作与前驱图
用PV 操作对前驱图中的操作进行先后限制
PV操作对前驱图中进程的影响:
P操作的阻滞功能一般作为“锁”来限制某项进程,使其在解锁之后才能运行;
V操作的唤醒功能一般作为“钥匙”来解锁某项进程;
另:此类题目中如有多个信号量,如此题中的S1,S2,S3,S4;其分布顺序一般为 左-->右;上-->下;
三、死锁
如果系统资源有限而多个进程分配不当则会产生死锁问题。
公式:
求至少有多少个系统资源才不会发生死锁问题的公式为:
进程个数*(单个进程运行所需的系统资源个数-1)+1;
死锁的形成条件:
互斥:
系统资源是互斥的,同一系统资源在同一时间内只允许一个进程使用。
保持和等待:
各个进程会保持自己现在所持有的资源,并且等待更多的资源给自己。
不剥夺:
系统不会把已经分配给其他进程的资源剥夺回来重新分配。
环路等待:
死锁的预防和避免
死锁的预防:
打破上述死锁形成四大条件
死锁的避免:
1.有序的资源分配:
将资源逐个分配给各个进程,运行完毕之后收回再分配,往往资源利用率很低
2.银行家算法:
以银行放贷的思路来做资源分配,放资源之前首先思考是否可以收回来,收不回来便不放。
银行家算法:
分配资源的原则:
一个进程对资源的需求量不大于系统中总资源数时可接纳该进程;
进程可以分期请求资源,但总数仍不能超过最大需求量;
当系统现有资源不足以满足进程尚需资源数时,可对进程的请求推迟分配,但总能使进程在有限时间内得到资源;
例题:
系统状态安全即没有死锁状态发生
答案:B
首先需求得资源 R1、R2、R3 剩余的资源数
R1=9-(1+2+2+1+1)=2
R2=8-(2+1+1+2+1)=1
R3=5-(1+1+3)=0
其次求得各进程执行完毕尚需的资源数
资源 | 最大需求量 | 已分配资源数 | 还需资源数 | ||||||
进程 | R1 | R2 | R3 | R1 | R2 | R3 | R1 | R2 | R3 |
P1 | 6 | 5 | 2 | 1 | 2 | 1 | 5 | 3 | 1 |
P2 | 2 | 2 | 1 | 2 | 1 | 1 | 0 | 1 | 0 |
P3 | 8 | 1 | 1 | 2 | 1 | 0 | 6 | 0 | 1 |
P4 | 1 | 2 | 1 | 1 | 2 | 0 | 0 | 0 | 1 |
P5 | 3 | 4 | 4 | 1 | 1 | 3 | 2 | 3 | 1 |
若进程P1首先运行:则资源R1、R2、R3剩余量不满足该进程尚需资源量,会发生死锁;
若进程P2首先运行:则3类资源剩余量均满足该进程尚需资源量,可以运行;
若进程P3首先运行:则资源R1、R3剩余量不满足该进程尚需资源量,会发生死锁;
若进程P4首先运行:则资源R3无剩余不满足该进程尚需资源量,会发生死锁;
若进程P5首先运行:则资源R2、R3剩余量不满足该进程尚需资源量,会发生死锁;
因此只能进程P2首先运行,R2运行完毕后归还资源,此时资源分配表为:
资源 | 最大需求量 | 已分配资源数 | 还需资源数 | 当前剩余资源数 (原剩余-P2所需+P2归还) |
进程 | R1 R2 R3 | R1 R2 R3 | R1 R2 R3 | R1 R2 R3 |
P1 | 6 5 2 | 1 2 1 | 5 3 1 | 4 2 1 |
P2 | 2 2 1 | 0 0 0 | 0 0 0 | |
P3 | 8 1 1 | 2 1 0 | 6 0 1 | |
P4 | 1 2 1 | 1 2 0 | 0 0 1 | |
P5 | 3 4 4 | 1 1 3 | 2 3 1 |
由上表可知,此时运行进程P4、P5均不会发生死锁,但一优先般运行下标小的进程,所以运行P4进程;
资源 | 最大需求量 | 已分配资源数 | 还需资源数 | 当前剩余资源数 (原剩余-P4所需+P4归还) |
进程 | R1 R2 R3 | R1 R2 R3 | R1 R2 R3 | R1 R2 R3 |
P1 | 6 5 2 | 1 2 1 | 5 3 1 | 5 4 1 |
P2 | 2 2 1 | 0 0 0 | 0 0 0 | |
P3 | 8 1 1 | 2 1 0 | 6 0 1 | |
P4 | 1 2 1 | 0 0 0 | 0 0 0 | |
P5 | 3 4 4 | 1 1 3 | 2 3 1 |
由上表可知,此时运行进程P5不会发生死锁,所以运行P5进程;
资源 | 最大需求量 | 已分配资源数 | 还需资源数 | 当前剩余资源数 (原剩余-P5所需+P5归还) |
进程 | R1 R2 R3 | R1 R2 R3 | R1 R2 R3 | 6 5 4 |
P1 | 6 5 2 | 1 2 1 | 5 3 1 | |
P2 | 2 2 1 | 0 0 0 | 0 0 0 | |
P3 | 8 1 1 | 2 1 0 | 6 0 1 | |
P4 | 1 2 1 | 0 0 0 | 0 0 0 | |
P5 | 3 4 4 | 0 0 0 | 0 0 0 |
此时再运行P1然后运行P3。
此类题目运算步较为零散,极易出错,若有空余时间当走走其他选项是否能走通
四、存储组织
分区存储组织
存储区域除了给系统用,还有一部分是给用户程序使用的,给用户程序使用的空间原本是一大块连续的空间,当用户有程序需要空间运行时,系统会把需要的内存大小提交到分配组织里面去,然后给他分配所需要大小的内存。
例如:
某计算机内存大小为128K,采用可变分区分配方式进行分配内存,当前系统内存分块情况如下图所示,现有作业4申请内存9K,按照几种不同的存储分配算法分配。
分配前:
首次适应算法分配:
最佳适应算法分配:
最差适应算法分配:
循环首次适应算法分配 :
页式存储组织
上述分区存储组织,是将整个程序直接调入内存,适用于占用小块内存的运行程序;
页式存储组织是将所需内存大的程序拆分成等分大小的小程序,称作页,将内存也分成对应大小的块,将程序页调入内存块中运行,另需要一个页表来记录用户程序页和内存块一 一对应的映射关系,此存储组织适用于需要较大内存的程序,使用此方法甚至能运行大于内存总量的程序。
注:页号和块号可以相等也可以不相等,没有严格要求,但是绝大多数时候是不相等的。
页式存储组织优缺点:
优点:
利用率高,碎片小,分配及管理简单。
缺点:
使用页表对应用户程序页与内存块之间的映射关系,运行时需要从页表中查找,增加了系统开销,可能产生抖动的现象。
逻辑地址与物理地址:
一般考察逻辑地址和物理地址互化。
高级语言程序使用逻辑地址;运行状态、内存中使用物理地址;
逻辑地址和物理地址都是由页号和页内地址组成的
逻辑地址与物理地址的页内地址是相同的,但是物理地址的块号,是逻辑地址的页号所对应的块号,可能相等也可能不等。
例题:
题目中给予逻辑地址5A29H(地址中的H一般忽略不计,相当于单位不纳入计算),需计算其物理地址;
首先将逻辑地址的页号和页内地址分离,逻辑地址的页内地址=物理地址的页内地址;
分离过程:
题目中页面大小是4K,4K化为二进制是,即需12位二进制数表示,题目中的地址5A29H是十六进制,12位二进制化为十六进制是3位,高出3位的就是页号,所以页面地址是A29,同时可得页号是5,页号5所对应的页帧号(块号)是6,即物理地址是6A29H(选项D)。
进程P想要访问的页面4不存在,
则需要将进程的页面4调入内存当中,而此时应当从现在占有内存的几个页面中挑一个未访问的丢出去。也就是只能从页号0125中挑一个未访问的扔出去,页面0125中未访问的只有页面1,所以应该淘汰页号为1(选项B)的页面。
段式存储组织
页式存储是将程序划分为固定大小的页,所有页的长度都相等;
而段式存储是将程序按逻辑结构划分为未必相等的段
比如:将一个程序划分为段式:将main函数划分为一个段,每个子函数划分为一个段。
段式存储优点:
多道程序内存共享,各段程序修改互不影响;
段式内存缺点:
内存利用率低,内存碎片浪费大;
段表:
段式存储同样需要段表来记录段与内存的映射关系:
段表的内容包含:
段号:
所划分的段的序号;
段长:
划分的这一段的地址是多大
基址:
基地址即此段的开始地址是多少
地址结构:
段页式存储组织:
段式存储和页式存储的结合,先分段,段内分页;
优点:
空间浪费小,存储共享容易,存储保护容易,能动态连接;
缺点:
管理软件的增加,复杂性和开销也随之增加(先查段号,再查页号等等操作),需要的硬件及占用的内容也有所增加,执行速度下降。
快表:
快表是一块小容量的相联存储器(按内容存取),由高速缓存器组成(在Cache里面),速度快效率高,一般用来存放当前访问最频繁的少数活动的页面的页号。
相对应来讲,如果将段表页表等放入内存当中则称之为慢表
五、页面置换算法(页面淘汰算法)
最优算法(OPT)
随机算法(RAND)
先进先出(FIFO):
先进入内存块体系的先淘汰可能产生抖动。
上方2表比较可知,第2个表中,系统给该进程多配备了一块资源反而造成缺页增多,此现象称之为抖动。
最近最少使用(LRU):
最近使用频率由高到低排列,淘汰最近使用频率最低的,不会发生抖动。
先进先出算法与最近最少使用算法比较:
例题:
系统中没有使用快表的意思是,将页表全部放入了内存中。
程序运行的过程:
首先获得系统给分配的内存资源块,当程序开始运行时,此时内存块中是空的,系统需要将运行所需的程序页不断调入内存块,直到内存块被占满。
此时程序运行如果需要调用程序页存在于内存块时,需要先到页表中查阅所需程序页对应的内存块位置,然后再去内存中调用程序块,如果查阅完毕未找到所需的程序块,则需要用到页面淘汰中的算法,淘汰当前不用的程序页面,然后调入所需的程序页继续运行。
程序每一次因为内存中缺少程序页停止称为缺页中断,缺页中断需要从外部将程序页调入内存,如果一个程序页占用了两块内存,则系统调用完一个内存块之后会停止,产生一次缺页中断,然后再继续调用下一个内存块中的该程序页内容,因此会产生两次缺页中断,依次类推直到程序运行结束。
系统中程序划分为6个页面,由题可知此时程序块已经全部放入内存中,每次访问一个内存块需要先访问页表确定块的位置,然后再访问内存块,每一页都是如此,共分为6页,所以需要访问12次内存。
注:约定俗成,程序的指令不论分成几个块,都是一次性调入,产生一次缺页中断。
如果需要运行swap指令,运行时发现该指令不在内存中,首先需要将指令本身调入内存中,此为一次缺页中断,而程序的指令不管分成几块都是一次性调入内存的,所以只产生这一次缺页中断;
当需要操作数A时,运行发现A不在内存中需要将其调入,此为一次缺页中断,然后读取完当前内存块发现并没有完整地读完A的全部内容,仍然无法运行程序,需要再次将A的另一部分调入,此为第二次缺页中断。
需要操作数B时也是产生两次操作中断。
所以一共会产生5次操作中断。
六、索引文件结构
索引文件结构本身的容量非常有限,但是他引入了一种扩展机制,即一级间接索引、二级间接索引等扩展方式来进行容量拓展。索引文件结构中,使用间接索引扩展内存容量的同时,其查询速度也会相应减慢。
默认索引文件结构
默认标准索引节点一般是0-12号共13个节点,0-9为直接索引,10为一级间接索引,11为二级间接索引,12为三级间接索引。如果不使用默认结构则应该说明节点数量及各级索引构成。
例题:
注:物理块是只内存中实际存在的内存块,物理块号就是实际内存的序号;逻辑块号是人给内存块取的名字。
答案:CD
逻辑块号从0开始编号,5号逻辑块对应的物理块号是58;
已知地址大小是4字节,数据块和索引块的大小是1K,1K=1024B,那么一个数据块可以存放1K/4B=256个地址;
90号物理块和91号物理块采用一级间接索引地址,其中存放的地址对应的物理块是新的索引节点;
90号物理块有256个地址分别对应256个逻辑块;同样91号物理块有256个地址分别对应256个逻辑块;
已知直接地址索引对应了5个逻辑块分别是0-4号;90号是一级间接地址索引,对应256个逻辑块,应该是5-260号;
所以261号逻辑块应该在91号一级间接索引地址对应的256个逻辑块中的第一个即261号物理块;
101号物理块是二级间接索引地址,所以101号物理块中存放的应该是二级地址索引表;
树形目录结构
全文件名:包括盘符及根目录开始的文件名
绝对路径:是从最顶端盘符开始
相对路径:从当前路径开始
例如:当前为D1要求F2的路径
绝对路径:/D1/W2/F2(从最顶端盘符/一直写到所求F2)
相对路径:W2/F2(当前是D1则直接从D1的下一级往下写到所求F2)
如上面提到的索引文件结构等类似情况,一次访问可能要经过多次间接查询才能找到最终文件。如果树形目录结构很大的情况下不仅耗时对I/O系统也有压力,为此引出“当前目录”即相对路径,从当前目录开始直接去向待查文件。
七、空闲存储空间的管理
在存储空间内,部分空间被占用,仍有部分空间没被占用,这些没被占用的空间需要集中管理起来,以方便系统申请空间时可以合理分配,此为空闲存储空间的管理。
管理方法:
空间存储空间的管理有以下四种方法:
空闲区表法
又称空闲文件目录,是指用一张表把空闲的存储空间记录下来
空闲链表法
将空闲区链起来,形成一个链,等系统申请空间时可以按需分配
成组链接法
将空闲的存储空间即分组又分链
位示图法
(四种方法中考察频率高)
画图表,用1表示该内存区域已被占用,0表达的区域还是空闲的
例题:
答案:DB
由题知,字长是32位,每一位对应一个物理块;
注:约定俗成,字从1开始计数,首个字便是第1个字,物理块(位置)是从0开始计数,首位或者首个物理块是第0号,32位是0-31号物理块
第4195号物理块实际上是第4196个物理块,4196/32=131.125表示已经超出了第131个字,因此此时的位置应该是第132个字。
每个字32位,131个字总共131*32=4192位,位是从0开始计数,所以第131个字的最后一位的序号是4191,第132个字的位数分别是:
第132个字的位置 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | ...... | 31 |
第132个字的位置所对应的物理块号 | 4192 | 4193 | 4194 | 4195 | 4196 | 4197 | 4198 | ...... |
因此4195号物理块对应的是第132个字的位置3,而将4195号物理块分配给某文件说明4195号物理块需要被占用,位示图法中,用1表示已被占用,用0表示尚未占用,所以4195号物理块即第132个字的位置3应该是改为1。
八、I/O
I/O管理软件
I/O隐藏了I/O操作实现的细节,方便用户适用I/O设备
I/O数据传输控制方式
数据传输控制方式是指内存和外设的数据传输控制问题。I/O设备与CPU之间的数据传送控制方式有4种:
十三、I/O控制方式
I/O设备与CPU之间的数据传送控制方式有4种:
控制方式 | 特点 | 缺点 |
程序直接控制(程序查询) | 适用于简单、外设很少的计算机系统,是CPU介入最多的方式,外设不对传说过程产生反馈,需要CPU去查询是否传输完毕 | 耗费大量CPU时间,无法检测设硬件设施发生的错误,设备之间只能串行工作 |
中断控制 | 适用于简单、外设很少的计算机系统,外设传输完毕之后自动中断 | CPU仍需要花费较多时间处理中断,处理中断期间其他并行设备也会受到影响,过多中断容易导致数据丢失 |
DMA | 外设与内存直接传输数据,传输期间由DMA控制,传输结束时才会向CPU发出中断请求,CPU接收后继续后续工作 一个DMA传送需要执行一个DMA周期,相当于一个总线的读写周期,但DMA方式下每传送一个数据仅占用一个存储周期 | 要求CPU启动驱动设备、给出存放数据的地址、操作方式、传送字节长度等 |
通道 | 外设与内存直接交换数据,一段数据传输结束时才会向CPU发出中断请求 | CPU发出I/O启动命令之后,通道自行完成启动驱动设备、读取存放数据的地址、操作方式、传送字节长度等工作 |
计算机运行过程中遇见突发事件要求停止正在运行的程序,去应对突发事件。服务完毕再自动返回原程序继续执行,这个过程称之为中断。CPU离开时会保存现场,以便于返回去继续执行原程序。 中断服务程序的入口地址称为中断向量。中断程序的现场信息是保存在栈。
九、虚设备与SPOOLING技术
例如:
ABC3台电脑公用一台打印机,当A正在打印时如果B提交打印申请会被驳回,或无法提交上,过会再提交时可能A还没打印完,再等会提交时可能C正在打印了,B还是无法打印,所以不能充分高效的进行顺序打印,因此引入SPOOLING技术。
SPOOLING技术是指,在打印机正在打印时如果提交过来打印任务,则会将任务会自动存入输入井,等正在进行任务完成后,输入井中的任务会按序进行打印。
虚拟内存实际上是一个基于局部性原理的地址空间,采用调用、置换将内存和外存统一管理,虚拟容量取决于计算机的地址结构和外存容量。
十、微内核操作系统
微内核操作系统对应的是单体内核操作系统;
单体内核操作系统是将需要处理的东西整个全部放入内核中,如此庞大的内容处在内核中,一旦任何一部分出现问题整个系统都会崩溃,需要重新启动;
而微内核操作系统是只将最重要的一小部分放入内核之中,其他大部分放在内核之外,此时,只有当内核中这一小部分出现问题是系统才会崩溃,只需要重启这一小部分即可,其他部分出现问题系统都不会崩溃;
实质 | 优点 | 缺点 | |
单体内核 | 将图形、设备驱动、文件系统等功能全部放在内核中实现,运行在内核状态和同一地址空间 | 减少进程间通信和状态切换的系统开销,获得较高额运行效率 | 内核庞大、占用资源较多且不易剪裁,系统的稳定性和安全性不高 |
微内核 | 只实现基本功能,将图形系统、文件系统、设备驱动系统及通信功能放在内核之外 | 内核精炼,便于剪裁和转移,系统服务程序运行在用户地址空间,系统的可靠性、稳定性和安全性较高,可用于分布式系统 | 用户状态和内核状态需要频繁切换,从而导致系统效率不如单体内核 |
核心态和用户态
微内核操作分为核心态和用户态,核心态就是微内核系统的内核之内的部分,用户态就是微内核系统的内核之外的部分;用户态中的内容出现问题会比较容易解决,核心态中的内容出现问题会比较难处理,用户态和核心态之间存在频繁的交互。