Computer Theory

指令集

指令集: 一台机器能够理解的所有指令的集合,如ADD, MOV等 各平台有自己的指令集。指令集的不同会影响系统软件的兼容性。 指令 = 操作码OP + 数据地址码A 操作码实际上也是用0,1编码的,因为机器语言只认0,1 汇编语言是机器语言的可读版,比如,它可能用ADD来代表001

指令周期

指令周期(Instruction Cycle): 取出一条指令并执行的时间。一个指令周期由若干个 CPU周期组成(至少两个,一个用于取指,一个用于执行) CPU周期:  由若干个 时钟周期(Clock Cycle)组成 时钟频率(Clock Rate):  时钟周期的倒数 . 时钟频率就是 主频

抢占式 V.S. 非抢占式

在抢占式多任务系统中(preemptive multitasking)中,调度程序可以强行挂起一个进程,让别的进程获得CPU. 在非抢占式多任务系统中(cooperative multitasking)中,除非进程自己主动停止运行,否则它会一直执行。

名词解释: 字符设备 V.S. 块设备

字符设备不能随机访问数据,而只能以流的方式顺序访问。用键盘打"abc"时,键盘驱动程序必须顺序地读入a, b, c.  键盘就是字符设备 。 块设备可以随机访问数据。 硬盘就是个例子,它可以移动磁头到任何位置来读取数据。

进程同步相关术语解释

Race Condition: A situation where 1. several processes access and manipulate the same data concurrently 2.the outcome of the execution depends on the particular order in which the access takes place Critical Section: a segment of code that accesses shared resource(s) – code, not resource(s) itself If process p1 is executing in its critical section, then …

进程同步相关术语解释 Read More »

如何避免spinlock

如果Semaphore这样实现,就可能导致spinlock:     acquire(){ while(value <= 0) ; //no-op value–; } release(){ value++; } 当进程等待时,cpu会空转,也就是说进程会spin(自旋),导致CPU浪费。     所以应该改空转为阻塞,把cpu让给操作系统的scheduler. 恐龙书上介绍的实现为:     acquire(){ value–; if(value < 0){ add this process to list; block(); } } release(){ value++; if(value <= 0){ remove a process P from list wakeup(P); } }    

主存的性能指标

主存(即内存条)的几个性能指标:    1.存取时间:   执行一次读写命令的时间    2.存取周期:   连续两次读操作所需的最小间隔    3.存储器带宽: 单位时间能够存取的字节数         

中断机制

中断机制的步骤(以读取数据为例):     1. CPU向外设发出读取指令,然后继续执行主程序     2. 外设准备好后,向CPU提出中断请求     3. CPU暂停主程序并保留现场,然后调用相应的中断服务子程序(存储在操作系统中),执行I/O读取数据     4. 数据读入完毕后,回到主程序并恢复现场 说明:     1.CPU响应中断时可能还会关闭中断,表示暂不响应别的中断     2.有个术语叫“中断向量”,实际上就是中断号及其中断服务程序入口的地址。 中断号由CPU预先规定,操作系统在启动时会把相应中断服务程序安装到中断向量中,跟中断号对应起来。     3.中断不仅用于外设与系统的交互,也可以用于各种异常,比如被零除、越界访问内存等紧急事件。有的系统还用中断来实现虚拟内存分页(page fault),系统调用(软中断)等

计算机总线

总线: 数据传送的公共通路。 CPU和主存之间的数据传输并没有用什么专门的一对一通道,而是用了总线。 跟以太网的广播式数据传送类似,CPU把数据丢到总线上,但只有主存会收到。 一台计算机中按不同的速度要求设置了多条总线: 1. CPU内部总线 2. 系统总线 3. I/O总线 总线的关键性能测标是“ 总线带宽”,即每秒可传输的字节数。它跟总线的位数和总线周期有关。