计算机原理
CPU
CPU:每秒能处理的指令数。
CPU是寄存器集合体:累加、标志、程序、基址、变址、通用、指令、栈寄存器。
程序计数器:用于存储下一条指令所在的单元。(控制着程序的流程)
标志寄存器:第一字节位正数为1,第二字节0为1,第三字节负为1。
实际地址 = 基址地址 + 变址寄存器的值
CPU由:控制单元和算数逻辑单元组成。
控制单元:从内存中提取指令并解码执行。
算数逻辑单元(ALU):处理算数和逻辑运算。
功能上划分:CPU从功能上内部划分为:寄存器、控制器、运算器和时钟。
寄存器:用来暂存指令、数据和地址。一个CPU内部会有20-100个寄存器。
控制器:把内存上的指令、数据读入寄存器,根据指令结果控制计算器。
运算器:运算从内存中读入寄存器的数据。
时钟:发出CPU开始计时的时钟信号。
解析步骤
- 提取指令
- 解码
- 执行
RAM
RAM是与CPU直接交换数据的内部存储器。
int a;
a = 1+2;
- 将代码编译成二进制文件
- 运行时生成副本
- CPU解释执行内容
内存
内存是与CPU进行沟通的桥梁,通过控制芯片与CPU相连。所有程序都在内存中运行,存放CPU中的运算数据,以及设备交换数据。内存通过电流存储。
内存的物理结果:
- 随机存储器(RAM):读写数据,关机时数据会消失。
- 只读存储器(ROM):读取数据,停电数据不会消失。
- 高速缓存(Cache):CPU向内存写入数据时,也会被写入高速缓存中,读取时先从高速缓存中读取。
节约内存
通过DLL文件实现函数共有,DLL文件是一种动态链接的函数库文件。
程序再运行时可以动态夹在library。例(应用A和应用B都用到MyFun()这个函数,所以将这个函数设为DLL文件)
磁盘
磁盘通过磁记录技术实现存储。磁盘中的存储程序必须夹在到内存中才能运行,磁盘缓存大大降低访速度。
磁盘的物理结构指磁盘存储数据的形式分为:可变长方式和扇区方式,前者将物理结构划分成长度可变的空间,后者将磁盘结构划分为固定长度的空间。512字节(1簇= 1扇区),1KB(1簇 = 2 扇区)。
冯诺依曼
冯诺依曼计算机CPU分为:
- 取指令:将内存中的指令读取到CPU寄存器的过程,程序寄存器用于存储下一条指令所在地址。
- 指令编译:取指令完成后,进入指令编译阶段,按顺序执行预定的指令格式,机械能拆分和解耦。
- 执行指令:完成指令所规定的各种操作,具体实现指令功能。
- 访存数据:根据地址码,得到操作数在主存中的地址,并从内存中读取该操作数用于计算。
- 结果写回:数据写到CPU的内部寄存器中,以便被后续的指令快速的存取。
栈和队列
栈(Stack)
stack:采用后入先出的方式对内存进行操作,push放入,pop取出。
队列(queue)
queue:采用先入先出,EnQueue入列,DeQueue出列。
计算机
计算机内部是由IC电子元件组成,其中CPU和内存也是电子元件中的一种。
IC原件所以的引脚只有:0V和5V电压,所以只能用0和1(也就是二进制)进行表示。
二进制
二进制的位数一般为8的倍数,8位能涵盖所有的字符编码。
字节是最近本的单位,位是最小的单元。
数字小于存储数据的字节数,高位用0补充,(左侧高位,右侧地位)。
向左位移 << 相当于数值扩大(2的倍数),向右位移,相当于数值缩小。
二进制获取负数:将二进制的各数位数值取反,再结果+1即可。
文件存储
文件存储:将数据存储再磁盘等存储媒介的一种形式(存储单位为字节)。
文件就是字节数据的集合。
操作系统
监控系统是操作系统的原型。
三大操作系统:windows、Linux和unix操作系统,计算机硬件和应用之间的一层软件。
Windows
windows操作系统:就是无数个DLL文件的集合体。通过调用 stdcall减少程序大小,stdcall文件是标准调用缩写,Windows提供的DLL文件都是通过stdcall调用方式来实现的。
C语言和JAVA最大的区别在于,需要手动释放内存空间。
windows操作系统特征:
- 通过API函数继承来提供系统调用。
- 采用图形化界面。
- 提供多任务功能。
- 提供网络功能和数据库功能。
- 提供即插即用设备驱动的自设定。
运行环境
运行环境=操作i系统+硬件。
显卡:承担图形的输出任务,也称为图形处理器GPU。
内存:指应用程序再运行时能够动态分析指令的这部分存储空间。
存储空间:安装应用程序所占用的空间大小。
机器语言的程序成为本地代码(native code),文本文件再任何环境下都能显示和编辑。这种我们称之为源码,通过对源码进行编译,就可以得到本地代码。
computer -》 C语言源代码 -》 本机代码 -》 CPU解释运行
应用程序向系统传递指令的途径称为API。
FTP(file transfer protocol)是连接到互联网上的计算机之间的传送文件的协议。
JAVA代码预先的环境称为JAVA JVM,JVM将JAVA字节码转换为本地代码运行着。
JAVA、C语言和汇编语言的关系,一对多。
汇编语言:直接面向处理器(processor)的程序语言,操作的对象是寄存器或存储器,而不是数据,面向机器是最底层的计算机语言。
多任务
多任务指的就是同时能够运行多个应用程序的功能,通过时钟分割实现多任务功能。
时钟分割:短时间内间隔,多个程序切换运行的方式,底层是CPU时间切片。
网络功能和数据库功能被统称为中间件而不是应用。
操作系统和中间件组合在一起称为系统软件。
源代码转换成本地代码的过程称为汇编。负责这项工作的程序称为编译器。
segment和ends围起来的部分称为伪指令。段定义(segment)用于区分范围区域的意思。汇编语言的语法:操作码+操作数。
程序放到存储器中,指针指向该地址,然后取指令、解释、执行。
局部变量临时保存在寄存器和栈中。
多线程问题:相同于两者都是读取了最开始的值,前者还未写入就被读取。