JavaEE多线程(1)操作系统与进程
1.操作系统
操作系统是管理计算机硬件、给应用程序提供服务的系统软件,是硬件和应用软件之间的中间层。
操作系统主要两个功能:
1.资源管理:管理计算机全部软硬件资源(CPU、内存、外设、文件),分配调度资源。
2.提供用户接口(用户服务):屏蔽硬件细节,给用户 / 程序提供使用计算机的接口,方便使用计算机。
目前常见的操作系统::Windows系列、Unix系 列、Linux系列、OSX系列、Android系列、iOS系列、鸿蒙等
2.什么是进程
进程是程序的一次执行过程,是操作系统进行资源分配的基本单位。
操作系统如何管理进程?
首先解释什么是PCB(进程控制块)
PCB 是进程存在的唯一标志,操作系统靠 PCB 感知、管理进程。
PCB(进程控制块)核心属性
PCB 相当于操作系统给每个进程建立的档案本,下面每一项就是档案里面记录的信息。操作系统依靠 PCB 完成对进程的管理。
1. 进程标识:PID 进程号
PID 就相当于每个进程的身份证号,操作系统可以同时跑上百上千个进程,靠 PID 识别区分。
2. 进程状态
进程有三个状态
1)就绪状态:使用资源准备就绪,就等 CPU,一旦 CPU 空闲可马上运行。
2)运行状态:进程正在 CPU 上跑,占用 CPU。
3)阻塞状态:进程卡在等待某个事件,比如等待键盘输入、读硬盘数据。此时就算 CPU 空闲,它也不能运行。
3.CPU 现场(进程上下文):寄存器、程序计数器 PC(进程切换要保存)
类比:游戏存档读档。进程在 CPU 运行,当它要离开 CPU,把当前运行状态 “存档”;之后再次被调度上 CPU,“读档”,从刚才中断的地方继续执行,不会从头跑。
程序计数器 PC:存下一条要执行指令的内存地址。 寄存器:CPU 内部临时存放的小单元,进程运行时,计算结果存放在寄存器中。
场景:CPU 正在跑 A 进程,时间片到,要切去跑 B 进程。 A 进程不能直接丢掉当前执行进度,把 PC、寄存器全部值保存进 A 的 PCB。CPU 去运行 B 进程。以后再次调度 A 进程运行的时候,从 A 的 PCB 把现场读回 CPU 寄存器和 PC,A 接着上次断点继续跑。
4. 调度相关信息
优先级
CPU 核心少,但系统有上百个进程。操作系统依靠进程调度实现并发与并行。 优先级保存在 PCB 中,用来帮助调度器挑选进程。
- 优先级高:更容易被调度器选中,分到更多 CPU 机会,优先上 CPU 运行。
- 优先级低:只有高优先级进程不跑的时候,才轮到它。
进程的记账信息
存放在 PCB 中,是一套统计机制,核心统计:每个进程在 CPU 上一共运行了多长时间。
记账 = 统计 “工时”。 记账信息记录每个进程总共干了多久活。发现某个进程工时太少,就给它 “插队优待”,防止一直轮不到它(解决进程饥饿)。
补充概念:并发、并行
- 并发:同一个 CPU 核心,用分时复用,快速切换多个进程,宏观看起来同时运行。单核 CPU,同一时刻只能跑一个进程;CPU 跑一会儿进程 A,切到进程 B,再切到进程 C。切换速度极快,人感觉是一起运行。
- 并行:多个 CPU 核心执行不同的进程,同一时刻真正同时运行。
5. 资源信息:内存地址、打开文件
PCB 里面保存的内存地址信息,本质是指针。
一个进程的内存空间里,有的部分是 “指令”,有的部分是 “数据”。内存指针告诉系统,哪个部分是指令,哪个部分是数据。
- 指令:存放编译后的二进制机器指令,就是程序的代码。CPU 读取这里的指令一条条执行。
- 数据:放程序运行产生的:变量、常量、全局数据。程序运行读写、修改这一块内存。
文件的真实内容存放在硬盘,PCB 不会保存文件内容,仅记录该进程打开了哪些文件。
PCB 内容小结
PID(身份)+ 进程状态 + 进程上下文(CPU 现场存档)+ 调度信息(优先级、记账信息)+ 资源信息(内存、打开文件)。
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐

所有评论(0)