什么是进程
进程简单来说,一个程序运行起来,那就是一个进程
如何查看进程
那我们如何查看我们电脑上的进程呢?
ctrl + alt + delete => 任务管理器(进程(process)也叫做任务(task))
每个进程都对应一些资源--------> 进程是操作系统资源分配的基本单位
以上我们可以知道, 进程是一个重要的"软件资源",是由操作系统内核负责管理的
进程管理
那么是如何管理的呢? 描述 + 组织
描述
描述-----呈现出进程的属性特征
描述: 使用结构体(C语言的结构体)来描述进程属性
1.为什么是C语言的结构体呢?
-------因为操作系统基本上都是C/C++来写的
PCB
2.描述进程的结构体叫做PCB(进程控制块)
PCB中描述进程的属性(以下列举一些比较核心的属性):
①pid 进程的身份标识符(唯一的数字)
②内存指针 -----指向了哪些是自己的内存
③文件描述符标-----硬盘上的文件等其他资源
(②和③描述了进程有哪些硬件资源)
④进程调度相关的属性
1) 进程的状态(列举三个较为重要的状态)
就绪状态: 进程随时在CPU上执行
运行状态: 正在CPU上运行
(很多操作系统不会明确区分就绪和运行)
阻塞状态: 短时间内无法到CPU上执行
eg: 进程在密集的IO操作,读写数据
2) 优先级
进程也是有优先级的
3) 上下文
通俗易懂地说就是进程"存档" 和 "读档"
保存上下文(存档): 就是把CPU寄存器的值,记录保存到内存中
恢复上下文(读档): 就是把CPU寄存器的值恢复回去
4) 记账信息
操作系统统计每个进程在CPU上占用的时间和执行的指令数目,根据这个来决定下一阶段如何调度
组织
组织: 通过双向链表(不是一个单纯的双向链表),来把多个PCB给串到一起
创建一个进程,本质上就是创建一个PCB这样的结构体对象,将其插入到链表中
销毁一个进程,本质上就是把链表上的PCB节点删除掉
任务管理器查看到进程列表,本质上就是遍历这个PCB链表
CPU资源如何分配以及如何调度
通过任务管理器,我们知道进程的数量特别多,那么CPU资源该如何分配呢?
CPU的数量远远少于进程,但是进程确是希望"同时运行"------>分时复用
分时复用就要对进程进行调度:
操作系统里有一个重要的模块调度器,就负责让有限的 CPU来调度执行这么多进程
并行和并发
调度的主要方式方式就是并行和并发
并行:微观上同一时刻,两个核心上的进程,就是同时执行的
并发:微观上同一时刻,一个核心上只能运行一个进程,但是它能够对进程快速地进行切换
快熟切换: 举个例子,那就是运行不同APP地指令,只要切换的速度足够快,宏观上人是感知不到的,学过单片机的同学知道,要想点阵图上显示某一特定数字,我们无法让其LED灯同时点亮对应的位置,而我们只能让LED某一排或某一行的某个位置进行点灯操作,所以我们只能进行循环所有行或列,当你循环的速度足够快的时候,就可以给人一种视觉上的效果.
因此,往往也把并行和并发,统称为并发