一.基础知识

1.计算机的主要储存

现在的电脑大部分是遵循冯诺伊曼体系:

CPU:进行逻辑判断和算术运算

储存器:分为内存和外存(硬盘),存储数据(二进制数形式),外存数据难以丢失,内存数据易丢失

输入设备:用户给计算机发号施令

输出设备:展示由输入设备发号施令产生的结果

2 CPU的主要指标

2.1CPU频率

2.2CPU的核心数

在以前的CPU中只有一个核心,而核心内部有无数个计算单元组成,计算单元越多CPU频率越高,为了提高工作效率,得进一步缩小计算单元的体积,但CPU面积有限(面积越大.生产时合格率越低),而且计算单元不能无限小,所以就有了多核心技术,一个CPU有多个核心,之后又研发出了超线程技术,一个CPU核心可以丁俩个。

3.指令和寄存器

编程语言分为三大类---- 机器语言(二进制形式)、汇编语言、高级语言(C语言)

而指令指的是机器语言,每个不同的CPU上面支持哪些指令都是在设计出来的时候就确定了

而指令即指导CPU进行工作的命令,一条指令由  操作码(opcode)+被操作数 构成,操作码代表要做什么,被操作数可以代表某个内存地址或寄存器的编号,而指令也是个数字,以二进制的形式存储在内存中。一个CPU中也有几十个寄存器寄存器,即是存储数据的模块,在CPU中,CPU也能存储数据是通过寄存器存储的,CPU寄存器访问数据比内存还快,但也易丢失数据,且存储空间比内存小很多,主要作用是CPU在执行指令计算数据时存储临时数据,起辅助效果。

4.CPU的执行流程

执行流程:读取指令---》解析指令---》执行指令

举例:

注意:执行完这一套指令后存储在寄存器中的临时数据不会回收

二.操作系统和进程

操作系统是⼀组做计算机资源管理的软件的统称。⽬前常⻅的操作系统有:Windows系列、Unix系 列、Linux系列、OSX系列、Android系列、iOS系列、鸿蒙等。

作用:

1.管理着各种硬件设备,通过驱动程序间接操作硬件设备

2.给各种程序提供相对稳定的环境,一个程序出BUG,不会影响其他程序的运行

而一个运行的程序,就称之为进程那操作系统该如何管理这些进程呢?

1.先描述出一个进程

通常使用结构体(进程控制块(PCB))来描述进程,描述了进程的各种核心属性。

2.把多个进程组织起来

每次打开电脑,就会自动运行上百个进程以确保电脑运行,为了提高管理效率,这么多进程得组织起来,所以一般采用数据结构将PCB给串在一起

三.PCB的核心属性

1.pid(进程id)

进程的身份标识符

2.内存指针

指向指令的指针,利用该指针可以找到指令

3.文件描述符表

在程序运行起来,很多时候需要读取硬盘里的数据,硬盘中是以文件的方式存储数据,读取数据时得打开文件,每打开一个文件,就会把该文件的信息保存到文件描述符表中,表中的每一项代表着已经打开的文件。

四.进程调度

电脑一旦开启,就会运行上百个进程,而我们的电脑一般只有几个物理核心,如我的电脑有8个物理核心,相当于16个逻辑核心,而一个核心只能运行一个进程,那如何运行上百个进程呢?为了解决这个问题,就有了多任务操作系统,采用分时复用的方式,一个CPU核心就可以执行多个进程。

分时复用原理: 把时间分成多份,每个时间份中执行不同的进程,串形执行,由于计算机速度非常快,让人感觉进程同时运行。

并发执行:一个CPU按照分时复用的方式执行多个进程。

并行执行:多个CPU同时进行多个进程。

在现代电脑中,并发执行和并行执行是同时进行的,由于在写代码时不知当前进程是并行还是并发

,所以统称为并发执行。

因为并发执行需要大量的切换,即进程调度,那切换规则是什么呢?这和PCB的一些属性息息相关:

4.进程状态

分为就绪状态和阻塞状态

就绪状态:代表随时可以在CPU上运行

阻塞状态:代表该进程不可以在CPU上运行

5.进程优先级

谁优先级高就会先在CPU上执行,即使在分时复用的时间切片中没有进行完,优先极高的会强制剥夺优先级低的资源

6.进程的上下文

由于进程调度,可能某一个进程执行到一半,就因为某某原因(如优先级问题,时间切片用完等),被从CPU调用走,过一段时间后,很有可能会被调回,他会继续上次的状态继续往下执行,而不是重新开始。

原因:

CPU在任何时刻都只能执行一个进程的代码。当需要切换时:

  1. 保存当前进程的上下文

    • 调度器将当前正在运行进程的CPU现场(包括程序计数器PC、寄存器值、状态字等)全部保存到其PCB中的一个特定区域(上下文保护区)。

    • 目的:就像玩游戏时存档,保证下次回来能从 exactly 原地继续。

  2. 恢复下一个进程的上下文

    • 调度器从被选中的新进程的PCB中,将其之前保存的CPU现场(程序计数器、寄存器值等)加载回CPU的各个寄存器中。

    • 目的:就像读档,让新进程从它上次被中断的地方继续执行。

7.进程的记账信息

统计功能,统计每个进程在CPU运行了多久,如果发现某个进程好久没吃到CPU资源后就会分配一些资源给该进程。

五.总结举例

每当打开电脑,就会运行操作系统这个软件,把内核程序编译成机器语言(及一段段指令)加载到内存中,创建第一个进程。之后执行某个.exe可执行程序,操作系统就会读取内存中的指令,通过指令操控CPU把编译好的.exe中的指令加载内存中,创建新的进程(PCB在内部同时创建),在后续运行程序中通过PCB内存指针找到内存对应程序的指令通过CPU执行,后面每一个程序都是如此,在分时复用模式下,通过不同的PCB上的相关信息进行进程调度。

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐