一、冯诺依曼体系结构
数学家冯·诺依曼提出了计算机制造的三个基本原则,即采用二进制逻辑、程序存储执行以及计算机由五个部分组成(运算器、控制器、存储器、输入设备、输出设备),这套理论被称为冯·诺依曼体系结构。
二、CPU的核心和频率
在现代的大部分CPU一个核心包括两个逻辑处理器,而一个逻辑处理器则可以运行一个程序。对于程序员来说,可以把代码中的任务拆成多个,使用不同的核心分别执行,也可以叫做“并发编辑”。
CPU的运算速度可以用频率来表示,基准速率可以浅显的理解为一秒内最低的运算次数。
三、CPU指令执行的流程
在双击.exe运行程序之后,系统把该程序加载到内存中,CPU中的一个特殊寄存器(程序计数器)会保存之后决定从哪个内存位置开始执行指令,一般都会从0位置开始经历三个步骤:读指令、解析指令、执行指令。
(1)读指令:程序计算器会从0位置开始读取,每次读取之后++。
(2)解析指令:程序计数器从内存中调取的指令格式为,前四位bite位叫操作码(opcode)负责决定操作,后四个bite位则为操作的地址或者寄存器。
CPU中的运算比较复杂,但运算频率很好的弥补这个缺点。
四、操作系统的内核
(1)管理硬件:管理计算机接入的设备。
(2)提供稳定的运行环境:给每个软件提供稳定的运行环境,不相互干扰。除此之外操作系统会给应用程序提供API来完成不同的功能。在Java代码中如println是Java标准库中提供的函数,JVM中,为了实现println功能就会调用系统提供的API,调用系统API之后程序就会进入内核执行,此时系统就会操作对应的硬件设备。
五、进程的概念
进程的概念顾名思义就是正在运行的程序,运行时exe就会被加载到内存中,并且cpu执行里面的指令,而可执行文件没有运行的时候则储存在硬盘上。
六、进程的管理(PCB,链表)
(1)描述:通过 结构体/类 来描述进程属性,在Linux中用进程控制块(PCB)来描述进程属性
(2)组织:通过数据结构把多个结构体串联起来,并进行增删查改。可以简单认为通过链表来组织进程,创建进程的时候相当于创建了一个新的PCB,并且插入到链表中。结束进程的时候把这个PCB从链表上删除掉并且释放。当我们查看进程的时候相当于在遍历这个链表。
(3)PCB包括PID、内存指针、文件描述符表等重要属性。PID可以让系统找到对应进程,在同一时间每个程序的PID都不相同且唯一。内存指针主要描述进程依赖的指令和数据都存储在内存的哪个区域。文件描述符表则能看到打开了文件。
七、进程的调度
(1)进程状态:进程状态分为就绪和堵塞状态等。堵塞状态无法调度到CPU上执行,比如在进行IO操作(读写硬盘....)时会出现。
(2)进程优先级:在进程的先后顺序,运行进程的时间长短等中能体现。
(3)进程上下文:一个进程执行一会之后会从CPU上调度走,一段时间调度回CPU继续执行就需要把之前进程的中间结果(每个CPU寄存器上的值)保存起来,下次使用。
(4)进程的记账信息:操作系统统计每个进程在CPU上运行的时间来进一步调整调度的策略。
(5)并发执行:在某个时刻,CPU运行程序1和程序2并不同时,但是由于CPU运算过快人眼观察不到切换的速度,所以这个现象叫做并发执行。
(6)并行执行:CPU中有多个相不干扰的核心,每个核心之间在微观上可以执行不同的进程。