指记录本人不熟悉的知识点。(会不时更新,并将自己不熟练的部分置顶,不分大学科,只分小知识点)
在看到“光明”的同时,更要准备困难,更要有底线思维。
底线思维就是把事情推到最坏的局面,然后看能不能应对,如果能够应对,就可以大胆出牌了。
计算机组成原理
指令系统
指令字长、机器字长和存储字长
指令字长是指指令中包含二进制代码的位数;
机器字长是CPU一次能处理的数据长度,通常等于内部寄存器的位数;
存储字长是一个存储单元存储的二进制代码(存储字)的长度。
指令字长通常都是取存储字长的整数倍,如果指令字长等于存储字长的2倍,那么需要两次访存,那么取值周期就等于机器周期的2倍;如果指令字长等于存储字长,那么取值周期就等于机器周期。
指令字长取决于操作码的长度、操作数地址的长度和操作数地址的个数,与机器字长没有必然的联系。但为了设计方便,指令字长一般取字节或存储字长的整数倍。
指令字长一般取字节或存储字长的整数倍,而不一定都是和存储字长一样大。
寻址方式
相对寻址: 相对寻址的有效地址是将程序计数器PC的内容与指令字中的形式地址A相加想成。相对细致的有效地址为EA=(PC)+A。
变址寻址:指令指定一个CPU寄存器(称为变址寄存器)和一个形式地址,操作数地址是二者之和,需要先计算再访存。变址寻址的有效地址为EA=A+(IX)。
间接寻址:指令给出存放操作数地址的存储单元地址,先得到操作数地址所在的存储单元的地址,再得到操作数的地址,然后才能取操作数。
多道程序设计中,各个程序段可能要在内存中浮动,而相对寻址特别有利于程序浮动。
RISC和CISC
RISC比CISC寻址方式更少
RISC指令是使用较多的简单指令条数去实现复杂的指令功能,绝大部分的指令是在一个机器周期内完成的
RISC通用寄存器数量较多,可以提高指令的执行速度
RISC的指令长度固定
RISC以硬布线逻辑为主,不用或少用微程序控制,所有速度快。
程序控制类指令用于改变程序执行的顺序,并使程序具有测试、分析、判断和循环执行的能力。
指令的地址个数与指令的长度是否固定没有必然联系,即使是单地址指令也可能由于单地址的寻址方式不同而导致指令长度不同。
单地址指令中只能有一个地址码,在完成两个操作数的算术运算时,一个操作数由地址码指出,另一个操作数通常存放在累加寄存器(ACC)中,属于隐含寻址。
中央处理器
CPU控制器主要由3个部件组成:指令寄存器、程序计数器和操作控制器
状态条件寄存器通常属于运算器的部件,用以保存由算术指令和逻辑指令运行或测试的结果建立的各种条件码内容,如运算结果进位标志©、运算结果溢出标志(V),运算结果为零标志(Z)、运算结果为负标志(N)、中断标志(I)、方向标志(D)和单步标识等。
IR(Instruction register) 和 PC(Program counter)(需要重新整理)
指令寄存器(IR )用来保存当前正在执行的一条指令。
当执行一条指令时,先把它从内存取到数据寄存器(DR)中,然后再传送至IR。指令划分为操作码和地址码字段,由二进制数字组成。为了执行任何给定的指令,必须对操作码进行测试,以便识别所要求的操作。 指令译码器就是做这项工作的。指令寄存器中操作码字段的输出就是指令译码器的输入。操作码一经译码后,即可向操作控制器发出具体操作的特定信号。
程序计数器(PC),用于存放指令的地址。
为了保证程序(在操作系统中理解为进程)能够连续地执行下去,CPU必须具有某些手段来确定下一条指令的地址。当执行一条指令时,首先需要根据PC中存放的指令地址,将指令由内存取到指令寄存器中,此过程称,为“取指令”。与此同时,PC中的地址或自动加1或由转移指针给出下一条指令的地址。此后经过分析指令,执行指令。完成第一条指令的执行,而后根据PC取出第二条指令的地址,如此循环,执行每一条指令。
通用寄存器(GR,General register):通用寄存器可用于传送和暂存数据,也可参与算术逻辑运算,并保存运算结果。
除此之外,它们还各自具有一些特殊功能。通用寄存器的长度取决于机器字长,汇编语言程序员必须熟悉每个寄存器的一般用途和特殊用途,只有这样,才能在程序中做到正确、合理地使用它们。
程序状态字PSW(PSW,Program Status Word)包括的状态位有进位标志位(CF)、结果为零标志位(ZF)、符号标志位(SF)、溢出标志位(OF)、陷阱标志位(TF)、中断使能(中断屏蔽)标志位(IF)、虚拟中断标志位(VIF)、虚拟中断待决标志位(VIP)、I0特权级别(IOPL)。
状态寄存器又名条件码寄存器(SR,Status register),它是计算机系统的核心部件——运算器的一部分,状态寄存器用来存放两类信息:一类是体现当前指令执行结果的各种状态信息(条件码),如有无进位(CF位)、有无溢出(OF位)、结果正负(SF位)、结果是否为零(ZF位)、奇偶标志位(P位)等;另一类是存放控制信息(PSW:程序状态字寄存器),如允许中断(IF位)、跟踪标志(TF位)等。有些机器中将PSW称为标志寄存器FR(Flag Register)。
一台数字计算机基本上可以划分为两大部分:控制部件和执行部件。控制器就是控制部件,而运算器、存储器、外部设备相对控制器来说就是执行部件。控制部件与执行部件的一种联系就是通过控制线。控制部件通过控制线向执行部件发出各种控制命令,通常这种控制命令叫作微命令,而执行部件接受微命令后所执行的操作就叫微操作。控制部件与执行部件之间的另一种联系就是反馈信息。执行部件通过反馈线向控制部件反应操作情况,以便使得控制部件根据执行部件的状态来下达新的微命令,这也叫做“状态测试”。
CPU的功能包括指令控制、操作控制、时间控制、数据加工和中断处理,其中指令控制功能即控制计算机的运行总是处于取指令、分析指令和执行指令的循环之中,指令控制功能是由控制器来实现的。
指令译码器又称为操作码译码器,暂存在指令寄存器中的指令只有在其操作码经过译码之后才能识别出折时一条什么样的指令,并产生响应的控制信号提供给微操作信号发生器。
(微程序控制器比硬布线控制器的速度慢)(通常控制存储器采用ROM组成)(伪指令计数器决定的是微指令的执行顺序)
指令周期指从取指令、分析、取数到执行完成该指令所需的全部时间,即两条指令的间隔时间。
通过把一个指令周期划分为若干机器周期,一个机器周期中又含有若干个时钟周期。
微程序控制器比硬布线控制器速度慢, 通常控制存储器采用ROM组成。微指令计数器决定的是微指令的执行顺序。
同步控制采用统一的时钟信号。以最复杂指令的操作时间作为统一的时间间隔标准。这种控制方式设计简单,容易实现。
同步控制方式即固定时序控制方式,各项操作都由统一的时序信号控制,在每个机器周期中产生统一数目的节拍电位和工作脉冲。这种控制方式设计简单,容易实现,但是对于许多简单指令来说会由较多的空闲时间,造成大量的时间浪费,从而影响了指令的执行速度。
操作系统
广义指令就是系统调用命令,而命令解释器属于命令接口,shell是命令解释器,它也属于命令接口。系统中的缓存全部由操作系统管理,对用户是透明的,操作系统不提供管理系统缓存的系统调用。(透明的意思是客观存在,操作者看不见也控制不了的意思)
系统开机后,操作系统的程序会被再到内存中的系统区,这段区域是RAM。
单道批处理系统 系统对作业的出来是成批进行的,但内存中始终保持一道作业。自动性 顺序性 单道性
多道批处理系统运行多个程序同时进入内存并允许他们在CPU中交替地运行,共享软硬件资源,多道 宏观上并行 微观上串行。批处理的缺点是缺少交互性
分时操作系统,把处理器的运行时间,分成很短的时间片,按时间片轮转把处理器分配给各联机作业使用。同时性 交互性 独立性 及时性
系统调用发生在用户态,被调用程序在和心态下执行
外部中断是用户态到核心态的“门”,核心态完成中断过程
缺页产生后,用户态下发生缺页中断,然后进入核心态执行缺页中断服务程序。
访管指令仅在用户态使用,执行访管指令讲用户态转变为核心态。
操作系统执行程序时,必须从起始地址开始执行。
中断是操作系统必须提供的功能。
特权指令是指仅能由操作系统使用的指令
因操作系统不允许用户直接执行某些“危险性高”的指令,因此用户态运行这些指令的结果会转成操作系统核心态去运行,这个过程就是访管中断。
访管指令仅在用户态下使用,执行访管指令将用户态转变为核心态
中断系统和地址映射需要硬件支持。重置时钟等是由硬件直接完成的。进程调度由调度算法决定CPU使用权,由操作系统实现,无需硬件的支持。
中断是指来自CPU执行指令意外事件的发生,如设备发出的I/O结束中断,表示I/O完成,希望处理机能够向设备发出下一个I/O请求。
时钟中断,表示一个固定的时间片已到,让处理机处理计时、启动定时运行的任务等。这一类中断通常是与当前程序运行无关的事件,即他们与当前处理机运行的程序无关。
异常也称内中断、例外或陷入(trap),指源于CPU执行指令内部的事件,如程序的非法操作码、地址越界、算数溢出、虚存系统的缺页及专门的陷入指令等引起的事件。
时钟中断的主要工作是处理和时间有关的信息及决定是否执行调度程序。和时间有关的所有信息包括系统时间、进程的时间片、延时、使用CPU的事件、各种定时器。
执行系统调用的过程如下:正在运行的进程先传递系统调用参数,然后由陷入(trap)指令负责将用户态转换为内核态,并将返回地址压入堆栈以备后用,接下来CPU执行响应的内核态服务程序,最好返回用户态。
外部中断处理过程,PC值由中断隐指令自动保存,而通用寄存器内容由操作系统保存。
缺页异常导致中断
对进程的管理和控制是通过执行各种原语来实现的。
在无线程的系统中,进程是资源调度和并发执行的基本单位。在引入线程的系统中,进程退化为资源分配的基本单位,而线程代替了进程被操作系统调度,因而线程可以并发执行。
在多对一的线程模型中,用户级线程的“多”对操作系统透明,即操作系统并不知道用户有多少线程,因此该进程的一个线程被阻塞后,该进程被阻塞,进程的其他线程也都被阻塞。
只有从运行态到阻塞态的转换是由进程自身决定的。从运行态到就绪态的转换是由于进程的时间片用完,“主动”调用程序转向就绪态。虽然从就绪态到运行态的转换同样是由调度程序决定的,但进程是“被动的”。从阻塞态到就绪态是由协作进程决定的。
时间局部性和空间局部性
时间局部性是指一旦一条指令执行了,则在不久的将来它可能再被执行。
空间局部性是指一个存储单元被访问了,那么它附近的存储单元也可能很快被访问。
计算机网络
DSA
数据结构三要素
1.逻辑结构 2. 存储结构 3. 数据的运算(施加在数据上的运算包括运算的定义和实现。运算的定义是针对逻辑结构的,指出运算的功能;运算的实现是针对存储结构的,指出运算的具体操作步骤)