软件设计1

1、数据的表示

以H结尾的数字表示该数是 16进制的,比如C7FFFH

1.1、进制的转换

1.1.1、将R进制转10进制

 

 

1.1.2、将10进制转换为R进制

10进制转换为r进制数时,采用除r取余方法,即将十进制整数不断除以r取余数,直到商为0,所得的余数按逆序排列

 

1.1.3、二进制转八进制和十六进制

二进制转八进制可以将该二进制的数字从右到左,每三个为一组,一组转换为一个八进制数即可。比如:10001110 转为八进制为:216

二进制转十六进制可以将二进制的数字从右到左,没四个为一组,一组转换为一个十六进制即可,大于10进制的数,A表示10、B表示11、C表示12,以此类推。例如:10001110 转为十六进制为:8E

 

1.2、原码、反码、补码

原码、反码、补码能表示的数据范围如下:n 表示的是有多少位,1个字节有8位。

比如1个字节,原码范围:-127~127;反码:-127~127;补码:-128~127。可以看到原码和反码表示的范围是一样的,而补码比他们多了一个数,这是因为原码和反码的 0 有两种形式:0000 0000、1000 0000,而补码的 0 都是:0000 0000。

 

1.2.1、原码

原码就是符号位加上真值的绝对值, 即用第一位表示符号, 其余位表示值. 比如如果是8位二进制:

[+1] = 0000 0001

[-1] = 1000 0001

第一位是符号位. 因为第一位是符号位, 所以8位二进制数的取值范围就是:

[1111 1111 , 0111 1111]

[-127 , 127]

 

1.2.2、反码

正数的反码和原码一样,负数的反码是在其原码的基础上, 符号位不变,其余各个位取反。

[+1] = [00000001] = [00000001]

[-1] = [10000001] = [11111110]

可见如果一个反码表示的是负数, 人脑无法直观的看出来它的数值. 通常要将其转换成原码再计算.

 

1.2.3、补码

正数的补码跟原码一样,负数的补码是在其原码的基础上, 符号位不变, 其余各位取反, 最后再+1. (即在反码的基础上+1)

[+1] = [00000001] = [00000001] = [00000001]

[-1] = [10000001] = [11111110] = [11111111]

对于负数, 补码表示方式也是人脑无法直观看出其数值的. 通常也需要转换成原码在计算其数值.

 

1.3、浮点数运算

浮点数其实就是数学中用科学计算法表示数字的方式,比如1000,可以表示为 1.0*103

下面当中,其中 1≤|M|<10

 

2、计算机结构

2.1、CPU结构

CPU由运算器和控制器组成

运算器:

   算术逻辑单元(ALU):负责对数据进行算术和逻辑运算,暂时存储计算结果等。
   累加寄存器(AC):当ALU执行算术或是逻辑运算的时候,为ALU提供一个工作区。
   数据缓冲寄存器(DR):对内存进行读写操作时,用来暂存数据的。作为CPU和内存,外围设备之间数据的中转站。是CPU和内存,外围设备之间在操作速度上的缓冲
   状态条件寄存器(PSW):存储运算过程中相关的标志,比如一些运算涉及到进位、溢出、中断等待,涉及到一些状态的信息。

控制器:

   程序计数器PC:具有寄存信息和记数两种功能,又称为指令计数器。用来存放下一条指令所在的单位的地址的地方。
   指令寄存器IR:当CPU执行一条指令时,先把它从内存储器取到指令缓存器中,再送入到指令寄存器中,然后经过指令译码器的译码,从而产生各种微操作。
   地址寄存器(AR):保存当前CPU所访问的内存单元的地址,由于CPU和内存在操作速度上的差异,所以需要使用AR保持地址信息,直到内存的读写操作完成。
   指令译码器(ID):指令译码器对指令的操作码和地址码进行解析,转换成相应的操作信号,控制各部件的工作,完成所需要的功能

 

2.2、各种不同的计算机体系结构分类

 

2.3、CISC和RISC指令系统的特点

CISC是计算机非常老旧时的指令系统,一台计算机可能就是专门为某个机构定制的,指令多且复杂。

RISC适应于大众使用,指令简化,追求高效率和简单

 

3、流水线

执行一条指令会分为:取指、分析、执行三个步骤:

 

由于取指、分析、执行三个步骤是由不同的部件完成的,所以第1 条执行分析时,此时取指部件可以空余出来执行第 2 条执行的取指步骤。

 

3.1、流水线的周期和计算指令执行时间

 例题:

上面题目中,流水线周期为 2ns,100条指令的执行时间为:(2+2+1)+(100-1)*2 = 203ns,或者是(3+100-1)*2 = 204ns。一般来说都是采用理论公式计算,但也可能会采用实践公式来算。

 

3.2、流水线的吞吐率

     ,流水线的最大吞吐率计算公式:

如上面例题,流水线的吞吐率为:100/203 ,最大吞吐率为:1/2

 

3.3、流水线的加速比

  

如上面例题,加速比为:(2+2+1)*100/203 

 

3.3、流水线的效率

上图中,流水线的效率为:((1+1+1+3)*4)/(15*4),也就是说,流水线的效率在空间图上可以看做是:工作占用时空区/总的时空区

 

4、计算机的层次化存储

 

4.1、cache

   有时候并不会把寄存器放在存储体系中,所以可以将 cache 认为是访问速度最快的层次,但如果有寄存器,实际上还是会选寄存器。

 

 电脑使用cache和主存储器时,平均周期的计算公式:

比如,对cache的访问命中率为 95%,cache的周期时间为 1ns,主存储器周期为 1000ns,那么此时系统的平均周期为:0.95*1 +(1-0.95)*1000 = 50.95ns

 

4.2、主存

主存可分为随机存取存储器和只读存储器。计算机系统的主存主要由DRAM构成,SRAM主要组成cache。

RAM和ROM的应用:系统的内存一般由RAM和ROM组成,像cache一般是用静态RAM的因为需要高速的缓存,需要读写速度快,而主存的话一般是用动态ram,便于存储对读写速度每那么的快,而ROM则是存放一些系统程序的存储器,有只读功能,不可写,比如开机的时候的BIOS。外存有很多种如闪存USB的硬盘,还有SSD的固态硬盘等。

 

4.3、主存 -- 编址

  表示这个芯片有 8 个地址单元,每个地址空间有 4 个 bit 位信息,一共可以存储 32 bit 位信息。注意,这么一个存储器称之为一个芯片,每一行称之为 1 个地址单元或者内存地址,每 1 格就是 1 个 bit。

 

例题:

地址由AC000H到C7FFFH,由C7FFFH 减去 AC000H 得到的是多少,然后 +1,就是多少个地址单元,因为 1 个地址单元能表示 1 个地址,有多少个地址就有多少个地址单元。C7FFFH 和 AC000H 都是 16进制的数,相减得到是 1C000H,实际上就是1*164+12*163,然后再除以 K 即 210 就可以得到第一个空的答案:112。

如果该内存地址按字(16bit)编址,意思是每个地址单元有 16 位。由 28 片芯片构成,每个芯片有 16k 个存储单元,那么每个存储单元的存储位为:(112K * 16)/(28*16K)= 4

 

 

4.4、磁盘结构与参数

先在磁道读取完数据,然后才能对数据进行处理。

例题:

  旋转周期为33ms,则旋转1个扇区需要3ms。磁头处于R0开始处,则读取R0需要3ms,但每个记录的处理也要3ms,处理完R0后磁头已经到了R2开始处,因为要顺序处理,所以需等到磁头重新旋转至R1开始处,需等待30ms,然后读取R1,处理R1,以此类推,计算后可以得到答案为 366ms。

  如果信息存储可以优化分布,那就可以像左图,处理完R0后,磁头刚好处于R1开始处,可以立即处理R1,不用等待。以此类推,计算后可得此时答案为 66ms。

 

 5、计算机总线

根据总线所处的位置不同,总线通常被分成三种类型,分别是:内部总线、系统总线(数据总线、地址总线、控制总线)、外部总线

数据总线:数据总线用于传递数据信息。

地址总线:地址总线用于传输地址的信息,如要访问外设的内存地址、某个外设的地址等。由于地址通常由CPU提供的,所以地址总线一般是单向传输的。

控制总线:顾名思义,控制总线用于传送控制信号。例如CPU向内存或输入输出接口电路发出的读写信号;又如,输入输出接口电路向CPU发送的用于同步工作的联络信号等。

 

6、串联系统和并联系统

串联系统模型:

可靠性:,即为各个子系统的可靠性相乘的值

    可靠性:  当所有系统都失效时,系统才失效。

 

7、CRC与海明校验码

7.1、码距

在整个编码系统中,所有的任意的两个码字之间,一个码字最少需要改变多少个位才能变成另一个码字,这个位数就是码距。

 

7.2、循环校验码CRC

循环校验码可以检错但不能纠错。

在信息传送时,会在其尾部加入校验信息,加入校验码后的数据与生成多项式进行模2相除,余数如果为0则认为没出错,否则认为传输过程中出错了。

 

7.3、海明校验码

海明校验码可以检错也可以纠错。

根据接收到的数据的信息位生成校验位,如果生成的校验位和得到的校验位不一致,则认为出错。两个校验位信息异或,得到是多少就认为是哪个位置出错。

 

7.4、奇偶校验

 

8、操作系统

          

 

 

8.1、进程的状态

 

 

8.2、PV操作

PV操作利用信号量机制,是一种有效的进程同步与互斥工具,可以实现资源的互斥使用。

先执行P(S1),S1为0,此时S<0不成立,所以继续执行,V(S2),S2为1,S2<=0不成立,所以继续执行生产者进程。执行P(S1),S1为-1,S1<0成立,此时阻塞生产者进程,放到进程队列,执行消费者进程。消费者执行P(S2)、V(S1),以此类推,当S<=0时,消费者进程又激活生产者进程。

V操作可以激活P操作,PV操作一般来说都是配对的,即P(S1)和V(S1)。判断一个操作是P还是V操作,可以看他是否依赖于其他进程,如果需要依赖其他进程才能执行,那他就是P操作。

例题:

收银员进程由付款进程激活,所以可以知道a1是一个V操作,b1是一个P操作。而购书者付款进程也需要等收费进程执行完毕后才能执行完毕,所以说可以知道a2是一个P操作,b2是一个V操作,而PV操作都是配对的,所以根据选项可以知道选AC

 

8.3、死锁

避免死锁可以通过:有序资源分配法和银行家算法,但有序资源分配法会导致资源利用率比较低。

 

 

9、存储管理

9.1、页式存储

页式存储管理就是把内存物理空间划分成大小相等的若干区域,一个区域称为一块.。把逻辑地址空间划分为大小相等的若干页,页大小与块大小相等。“页”是逻辑单位,”块”是物理单位。

页式存储器的逻辑地址由两部分组成:页号+页内地址(这里的+是直接拼接的,而不是加法)。逻辑地址是指由程序产生的与段相关的偏移地址部分。

在存储器里以字节为单位存储信息,为正确地存放或取得信息,每一个字节单元给以一个唯一的存储器地址,称为 物理地址,又叫实际地址或绝对地址。物理地址=块号X块长+页内地址

例题:

第一个空,已知逻辑地址求物理地址,逻辑地址由 页号和页内地址组成,页面大小为4K,也就是212,也就是说页内地址应该有12位,逻辑地址为十六进制的5A29H,每四个2进制位转化为1个16进制位,也就是说后面三位的 A29 就是页内地址,那 5 就是页号。查看页表可以知道,页号5对应着块号 6,而页内地址都是一样的,所以物理地址为 6A29H。

第二个空,淘汰的话应该要淘汰在内存中,并且此时未被访问的,所以应该是页号为 1 的。

 

例题:

程序分为6个页面,且系统中没有使用快表,意思是每次执行一个页面都需要查表,也就是每执行一个页面需要访问两次内存,所以一共需要访问 12 次内存。

缺页中断指的是读取执行程序时,该程序没有在内存中,此时就产生1次缺页中断。约定读取指令时只产生 1 次缺页中断,所以读取 swap 指令产生 1 次缺页中断,读取操作数 A 时,由于该计算机系统按 8 位编址,AB都是16位,所以读取都需要访问两次内存,产生两次缺页中断,所以一共是产生 5 次缺页中断。

 

10、编译过程

在对高级语言源程序进行编译或解释处理的过程中,需要不断收集、记录和使用源程序中一些相关符号的类型和特征等信息,并将其存入符号表中。

 

posted @ 2020-10-12 23:38  wenxuehai  阅读(277)  评论(0编辑  收藏  举报
//右下角添加目录