计算机是如何工作的
1.1 冯诺依曼体系
现代的计算机大多遵守冯诺依曼体系
![](https://i-blog.csdnimg.cn/blog_migrate/c1ac4808a11de1c51fc37b90b11611b9.jpeg)
CPU中央处理器:计算机最核心的部分,进行算术运算和逻辑判断;(CPU这类芯片,从诞生到现在都是按照“指数规律”发展,遵循“摩尔定律”:每隔18个月,芯片的集成程度提高一倍,运算速度提升一倍,成本降低一半)
存储器:分为外存和内存,使用二进制方式存储数据;
输入设备:用户给计算机施号发令的设备;
输出设备:计算机给用户汇报的过程。
1.2 CPU的基本工作过程
工作过程:
主频:描述了1s有多少个时钟周期(近似于1s钟执行了多少个指令);
执行程序过程:硬盘→内存→CPU→解析指令→执行指令。
java程序:.java→.class→JVM读指令,解析指令,执行指令→二进制指令(由于CPU架构不同,所以转换成二进制指令为了跨平台)
汇编语言就是机器指令,机器指令是二进制01,用特定的单词代替01组合就形成了汇编语言。
1.3 CPU构成(了解)
门电路:与或非(基础门电路),对应真值表,CPU就是门电路的组合(这些在模电数电中会讲到);
异或门:由基础门电路构成;
加法器:半加器、全加器串起来;(加法器可以进行加减乘除运算)
1.4操作系统
操作系统是软件,用来管理计算机资源
操作系统的功能:
对上给软件提供稳定的运行环境;
对下管理各种硬件设备。
计算机系统的分层视图:
![](https://i-blog.csdnimg.cn/blog_migrate/f0f859bcf226dcbc4293db9c29925917.png)
进程(Process/Task)
2.1 什么是进程
进程也叫任务,一个跑起来的程序叫做进程。
.exe是可执行文件,是存储在硬盘上的文件(静态的)。
双击.exe文件,操作系统就会把这个文件中的核心数据加载内存里,同时在系统生成一个进程,可以在任务管理器中看到该进程。
运行起来的程序才叫做进程。进程多会占用CPU和内存资源,会发生卡顿的情况。
![](https://i-blog.csdnimg.cn/blog_migrate/bb08d38c07c97cf32fb715cd2ba1dd7e.png)
2.2 管理进程
描述:详细的标识清楚一个进程有哪些属性/信息,通过结构体(PCB:进程控制块)描述,结构体里面包含进程的各种信息。
组织:通过一定的数据结构,把若干个用来描述的实体放到一起,并进行增删改查,系统通常会通过双向链表这样的结构把PCB组织起来。
创建一个进程本质上就是创建PCB,并且加入到链表上;
销毁一个进程本质就是从链表上删除对应的PCB节点;
查看任务管理器本质就是遍历这个链表。
2.3 PCB具体信息(进程中的关键要素)
pid进行身份标识:一个主机同一时刻下的pid是唯一的,通过pid来区分一个进程。
![](https://i-blog.csdnimg.cn/blog_migrate/3674d3d423f077c5658ebda98f1b8d88.png)
内存指针:可执行文件运行后,操作系统会把文件中的核心数据(执行的指令,指令依赖的数据)加载到文件中。需要给进程分配内存空间来存放数据。描述内存持有的内存资源。
文件描述符表:每个进程都能打开一些文件,此表记录当前进程打开的文件,后续对文件进行读写操作。描述了进程持有的文件资源。进程是操作系统分配资源的基本单位。
以下四个属性和进程调度有关(调度是指合理分配CPU资源,通过并行或者并发的方式让计算机同时执行多个进行,并行:多个CPU同时独立运行多个进程;并发:一个CPU运行多个进程)
进程状态:就绪状态、阻塞状态
进程优先级:系统调度的时候会根据进程优先级给进程安排时间
进程上下文:进程在CPU执行过程中需要切换其他进程,此时就需要保存当前运行的结果(存档),后面继续运行的时候需要恢复之前的中间结果(读档)继续执行。(上下文就是CPU中的寄存器的值,包含了中间结果,需要保存到PCB的上下文信息中(内存))
进程记账信息:CPU执行的信息,辅助调度效果,根据信息安排调度,均衡调度。
2.4 虚拟地址空间
为了避免进程之间出现内存越界访问的操作,需要让每个进程都有自己的内存空间,因此给每个进程划分内存空间,都叫做虚拟地址空间,通过专门的设备MMU完成虚拟地址到物理地址之间的映射。
如果进程不小心访问了非法地址,MMU会针对地址校验,通知进程(杀死进程),从而避免影响其他进程的运行。
使用虚拟地址空间,使进程之间存在了隔离性,一个进程不能直接访问另一个进程的内存数据,放置干扰操作,保证系统的稳定性。
隔离性使得进程更加稳定,但是也存在问题,有的需求需要多个进程互相配合,进程隔离进程之间就很难交互,因此引入了新的机制,进程间通信(公共资源)。