以下内容为个人备考软件设计师时所做的笔记,仅供参考!!
目录截图
…
计组
- 数据进制的转换
- X进制 转 十进制
方法: 按权展开
如:
- 十进制 转 X进制
方法: 十进制数除以相应X,取余数,余数构成的集合从右向左排列即对应X进制数
如:
- 二进制转八进制 或 八进制转二进制
方法: 三位二进制数对应一位八进制数 或 一位八进制数对应三位二进制数【不足三位的则前面补0】
如:
- 二进制转十六进制 或 十六进制转二进制
方法: 四位二进制数对应一位十六进制数 或 一位十六进制数对应四位二进制数【不足四位的则前面补0】
如:
- 原码反码补码移码
原码,反码,补码中的符号位: 0代表正数,1代表负数。
注: 真值即除了符号位剩下的那部分位。那部分才需要变化。且转换成十进制也只需转换到真值部分即可,符号位不参与
原码: 有符号位,真值不变。【数值0有两种表示】
反码: 有符号位,正数真值不变,负数真值取反。【数值0有两种表示】
补码: 有符号位,正数真值不变,负数真值取反加1.【数值0只有一种表示】
移码: 不管正负数,只要将其补码的符号位取反即可。
数值表示范围:
发现: 补码比原码和反码的表示范围多一个数。
原因: 补码对数值0只有一种表示,相比原码和反码多了一个数的表示空间。
各种8位二进制的表示法的数据范围如下:
原码:-127 ~ 127;
反码:-127 ~ 127;
补码:-128 ~ 127其中 -128的补码为10000000是人为规定
- 原码的运算: 原码的加减法运算较复杂。
- 原码运算时,符号位不参加运算。其它编码符号位都是参与运算的。
- 当两数相加时,首先需要判断两数的符号是否相同,如果相同则两数相加
- 若符号不同,则两数相减。
- 反码的运算:
- 反码运算时,其符号位与数值一起参加运算。
- 反码的符号位相加后,如果有进位出现,则要把它送回到最低位去相加(循环进位)
- 用反码运算,其运算结果亦为反码。在转换为真值时,若符号位为0,结果不变;若符号位为1,应将结果按位取反才是其真值。
- 补码的运算:
- 补码运算时,其符号位与数值部分一起参加运算。
- 补码的符号位相加后,如果有进位出现,要把这个进位舍去(自然丢失)
- 用补码运算,其运算结果亦为补码。在转换为真值时,若符号位为0,结果不变;若符号位为1,应将结果按位取反再加1才是其真值。
- 进行定点数加减运算时,绝对值若变大,则可能溢出,反之,则不会溢出。
- 浮点数运算
浮点数的表示: M×2E
其中: M是尾数,E是阶码 2是基数 【尾数和阶码常用补码表示】
运算步骤:
- 对阶(原则:小阶对大阶,尾数左移扩大(右移缩小),对应阶码缩小(扩大)
- 尾数计算
- 结果格式化
- (确保尾数第一个位置,即小数点左边这个位置不能是0)
- (确保尾数第一个位置,即小数点左边这个位置的数字位数只能是1位)
- 运算器与控制器组成
- 数据传输控制方式(略)
-
程序控制方式(程序查询方式)
-
程序中断方式。(中断响应时间: 发出中断请求到开始进入中断服务程序所需的时间)
-
DMA(Direct Memory Access)方式
采用DMA传送数据时,每传送一个数据都需要占用一个(存储周期)
DMA是直接内存存取,传送数据的时间只与内存相关,与CPU的时间无关。
-
通道。
-
输入输出处理机。
- Spooling技术
注:
Spooling技术本质: 磁盘开辟缓冲区,形成输入输出队列,
利用缓冲区协调输入低速处理高速的问题。
- 计算机体系结构分类(Flynn分类法)
分类指标: 指令流和数据流
- CISC指令集与RISC指令集
- 流水线的计算问题:
流水线的建立: 即第一条指令运行成功。时间为各个阶段的时间之和,即: (t1+t2+…+tk)
当流水线建立后,其后的每个指令只需要一个周期即可完成。
设一次需要执行的指令数目为: n
流水线的一个周期△t为: 各个阶段执行时间最长的那段的时间
流水线的计算公式(考试先以理论公式去计算,没有答案再以实践公式计算):
- 理论公式: (t1+t2+…+tk)+(n-1)*△t
- 实践公式:
- 本质:将第一条指令的运行的各阶段(设为k个阶段)时间也等同于一个周期去计算。
- 公式: k*△t+(n-1)*△t = (k+n-1)*△t
例题:
1. 其流水线的一个周期为:2ns
2. 理论时间: (2+2+1)+(100-1)*2 = 203ns
3. 实践实践: (3+100-1)*2 = 204ns
- 流水线吞吐率的计算:
流水线的吞吐率: 即: 单位时间里执行的指令数目
公式为: 执行的指令条数/流水线的执行时间
流水线的最大吞吐率:
公式: 1/ △t 其中△t为流水线的一个周期
以上面的例题为例:
其吞吐率为: 100/203
- 流水线加速比计算
流水线的加速比:
- 即: 执行同样数量的指令,不使用流水线所需要的时间与使用流水线所需要的时间的比值。
- 公式: (不使用流水线的执行时间)/(使用流水线的执行时间)
以上面的例题为例:
不使用流水线的执行时间:(2+2+1)*100=500
使用流水线执行的理论时间: 203
故加速比: 500/203 故加速比越大越好,体现流水线的效率之高
- 流水线的效率
公式: n个任务占用的时空区/总的时空区
例题:
图中每个小空格代表一个时空区
其流水线效率为:(△t+△t+△t+3△t)/(15*4*△t)
- 寻址方式总结:
立即寻址: 操作数直接出现在指令中。
寄存器寻址: 操作数在寄存器中。
直接寻址: 有效地址直接在指令中给出,CPU按照有效地址去存储器找操作数.
寄存器间接寻址: 有效地址在寄存器中。
基址寻址:有效地址同时由基址寄存器和位移量表示.
变址寻址:有效地址同时由变址寄存器和位移量表示.
- 存储系统
速度: 寄存器>Cache(按内容存取)>主存>辅存
容量:寄存器<Cache(按内容存取)<主存<辅存
- 主存
主存的组成: 存储体, 控制线路,地址寄存器,数据寄存器和地址译码电路等五个部分组成
主存主要采用动态随机存储器DRAM
Cache采用静态随机存储器SRAM
EEPROM是电擦除可编程的只读存储器
主存按其存取方式的分类:
- RAM(Random Access Memory)随机存取存储器: 内容断电后都会消失,每次开机内容随机,不固定
- DRAM(Dynamic RAM 动态RAM): 隔一段时间要刷新充电一次,否则数据会消失
- SRAM(Static RAM 静态RAM)(速度更快):只要保持通电,数据就可以保持。
- CMOS(Complementary Metal Oxide Semiconductor):是计算机主板上的一块可读写的RAM芯片,用来保存BIOS设置完计算机硬件参数后的数据,这个芯片仅用来存放数据。
- ROM(Read Only Memory)只读存储器: 内容断电后都不会消失
- 如PROM,EPROM,Flash Memory(非易失存储器,以块为传送单位)
- BIOS一般存储在ROM中。
- 相联存储器: 是一种按内容访问的存储器。
主存的编址:
如: 8*4的存储器
其中: 由于CPU是按存储单元访问的,故8代表存储器有8个存储单元,4代表每个存储单元由4个bit位组成。
- 高速缓存(Cache)
高速缓存的组成:
1.控制部分: 用来判断CPU要访问的信息是否在Cache存储池器中。
2.存储器部分: 用来存放主存的部分拷贝信息。
高速缓存的地址映像:
为什么需要地址映像: CPU工作时,送的是主存单元地址,但实际要从Cache中读写信息。
高速缓存的地址映像的方式:
直接映像: 主存中的块只能存放在Cache存储器的相同块号中。
全相联映像: 主存的任一块可以调入Cache存储器的任何一个块空间中。
组相联映像:
折中方案,将Cache中的块分成组,主存则按Cache的大小进行分区再在区里面进行分 组, 组采用直接直接映射方式,组中的块采用全相联映像方式。
- Cache+主存的系统平均读取周期计算
如果以h代表对Cache的访问命中率, t1代表Cache的周期时间, t2代表主存储器周期时间,则使用"Cache+主存"的系统的平均周期时间为t3,则:
t3 = h * t1 + (1-h) * t2
其中:(1-h)又称为失败率,即未命中率
- 磁盘
磁盘存取时间 = 寻道时间+等待时间
寻道时间: 指磁头移动到磁道所需的时间
等待时间: 等待读写的扇区转到磁头下方所用的时间
- 总线系统
按照总线所处的位置的一般分类:
内部总线(如:芯片内部的总线)
系统总线(如:ISA,EISA,PCI)(计算机各组成部分的连接)
- 数据总线
2. 计算机的字长取决于数据总线的宽度。如:64位的CPU指CPU的数据总线宽度是64位。- 地址总线
- 每条地址线一次只能传输1位二进制数据。
- CPU是通过地址总线来指定存储单元的,其决定了CPU所能访问的最大内存空间的大小。
- 如: 计算机的地址总线的宽度是32位,即232=4G内存,则最多允许直接访问4GB物理空间。
- 控制总线
- 控制总线负责对外部器件进行控制,其宽度决定了CPU对外部器件的控制能力
外部总线(连接外部设备的总线)
如:【RS-232C, SCSI总线(小型计算机系统接口),USB,IEEE-XX相关总线】
- 运算器和控制器的组成
运算器:
- 算术逻辑单元ALU
- 累加寄存器
- 数据缓冲寄存器
- 状态条件寄存器
控制器:
- 程序计数器PC: 用来存放将要执行的下一条指令的地址
- 指令寄存器IR: 存放即将执行的指令
- 指令译码器: 对指令中的操作码字段进行分析和解释。
- 时序部件
CPU执行指令的过程,会根据时序部件发出的时钟信号进行操作.在取指令阶段读取的是指令,在分析和执行指令时,如果需要操作数,则读取操作数。【即根据指令周期的不同阶段来区分指令和数据】
- 系统可靠性
串联部件的可靠度=各部件的可靠度的乘积
并联部件的可靠度=1-(部件失效率的乘积)
例题:
每个部件的可靠度都为R,则该系统的可靠度为:
由于图是 "先并后串"
1.先求出三个R并联的可靠度为:1-(1-R)^3
2.然后求出两个R并联的可靠度:1-(1-r)^2
3.最后整个系统的可靠度是串联的,即两者之积:
即:1-(1-R)^3 * 1-(1-r)^2
- 校验码
码距: 编码系统中任意两个合法码之间的最小距离(二进制位数)
在一个码组内为了检测e个误码,要求最小码距d应满足: d>=e+1
在一个码组内为了纠正t个误码,要求最小码距d应满足: d>=2t+1
奇偶校验码:可以检错不能纠错的编码。
CRC码:可以检错不能纠错的编码。
- 核心: 模2除法
- 校验位添加在数据位的尾部。
海明码:可以检错也可以纠错的编码。(海明码利用奇偶性进行检错和纠错)
每个数据位由确定位置关系的校验位来校验。
- 根据公式确定校验码位数和位置
- 信息的Bit位从右到左分别为I1=1,I2=1,I3=0,I4=1,将信息的Bit位从右向左填满表格
- 将信息位对应的位序号拆解成2的次方数相加的形式
- 2的次方数的指数代表了"r几"这个校验位。
- "r几"这个校验位在哪个信息位对应的位序号出现过就代表有其I值,互相做异或运算。
操作系统
进程管理(处理机管理)
- 进程的状态及状态转换
1.活跃就绪:指进程在主存并且可被调度的状态。
2.静止就绪:指就绪进程被对换到辅存时的状态,它不能被直接调度的状态,只有当主存中没有活跃就绪进程,或者是挂起态进程具有更高的优先级,系统将把挂起进程调回主存并转换为活跃就绪。
3.活跃阻塞:指进程在主存,一旦等待的事件产生便进入活跃就绪状态。
4.静止阻塞:指阻塞进程被对换到辅存时的状态,一旦等待的时间发生便进入静止就绪状态。
-
前趋图: 表现活动之间的时间关系和并行关系。
-
进程的同步与互斥:
-
互斥: 资源只允许一个进程使用。即: 千军万马过独木桥。
-
同步: 进程之间速度有差异,在一定情况下停下等待。即: 有速度同步匹配要求。
-
临界资源(Critical Resource,CR):一次只能供一个进程使用的资源。 临界区:(Critical Section,CS):进程中对临界资源实施操作的那段程序。 对临界区管理的4个原则: 1.有空即进。 2.无空等待。 3.有限等待。 4.让权等待。
-
-
PV操作及PV操作与前趋图的结合。
- PV操作属于低级线程通信方式。
- 高级线程通信方式有:
- 共享存储区模式。
- 消息传递模式。
- 管道通信。
-
进程调度
-
进程调度方式分为: 可剥夺式和不可剥夺式调度。
-
三级调度
高级调度(作业调度): 决定磁盘中哪个后备作业进入主存成为就绪进程。
中级调度(对换调度): 使处于内存的进程和处于盘交换区的进程交换位置。
低级调度(进程调度): 决定内存中哪个就绪进程可以占用CPU。
-
-
死锁问题。
- 最少能避免死锁的资源数量,要从确保让一个进程能运行的角度去考虑。
- 故最少资源数为: k(n-1)+1*
- 其中: k代表进程的数目,n代表每个进程需要的资源数目。
-
银行家算法(死锁的避免)
作业管理
包括任务,界面管理,人机交互,图形界面,语音控制和虚拟现实等。
…
存储管理
- 分区内存分配管理
即: (将主存的用户区划分出若干区域,每个区域分配给一个用户作业使用)
按划分方式不同,分为:
固定分区:静态分区,系统生成时已将主存划分为若干个分区,每个分区的大小不等。
可变分区:动态分区,存储空间的划分是在作业装入时进行,分区的个数是可变的。
可重定位分区:解决碎片问题需要进行分区靠拢,故有地址重定位问题。
可变分区的请求和释放分区主要有以下4种算法:
首次适应法: 根据内存地址从小到达排序各个内存分区, 优先分配内存地址小的分区。
最佳适应法: 根据内存分区的大小从小到大排序,优先分配大小最适合的分区。
最差适应法:根据内存分区的大小从小到大排序,优先分配最大的分区。
循环首次适应法: 将所有空闲分区连接成一个环状,每次分配都从刚刚分配过的空白区开始寻找,然后下次就从链接着的下一个空闲分区开始分配。
-
分页式存储管理(略)
-
分段式存储管理(略)
-
段页式存储管理(略)
-
虚拟存储管理(略)
-
请求分页系统。
-
请求分段系统。
-
请求段页式系统。
-
页面置换算法
- 最佳(Optimal)置换算法。
- FIFO置换算法。
- LRU置换算法。
-
工作集: 某段时间间隔里进程实际要访问的页面的集合。
-
- 磁盘管理
在Windows系统中的磁盘碎片整理程序可以分析本地卷,使每个文件或文件夹占用卷上连续的磁盘空间,合并卷上的可用空间使其成为连续的空闲区域,这样系统就可以更有效地访问文件或文件夹,以及更有效地保存新的文件和文件夹。通过合并文件和文件夹,磁盘碎片整理程序还将合并卷上的可用空间,以减少新文件出现碎片的可能性。
合并文件和文件夹碎片的过程称为碎片整理。
文件管理
- 文件的结构和组织
文件的逻辑结构:
- 有结构的记录式文件,由一个以上的记录构成的文件。
- 无结构的流式文件,由一串顺序字符流构成的文件。
文件的物理结构:
1.连续结构
2.链接结构
3.索引结构
4.多个物理块的索引表
- 文件存储空间的管理
1.空闲区表。
2.位示图。
3.空闲块链。
4.成组链接法。
- 索引文件结构
直接索引: 索引结点的值直接对应物理盘块号
一级间接索引: 索引结点的值存储一级索引表,一级索引表的值对应物理盘块号
二级间接索引: 索引结点的值存储一级索引表,一级索引表的值存储二级索引表,二级索引表的值对应物理盘块号,以此类推…
一个索引表对应存储在一个物理块中,而不是由地址项拆分出来。
例题:
由于逻辑快号一般是从0开始算的,故逻辑块号0对应addr[0],逻辑块号1对应addr[1],逻辑块号2对应addr[2],逻辑块号3对应addr[3],逻辑块号4对应addr[4];
但是由于addr[5]结点是一级间接索引,其存储的值是一级索引表,一级索引表的值才是对应的物理块号。
故逻辑块号5对应addr[5]中的一级索引表中的第一个值即对应58物理块号。
由于磁盘块的大小为1kB,而索引表中的地址项为4B,故一级索引表中的地址项数目为1024/4=256,且由于第一个一级索引表的起始逻辑块为5,261-5=256,刚好占满第一个索引表,故逻辑块号261对应第二个一级索引表的第一项,即对应物理块号187.而101号物理块对应addr[7]属于二级索引表,故101号物理块存储二级地址索引表。
- 文件的绝对路径和相对路径
绝对路径: 是从盘符开始的路径,如Linux中 “/”
相对路径: 是从当前路径开始的路径
例:
则文件F2的绝对路径为: /D1/W2/F2
若当前路径为D1, 则文件F2的相对路径为: W2/F2
- 空闲存储空间管理之位示图法
位示图中的空格代表一个个存储物理块,且1代表物理块的空间已被占用,0则未被占用。
例题:
注:
注意物理块编号是从0开始编号,故4095号物理块是第4096个物理块
注意第一问中的第几个字中的字是从1开始编号的
注意第二问中的字内部的位置是从0开始编号的
解:
(1): (4195+1)/32 = 131.125,故对应 第132个字。
(2): 由于131*32 = 4192个物理块,对应0-4191号物理块。 故第132物理块的0位置对应4192,1位置对应4193,2位置对应4194 3位置对应4195。由于占用了物理块的空间,故将值置为"1"。
- 操作系统的微内核
设备管理
对硬件设备的管理,包括对IO设备的分配,启动,完成和回收。
- 设备的分类
按数据组织单位分类: 块设备(数据块)和字符设备。
按资源分配角度分类: 独占设备,共享设备,虚拟设备。
按数据传输速率分类:低速设备,中速设备,高速设备。
- IO系统的层次结构与每层功能
- 设备管理采用的相关技术
- 通道技术
- DMA技术
- 缓存技术(硬件缓冲/软件缓冲)
- Spooling技术
- 磁盘调度
系统在每一时刻只允许一个进程启动磁盘进行IO操作,其余的进程只能等待。
磁盘调度目标: 采用适当的调度算法,使各进程对磁盘的平均访问时间最小。
即磁盘的平均寻道时间最小。
磁盘存取时间 = 寻道时间+等待时间
寻道时间: 指磁头移动到磁道所需的时间
等待时间: 等待读写的扇区转到磁头下方所用的时间
移臂调度是指在满足一个磁盘请求时,总是选取与当前移动臂前进方向上最近的那个请求,使移臂距离最短。
旋转调度是指在满足一个磁盘请求时,总是选取与当前读写头旋转方向上最近的那个请求,是旋转圈数最少。
且应先移臂调度,再旋转调度。
磁盘移臂调度算法:
- 先来先服务算法(FCFS)
- 最短寻道时间优先(Shortest Seek Time First,SSTF): 优先选择这样的进程,其要访问 的磁道与当前磁头所在的磁道距离最近。
- 扫描算法(SCAN):电梯调度算法。
- 单向扫描调度算法(CSCAN): 规定磁头只做单向移动,单向扫描。
磁盘旋转调度原则:
- 进程请求访问的是同一磁道上不同编号的扇区。
- 进程请求访问的是不同磁道上不同编号的扇区。
- 进程请求访问的是不同磁道上具有相同编号的扇区。
对于1和2这两种情况,旋转调度总是让首先到达读/写磁头位置下的扇区先进行传送操作,
对于3这种情况,旋转调度可以任选一个读/写磁头下的扇区进行传送操作。
即扇区编号不同,旋转调度总是让首先到达读/写磁头位置下的扇区先进行传送操作【所谓的首先到达读/写磁头位置下,即磁头号相同的】
扇区编号相同,则旋转调度可以任选一个读/写磁头下的扇区进行传送操作。
磁盘典型例题示例:
解第一问:
由于磁盘的旋转周期为33ms,故读取每个物理块的时间为33/11=3ms,与每个记录处理时间相同, 当磁盘读取第一个R0块放置于单缓冲区用了3ms,并处理这个记录用了3ms,但是此时磁头已到达R2 的开始处。
由于题目要求需要顺序处理每个记录,故还要等待磁头旋转到R1的开始处,即需要磁盘旋转一圈加上读取R0的时间才到达R1的开始处,即相当于处理R0这个物理块用的时间为:33+3=36ms,而R0到R9的处理方式都和R1相同; 对于特殊的R10,由于没有R11,故不需要去旋转一圈之类的动作,直接读取就好。
故处理这11个记录的最长时间为:(33+3)*10+(3+3) = 366ms.
解第2问:
如上图所示,优化各个记录的存储位置,没有时间浪费,即顺序处理即可:即(3+3)*11=66ms
嵌入式操作系统
数据库
三级模式-两级映射。
内模式-模式映射: 保证数据的物理独立性。
外模式-模式映射: 保证数据的逻辑独立性。
数据库设计过程
E-R模型。
注:
-
补充题目E-R图时不只要补齐题目要求的联系,根据常识可能存在的联系也要补充。
-
填写关系模式的属性时,不一定是直接照抄题目所给属性,有时根据意义需要进行替换,
如: 所属厂商–>替换成厂商ID。
局部E-R图集成为全局E-R图, 可能产生的冲突及解决办法:
- 属性冲突: 包括属性域的冲突和属性取值单位的冲突
- 命名冲突: 包括同名异义和异名同义
- 结构冲突: 常见为一个事物一方面作为属性,一方面作为实体 ;或者 同一实体在不同局部E-R图中属性的个数或排列不同。
扩充的E-R模型
1.弱实体:这种实体对另一些实体有很强的依赖关系,即一个实体的存在必须以另一个实体为前提。
弱实体要用双边框矩形进行表示。
弱实体和依赖实体间的联系要用双边框菱形表示。 弱实体和依赖实体间的关系必定是多对一的联系。
2.特殊化: 一个实体集可以按照某些特征区分为几个子实体。(普遍->特殊)
例:学生实体集可以分为研究生,本科生等子集。
2.1: 设有实体集E,如果S是E的某些真子集的集合,则称S是E的一个特殊化,
E是S1,S2,…Sn的超类,S1,S2,…Sn称为E的子类。
子类继承超类的所有属性和联系,但是,子类还有自己特殊的属性和联系。
2.2: 全/部分特殊化: 如果Si的并集等于E,则称S是E的全特殊化,否则是部分特殊化。
2.3: 不相交/重叠特殊化: 如果Si之间不存在交集,则是不相交特殊化,否则是重叠特殊化。
3.普遍化: 将具有共同特征的实体集概况成一个更普遍的实体集的过程。
例: 将研究生,本科生概况为学生。
扩充的E-R图相关图示:
-
弱实体的图表示: 用双线矩形框表示。
-
双竖边矩形框表示子类。
-
超类-子类关系模型使用特殊化圆圈和连线的一般方式来表示,
超类到圆圈有一条连线.当连线为双线表示全特殊化, 连线为单线表示部分特殊化。
圆圈中的o表示重叠特殊化,圆圈中的d表示不相交特殊化
有符号"U"的线表示特殊化。
…
由于笔记内容过多,不便于完全展示!!
感兴趣的朋友欢迎关注个人微信公众号,回复 “软设” 获取我的完整版MarkDown文件!!