知识回顾
计算机的发展历史.
计算机的层级结构分为硬件+OS+应用软件,三者的关联主要是就是一个应用程序从打开到关闭这个阶段的调用过程.
现代计算机的体系是冯诺依曼体系,以处理器为核心,程序也当做数据处理等特点.
从冯诺依曼体系结构出发,逐步了解CPU,存储器,IO
从发展的角度看CPU,存储器,IO.根据并发操作的特点,CPU由时间片切分工作,从而有CPU的结构设计从单一的到流水.存储器主要掌握不同类型的存储器,不同作用的存储器.经由速度限制问题和多次访问等学习Cache等概念.
1 语言要保证硬件能够真正的执行
懂得硬件的流程是深入学习必经之路,本次的笔记主要是计算机组成原理的汇总
2 计算机系统层次
3 现代计算机的结构
冯诺依曼计算机结构
特点:
1.计算机处理的数据和指令一律用二进制数表示
2.顺序执行程序
计算机运行过程中,把要执行的程序和处理的数据首先存入主存储器(内存),计算机执行程序时,将自动地并按顺序从主存储器中取出指令一条一条地执行,这一概念称作顺序执行程序。
3.计算机硬件由运算器、控制器、存储器、输入设备和输出设备五大部分组成。
4 机器字长
CPU一次能处理的数据位数. 常见的32位/64位.
常常与寄存器的位数有关.
可以向下兼容.
5 系统总线
分散链接:计算机五大部件单独连线
总线链接:各个部件连接到一组公共的信息传输线上
总线按功能和规范可分为五大类型:
数据总线(Data Bus):在CPU与RAM之间来回传送需要处理或是需要储存的数据。
地址总线(Address Bus):用来指定在RAM(Random Access Memory)之中储存的数据的地址。
控制总线(Control Bus):将微处理器控制单元(Control Unit)的信号,传送到周边设备,一般常见的为 USB Bus和1394 Bus。
扩展总线(Expansion Bus):可连接扩展槽和电脑。
局部总线(Local Bus):取代更高速数据传输的扩展总线。
PCI总线:个人电脑中使用最为广泛的接口
6 存储器
6.1 存储器的层次结构
6.2 主存
字扩展:增加存储字长
位扩展:增加存储器字的数量
字位扩展:增加存储字,存储字长
6.3 Cache
6.4 Cache的改进
Cache的主要改进有两个方向:一是增加Cache的级数,二是将统一的Cache变成分立的Cache
一般来说,一级缓存由于集成度较高,都放在了CPU内部.这叫片内缓存(片载缓存).提高了外部总线的利用率.
二级缓存,又叫片外缓存.Intel和AMD有两种不同的结构.
6.5 寄存器
寄存器分为:通用寄存器,程序计数器,堆栈指针寄存器,程序状态字寄存器
通用寄存器:用于传送和暂存数据,也可参与算术逻辑运算,并保存运算结果.
程序计数器:用于存放下一条指令所在单元的地址的地方.当执行一条指令时,首先需要根据PC中存放的指令地址,将指令由内存取到指令寄存器中,此过程称为“取指令”。与此同时,PC中的地址或自动加1或由转移指针给出下一条指令的地址。此后经过分析指令,执行指令。完成第一条指令的执行,而后根据PC取出第二条指令的地址,如此循环,执行每一条指令。
堆栈指针寄存器:SP寄存器为堆栈指针,SP始终指向栈顶。
程序状态字寄存器(PSW):包含条码位(由比较指令设置)、CPU优先级、模式(用户态或内核态),以及各种其他控制位。
6.6 CMOS
CMOS易丢失,因而不能断电.
BIOS中有COMS的应用.此时需要对该CMOS配备电池.主要是记录本地时间,保存配置参数(启动磁盘等)
6.7 虚拟内存
内存中某块不要了,放到硬盘中,然后要取回来的时候需要原地址记录,这个就是MMU
MMU:内存管理单元,位于CPU当中.用来管理虚拟存储器、物理存储器的控制线路,同时也负责虚拟地址映射为物理地址,以及提供硬件机制的内存访问授权,多用户多进程操作系统。
上下文切换:上下文切换(Context Switch),也称为PCB,性质为环境切换。
6.8 磁盘
在LINUX中,扇区(512B) block块(8*512B)
平均寻道时间:机械臂移动
平均延迟时间:光盘转动
7 CPU
7.1 CPU
CPU主要完成算数运算和逻辑运算.
算数运算主要知识有:符号数,无符号数,浮点数,加法,减法,乘法,除法
逻辑运算主要包括:正逻辑和负逻辑
7.2 处理器设计演变
主要分为三个阶段
阶段一:串行执行
取值、解码、执行
阶段二:指令流水
阶段三:超变量CPU
8 进程与线程
进程:资源单位
线程:执行单位(CPU) 共享进程资源
9 系统调用
打开应用软件 发起系统调用 读取存储介质内容
系统调用:是应用程序和系统之间的接口.通过系统调用,用户程序与系统联系起来.
10 启动计算机的过程
1.加电
2.BIOS开始运行,检测硬件:cpu、内存、硬盘等
3.BIOS读取CMOS存储器中的参数,选择启动设备
4.从启动设备上读取第一个扇区的内容(MBR主引导记录512字节,前446为引导信息,后64为分区信息,最后两个为标志位)
5.根据分区信息读入bootloader启动装载模块,启动操作系统
6.然后操作系统询问BIOS,以获得配置信息。对于每种设备,系统会检查其设备驱动程序是否存在,如果没有,系统则会要求用户按照设备驱动程序。一旦有了全部的设备驱动程序,操作系统就将它们调入内核。然后初始有关的表格(如进程表),穿件需要的进程,并在每个终端上启动登录程序或GUI
bootloader:在操作系统内核运行之前运行。可以初始化硬件设备、建立内存空间映射图,从而将系统的软硬件环境带到一个合适状态,以便为最终调用操作系统内核准备好正确的环境。
11 事件驱动
所谓事件驱动,简单地说就是你点什么按钮(即产生什么事件),电脑执行什么操作(即调用什么函数).当然事件不仅限于用户的操作. 事件驱动的核心自然是事件。
从事件角度说,事件驱动程序的基本结构是由一个事件收集器、一个事件发送器和一个事件处理器组成。
事件收集器专门负责收集所有事件,包括来自用户的(如鼠标、键盘事件等)、来自硬件的(如时钟事件等)和来自软件的(如操作系统、应用程序本身等)。
事件发送器负责将收集器收集到的事件分发到目标对象中。
事件处理器做具体的事件响应工作,它往往要到实现阶段才完全确定,因而需要运用虚函数机制(函数名往往取为类似于HandleMsg的一个名字)。
对于框架的使用者来说,他们唯一能够看到的是事件处理器。这也是他们所关心的内容。
视图(即我们通常所说的“窗口”)是“事件驱动”应用程序的另一个要元。它是我们所说的事件发送器的目标对象。视图接受事件并能够对其进行处理。当我们将事件发送到具体的视图时,实际上我们完成了一个根本性的变化:从传统的流线型程序结构到事件触发方式的转变。这样应用程序具备相当的柔性,可以应付种种离散的、随机的事件。
由于Windows本身是基于“事件驱动”模型的。因而在Windows操作系统下实现应用程序框架有相当的便利。在事件驱动程序的基本单元中,事件收集器已经由Windows系统完成;事件发送器也已经由Windows完成了部分内容。之所以是部分而非完全是因为Windows是用C语言实现的,而不是C++。由于没有对象,Windows将事件发送到所谓的“窗口函数”中(尽管不是发送到具体的对象,但应该说这是面向对象方式实现的一个变体)。要感谢Windows做了这件事。确定事件的目标所要做的工作的复杂可能要超出我们的想象。
12 巴贝奇
数学家,主要成就是发明差分机,制作第二台差分机大约有25000个零件,主要零件的误差不得超过每英寸千分之一,即使用现在的加工设备和技术,要想造出这种高精度的机械也绝非易事。他们留给了计算机界后辈们一份极其珍贵的精神遗产,包括30种不同的设计方案,近2100张组装图和50000张零件图,更包括那种在逆境中自强不息,为追求理想奋不顾身的拼搏!
13 MBR
MBR,主引导记录,由磁盘操作系统(DOS)在对硬盘进行初始化时产生的.
负责磁盘操作系统(DOS)对磁盘进行读写时分区合法性的判别、分区引导信息的定位.
MBR由三个部分组成(共占用512个字节):
1.主引导程序即主引导记录(MBR)(占446个字节)
可在FDISK程序中找到,它用于硬盘启动时将系统控制转给用户指定的并在分区表中登记了的某个操作系统。
2.磁盘分区表项(DPT,Disk Partition Table)
负责说明磁盘上的分区情况,其内容由磁盘介质及用户在使用FDISK定义分区时决定。
3.结束标志(占2个字节)
14 TRAP指令
陷阱(trap)指令一般是由于意外事故的中断才会使用.例如电源电压不稳定,存储器教研出差错,IO设备出现了故障,用户使用未定义的命令,除数出现了,运算结果溢出等.
这种意外的发生会导致计算机不能正常运行,所以先发出trap信号,暂停当前程序的执行.
15 BIOS芯片
BIOS芯片有BIOS.完成以下功能:
1.冷启动,热启动
2.上电自检
3.基本IO驱动程序
4.系统硬件配置分析
5.引动DOS启动或引导ROM Basic解释程序
6.BIOS中断管理