参考pdf 《computer basic》
CPU
英文名: Central Processing Unit
sysctl machdep.cpu.brand_string
可查看CPU型号执行过程:
(1)提取:从RAM(Random Access Memory随机存取存储器/主存)取指令。RAM速度很快,通常作为临时存储介质。
(2)解码
(3)执行组成:控制单元和算术逻辑单元ALU
ALU:处理算数和逻辑运算
从功能来看,包括:控制器、运算器、时钟、寄存器 四部分内存
每个字节都有一个地址编号-
寄存器
其中:
程序计数器(Program Counter):用于存放下一条指令所在的单元的地址,所以它控制着程序的流程/
指令寄存器:存储正在被运行的指令,供CPU内部使用,程序员无法读写
栈寄存器:存储栈区域的起始位置
标志寄存器:保存某个分支判断的值/溢出检查、奇偶校验
补充:程序的比较运算,其实是在CPU内部做减法运算
通过地址和索引实现数组
需要用到基址寄存器和变址寄存器
- CPU指令执行过程
五个阶段(冯诺伊曼):取指令、指令译码、执行指令、访问取数、结果写回
内存
分为三种:
随机存储器RAM,停电信息会丢失
只读存储器ROM,停电信息不会丢失
高速缓存Cache
内存IC:
RD读取,WR写数据
内存中数据存储
数据还有数据类型,需要占用特定大小的内存
数组是内存的实现队列有循环队列,有环形队列
二进制
1字节 = 8bit
移位运算:左移代表*2。表示负数:首位符号为1。在表示负数时要用补数来表示。(补数就是用正数来表示的负数)
求补数的方法:原始数值取反,+1右移
逻辑右移:最高位补0
算数右移:填充原来的符号值符号扩展
不管是正数还是负数,只需要用原来的符号位填充高位即可。
压缩算法
文件是以字节为单位来存储的
RLE算法(Run Length Encoding 行程长度编码)
存储的时候,一个英文是一个半角字符,用一个字节来存储。
把文件内容用数据 * 重复次数
来表示的方法,只有对连续的字符才会进行压缩哈夫曼算法
磁盘
与内存的区别:内存通过电流实现存储,磁盘通过磁记录技术 来实现的。所以断电之后,内存中的数据不能保留,但是磁盘中的可以。
以前程序的运行是通过改变计算机的布线来读写指令的
磁盘缓存
为了读取相同的磁盘内容时,可以提高速率。
磁盘缓存是内存的一部分。虚拟内存
本质:把磁盘的一部分作为假想内存来使用。它使得应用程序认为它拥有连续可用的内存,在需要运行时将虚拟内存与内存置换
。
为了解决程序过大造成内存空间耗尽的问题
在Windows中是PAGEFILE.SYS页面
置换分为:分页式(windows)和分段式
分页式:Windows中页的大小为4KB
虚拟内存使用的文件是页文件-
使程序大小更优化
DLL:动态链接库
_stdcall:标准调用。dll中函数的调用大多都是stdcall,C语言程序默认都不是_stdcall,而是C调用。因为函数传入参数(的个数)是可变的,导致无法清理栈空间。
C 与Java的区别是 C需要人为控制释放内存空间
默认函数的清除操作是在调用的一方
C语言中,函数的返回值是通过寄存器来传递的,而不是通过栈
_stdcall为反复调用方法,执行栈清理的开销比较小 -
磁盘的物理结构
划分为空间的方法:可变长方式 和 扇区方式(固定长度)。
扇区是读写的最小单位,Windows中扇区一般是512字节。
输入输出设备
本文件完结
参考《cxuan-os》
流水线
形式:由于CPU有单独的访问、解码、执行单元,CPU执行第N条指令,对N+1条指令解码,读取N+2条指令。
-
超标量(superscalar)CPU
执行单元同时执行,并且只要空闲,就去缓冲区中找是否有指令。
此种设计,应用程序通常是无序执行的。大多数硬件需要保证执行结果的正确性。
CPU/内存
磁盘
磁道
每个磁头可以读取一段环形区域,称为磁道(track)。
一个给定臂的位置上所有的磁道合并起来,称为柱面(cylinder)。固态硬盘不是磁盘,数据存储在存储器(闪存)中。
虚拟内存
需要快速映像内存地址
,把程序生成的地址转换为RAM中的物理地址。由CPU中的存储器管理单元MMU
部件来完成。ATA
ATA 高级技术附件(AT attachment)
SATA 串行高级技术附件(Serial ATA)
慎用高级
这个词
I/O 设备
设备控制器
含有寄存器
所有设备寄存器的结合构成了I/O端口空间
。实现输入输出的三种方式
(1)忙等待
用户程序--->系统调用--->转为驱动程序的程序调用--->启动I/O、循环检查设备---> |||(输入完成)---> 数据送到指定地方并返回 ---> 控制权交给调用者
(2)中断
设备驱动程序启动设备---> 操作完成时发生中断
(3)使用特殊的硬件
直接存储器访问(DMA):控制内存和控制器之间的位流,无需CPU的干预。
[补充中断]:CPU决定中断:
保存当前状态:程序计数器和PSW
切换内核态
中断开始:
移除栈中的程序计数器和PSW,保存。
查询设备的状态{
...中断处理程序全部完成...
}
返回到先前用户尚未执行的第一条指令。
如果正在中断,又发生了一条中断,则其他中断需要等待。
总线
参考CS224 Computer Organization- Bilkent
https://www.youtube.com/results?search_query=principles+of+computer+organization
Chapter 1
处理器有:Intel / AMD
计算机组成:input, output, memory, datapath, control
datapath + control = CPU(processor)