进程与线程(OS)详解

大家好 我是积极向上的湘锅锅💪💪💪


进程

1、 基础知识

进程是什么?
我们所编译的代码可执行文件只是储存在硬盘的静态文件,运行的时候加载到内存,CPU执行内存中指令,这个运行的程序叫做 进程

比如有个.c的文件在硬盘,那我想将它跑起来,那就需要编译之后变成二进制可执行文件,编译好之后需要一个运行环境,那就是需要加载到内存,最后需要CPU去执行这个文件,最终这个运行中的可执行文件就称为进程

总结:进程是对运行时程序的封装,操作系统进行资源调度和分配的基本单位

并发与并行

这个也是老生常谈的话题了

  • 并发:对于单核CPU而言,在短时间内执行多个进程叫做并发
  • 并行:对于多核CPU而言,同时执行多个进程叫做并行

而对于并发来说,CPU需要从一个进程切换到另一个进行,这个过程需要保持过程的状态信息


2、进程的状态

某个进程在某个时刻所处的状态除了创建和结束还有以下三个状态:

  • 就绪态:暂时停止运行,等待CPU的调度
  • 运行态:该时刻进行占用CPU
  • 阻塞态:该进程在等待某一事件发生而暂停运行,比如IO

而对于阻塞状态,我们知道阻塞态的进程还是占据着物理内存,而在虚拟内存管理的操作系统中,不会让你站着茅坑不拉屎,所以会将阻塞态的进程的物理内存空间换出到硬盘,等需要再次运行的时候,再从硬盘换入到物理内存,这个状态叫做 挂起态

而我们知道就绪态也是在占用着物理内存,所以挂起态也分为以下俩种:
阻塞挂起状态: 进程在硬盘,等待某一事件发生

就绪挂起状态:进程也在硬盘,但只要进入内存,马上运行

在这里插入图片描述
注意:

  • 只有就绪态和运行态可以切换,其他都是单向转换,就绪态的进程通过调度算法从而获得CPU时间,转为运行状态
  • 运行态缺少需要的资源会转换为阻塞状态,而这个资源不包括CPU时间,缺少CPU时间会从运行态转换为就绪态

3、CPU的上下文切换

在了解进程的上下文切换的之前,知晓CPU的上下文切换是十分有必要的

什么是CPU的上下文?

① CPU 寄存器,是 CPU 内置的容量小、但速度极快的内存。
② 程序计数器,则是用来存储 CPU 正在执行的指令位置以及即将执行的下一条指令位置。

CPU 寄存器和程序计数器都是 CPU 在运行任何任务时必须的依赖环境,因此也被叫做 CPU 上下文

什么会有CPU的上下文切换?
我们知道进程都是放在内存中,由CPU去运行,但是CPU不会一次性会把任务执行完,它会记录任务目前的状态,然后去加载其他任务

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

owensweat

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值