#1 - 2022-9-30 20:53
Xenophilia (Either you run the day or the day runs you)
闲来无事,分享一下今天读书的内容。从第八章操作系统支持开始写,因为前面的概论、功能和互连、cache、内存、外存、IO已经看完了。
#2 - 2022-9-30 20:54
(Either you run the day or the day runs you)
8.2调度
分为长期、中期、短期、IO调度。长期调度判断接下来的进程,短期调度判断接下来的作业。为实现这种机制,操作系统维护长期、短期、IO队列,里面是等待资源的进程。
8.3存储器管理
为防止内存中所有进程等待IO,处理器闲置,处理器会把其中一个进程调回磁盘,处理新进程,称为交换。
主存的变长分区优于固定长度分区,但仍会积累碎片,必须使用紧缩,把所有空闲块集中。
分页则是把存储器和进程都划分成小块,并且不需要连续的存储空间(类似链表),系统保存一个记录每块地址的页表。
进一步改进为请求分页,只有需要的分页才调到主存(实存储器),其余放在磁盘(虚拟存储器)。因此一个进程可以比主存更大。
对于体积很大的页表,它本身也得放在虚拟存储器里。只能在主存放一个页目录,指向一个个页表(二级页表)。
快存TLB是指一个特殊的高速缓存,专门放页表项。

另一种方法是分段。不同于分页,分段通常对程序员可见,可独立修改、保护、共享每段程序。
一些系统同时支持分页和分段。
#3 - 2022-10-1 19:27
(Either you run the day or the day runs you)
第九章 计算机算数
9.1ALU
算数逻辑单元ALU是计算机的核心,基于简单的数字逻辑器件,数据和结果放在寄存器。
9.2整数表示
计算机使用二进制表示数字。对于有符号数(带正负号),使用补码表示法。第一位是符号位,增加位长需在前面填充符号位的值。
9.3整数算数
补码取负值的方式为每位取反(0与1互换),在最后一位加一。加法与二进制无符号数一样,减法为取负再相加。实现加减法的硬件有加法器、求补器、寄存器,与一些控制信号。
二进制无符号数的乘法类似手算,从后往前,进行相加及移位。但这种方法不适用于补码,补码要把两个数变成正数相乘,再把符号赋给结果。布斯算法属于这种方法,每次判断两个数,使用加减法和保留符号的算数位移。
除法也类似手算,用被除数从左到右减去除数,得出商和余数。同样先转换成正数,再给结果设置符号。
#4 - 2022-10-3 19:57
(Either you run the day or the day runs you)
9.4浮点表示
表示小数的方式是科学计数法,即符号和有效值乘2的幂。典型的32位浮点格式使用移码表示法,需加一个偏移量。规格化后,因为有效值的小数点前总是1,只需存储后面的部分。
接近0和接近无穷的数无法被表示,因此可能发生正负数的上溢和下溢。在固定长度内,范围和精度呈反比。多数浮点数只是想表示数值的一个近似,因此计算不严格精确,需要舍入。
IEEE 754标准定义了32位单精度和64位双精度格式,以及他们的扩展格式。
9.5浮点数算数
加减法需要先对齐有效值(使两个数指数相同)再相加,一般移动较小的数,超过表示范围会变成0(丢失),最后规格化。乘除法是分别对有效值乘除和对指数加减,再规格化。
算数逻辑单元的寄存器有保护位,一定程度上可防止溢出。舍入的方法有就近舍入、朝正或负无穷舍入、朝0舍入。
#5 - 2022-10-6 16:18
(Either you run the day or the day runs you)
第十章 指令集
10.1机器指令特征
CPU指定的指令称为机器指令,其要素有:操作码、源操作数引用、输入的数据、结果操作数引用、下一条指令引用。
操作数可能位于主存或虚存、处理器寄存器、指令中、I/O设备。
表示指令的方式是机器指令符号表示法,操作码缩写成助记符,如ADD加、MUL乘、LOAD载入。
指令可以分类为数据处理(算数和逻辑)、数据存储、数据传送(I/O)、控制(测试和分支)。
单地址指令只有一个操作数,只需一个累加器。双地址指令有两个源操作数,结果保存在其中一个里。三地址指令比双地址多一个单独存放结果的地址。下一个指令的地址一般通过程序计数器得到。
指令集设计的出发点包括:操作指令表、数据类型、指令格式、寄存器、寻址。
#6 - 2022-10-13 15:40
(Either you run the day or the day runs you)
10.2 操作数类型
数据通常分为:地址、数值、字符、逻辑数据。
地址可以看做无符号整数。
数值包括二进制定点数、二进制浮点数和十进制数。十进制数的表示法一般是压缩的或程打包的十进制数,即用每四个二进制位表示一个十进制数字,减少了进制转换的开销。
字符需要被编码成二进制序列,最广泛的编码是国际参考字母表IRA,在美国称为ASCII码。
逻辑数据是可以操纵每个二进制位的,而不是把很多位当做一个数据单元看待的数据。
注意,数据单元的类型由上面的操作决定,同一个数据可以有不同的类型。

10.4 操作类型
典型的操作包括:数据传送、算数、逻辑、转换、I/O、系统控制、控制转移。
数据传送指令必须指明:源和目标操作数的位置、传送数据的长度、操作数寻址方式。
多数机器提供了加、减、乘、除的基本算数指令,还可能有单操作数指令,如取绝对值、取负、加1、减1。
多数机器也提供对存储单元中个别位的操作,称为位操纵,基础是布尔运算。
另外也常提供移位和旋转功能。逻辑移位是把各位左移或右移,移出的位丢失,空出的位补上0。算数移位不移符号位,算数右移在左边补符号位,算数左移保留符号位,右边补0。旋转保留所有位,只是移动位置,类似一个环。
转换指令可以改变数据的格式,比如转换进制和编码。
系统控制指令通常是特权指令,一般保留给操作系统使用。
控制转移指令可以改变指令执行顺序,包含分支、跳步、过程调用。
#7 - 2022-11-3 14:20
(Either you run the day or the day runs you)
第11章 指令集:寻址方式和指令格式
11.1寻址方式
立即寻址:把操作数直接写在指令中,不要求另外的存储器访问,但数的大小受限于地址字段长度。
直接寻址:把操作数有效地址写在地址字段里,地址空间有限。
间接寻址:把一个存储器字地址写在地址字段,访问这个地址得到操作数地址。地址空间较大但需访问两次存储器。
寄存器寻址:类似直接寻址,但操作数存在寄存器,而不是主存。速度快但地址空间有限。
寄存器间接寻址:类似间接寻址,通过寄存器得到有效地址,因此少一次存储器访问。
偏移寻址:要求有两个地址字段,其中一个可以是隐含的,指向寄存器,寄存器的内容加上另一个地址字段的值得到有效地址。常用的有:相对寻址、基址寄存器寻址和变址。
栈寻址:栈是一种后进先出的线性序列,有一个栈指针保存在寄存器,它的值是栈顶地址。栈寻址是一种隐含寻址形式,实际上也是一种寄存器间接寻址方式。
#8 - 2022-11-3 14:30
好评,学习一个(bgm47)
#8-1 - 2022-11-3 16:15
Xenophilia
好,有动力继续读了
#9 - 2022-11-3 15:14
上学期刚学完,最后还是不会编处理器(bgm10)
#9-1 - 2022-11-3 16:14
Xenophilia
确实还挺复杂的