进程详解

什么是进程?

进程也叫做“任务",一个跑起来的程序,就称为”进程“。例如QQ.exe叫做”可执行文件“或者是”可执行程序,是一个存储在硬盘上的文件。当我们双击QQ.exe文件,操作系统就会把这个文件的核心数据给加载到内存中,系统中就会生成一个进程,此时我们可以在任务管理器中查看。

操作系统是如何管理进程的

1.如何描述进程

操作系统通过PCB(进程控制块)来描述一个进程,一个进程中可能有多个PCB,每个PCB中存储了进程的属性/信息。

PCB
  1. pid: 进程的身份标识,通过pid来区分进程
  2. 内存指针: 描述进程持有的内存资源,在我们双击可执行文件后,操作系统就会把文件中的核心内容给加载到内存中。内存有的空间是用来存放指令的,有的用来放数据,有的用来维护运行状态…而内存指针就是用来描述哪块内存是用来干什么的
  3. 文件描述符表: 描述进程持有的文件资源,每个进程,都会打开一些文件,文件描述符表记录了当前进程打开了哪些文件。

由于内存指针和文件描述符表的存在,让进程成为了操作系统分配资源的基本单位

  1. 进程状态: 就绪状态的进程才能上CPU执行,阻塞状态不能上CPU执行
  2. 进程优先级:系统调度时,根据优先级,来给进程安排时间
  3. 进程上下文:进程在CPU上执行了一会,要切换到另外一个进程,就需要保存当前进程运行的中间结果(存档),下次再切换回来的时候,就恢复之前的中间结果(读档),继续往下执行。进程的上下文就是CPU寄存器的值,寄存器中包含了运行的中间结果,需要把这些结果给保存到PCB的上下文信息中(内存)。
  4. 进程记账信息:记录每个进程在CPU上执行的时间,虽然进程之间有优先级,但是操作系统要保证每个进程都能被执行到。

以上4点属性都和进程调度有关,CPU资源有限,需要合理安排

2.如何组织进程

操作系统通过双向链表来组织PCB。创建一个进程时,本质上就是创建一个或多个PCB,加入到链表上;销毁一个线程时,本质上就是从链表上删除对应的PCB节点;而我们查看任务管理器时,就是在遍历这个链表

3.虚拟地址空间

操作系统会给每个进程分配内存资源,但是在某些情况下,可能会出现内存访问越界的情况。如进程1访问了进程2的内存空间。为了避免这样的情况,就给每个进程划分虚拟内存空间(不是真实的问了内存空间)要通过专门的设备MMU来完成虚拟地址到物理地址的映射
image.png

使用虚拟地址空间,使得进程之间存在了“隔离性”一个进程是不能直接访问另外一个进程的内存数据的。

4.进程间通信

虚拟地址空间让进程间有了隔离性,但是有些场景又需要多个进程相互配合,因此又引入了进程间通信。其核心就是找到一块多个进程都能访问到的公共资源,然后基于公共资源来交换数据。类似学校放外卖的架子

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

指挥部在下面

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

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

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

打赏作者

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

抵扣说明:

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

余额充值