带你进一步了解进程

一:了解进程

进程(Process),简单粗暴来说就是正在运行的程序,也被称作任务(Task)。进程是程序的实例化,是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。

二:区分程序和进程

1.程序

(1)定义:指的就是平时后缀带“.exe”的可执行文件,只是硬盘上的一个东西,只要你不运行,就一直存放在硬盘那里!(静态)

(2)影响:只是占用了硬盘空间

(3)例图:

2.进程

(1)定义:双击程序,此时操作系统会把可执行文件的数据和指令,加载到内存当中,并且让CPU去执行指令从而完成一系列的工作!(动态)

(2)影响:消耗一定的硬件资源、内存资源、CPU资源、硬盘、网络宽带

(3)通过任务管理器可查看当前进程:

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

方法:先描述,再组织!!!

1.描述

使用一个专门的结构体来记录一个进程的各个属性和信息。(这里的结构体在操作系统中      叫PCB,下文详细介绍)

Linux中,PCB在源码是一个task_struct的结构体

 2.组织

使用一系列的数据结构,把多个进程进行一个有效的组织,随时方便进行遍历、查找、汇总资源。

Linux中,通常用链表来进行组织

当使用双向链表进行组织时

①:查看进程的列表,本质上就是在遍历这个链表

②:创建一个进程,就是创建一个PCB结构体,并且插入到链表上

③:删除一个进程,就是把这个PCB结构体从链表上删除并释放资源

四:PCB

(1)定义:PCB(Process Control Block)叫做进程控制块,是用来描述操作系统进程中的结构体。(这其实是一种通用叫法,各种操作系统用来描述进程的结构体都称作PCB)

(2)PCB的属性:①PID  ②内存指针  ③文件描述符表  ④进程调度

①PID

作用:类似于进程的身份证,用来区分不用的进程

如何查看:可以在任务管理器中查看到不同进程的PID

 注:同一个系统上,同一时刻中,每个进程的PID是不同的!!!

②内存指针与内存资源有关

作用:描述进程依赖于那些内存资源,因为既然要创建进程,就要给进程分配内存空间。然后这个内存空间上就有很多区域:有的用来放指令,有的用来放数据,还有的用来维护运行状态(就是描述哪块内存是干嘛的!)

了解内存资源:存储从exe可执行文件中加载过来的指令和数据,还需要保存一些运行过程中的中间结果之类的数据

③文件描述符表与硬盘资源有关

作用:描述进程的一些硬盘资源,记录当前进程在用那些文件

在操作系统中,硬盘上的数据都是通过操作文件这样一个抽象的概念来进行表示的。那么,应用程序要想操作硬盘,它并不能直接操作,而是操作文件;那么在操作文件中,就都需要先打开再使用后关闭这么个流程,在每次打开文件时都会给这个文件分配一个文件描述符作为进程内部对该文件的身份标识,后续就可凭借文件描述符找到这个文件的相关内容,从而针对该磁盘区域进行读写数据;那么为了管理所有文件,我们就使用了文件描述符表来将所有文件描述符组织起来!!!

文件描述符:类似于文件的身份证号,用来区分不同的文件;而操作系统每打开一个文件,就会产生一个文件描述符

文件描述符表:将文件描述符组织起来,记录当前进程正在使用那些文件

④进程调度与CPU资源有关

作用:公平地分配CPU资源

调度情况的分类:并行和并发

①并行:同一时刻,两个进程,同时运行在两个CPU逻辑核心上

②并发:同一时刻,两个进程,轮流在CPU上运行

★操作系统在调度这些进程时,可能按照并行的方式也可能按照并发的方式

★注:我们通常用并发指代并行和并发!!!

 原因因为CPU的轮换进程的速度极快,在微观上我们认为并发是串行化的,但实际在宏观上它跟“同时运行”毫无分别。因此,我们既无法感知是用哪种方式调度,并且在宏观上并行和并发毫无分别,所以我们会用并发代指并行和并发!!!        

进程调度的属性

(1)作用:描述了进程对应的CPU资源如何使用和使用情况

(2)有哪些属性:①状态   ②优先级  ③上下文  ④记账情况

①状态

(1)就绪状态:一个进程已经随时做好在CPU上执行的准备

(2)睡眠/阻塞状态一个进程还没有做好被调度到CPU上的准备

★状态之间可以互相转换!!!

②优先级

(1)作用:系统给进程进行调度时,也不是完全公平的,会根据优先级的不同来决定时间分配的权衡

(2)目的:使系统资源分配给更重要的进程!!!

③上下文

(1)作用:由于进程是轮流着有CPU运行,当一次运行不完时,就要保证下次上CPU调度时, 能够从上次运行的位置继续往后执行

★对于操作系统来说,所记录的上下文就是该进程在执行过程中CPU寄存器的数据,这些寄 存器有些存的是一些中间结果,有些存的是一些特定含义的数据(比如下一条指令是哪,比如当前函数调用关系),那么在这些寄存器中的数据需要在进程离开CPU前保存好,保存到对应进程的PCB的上下文字段(内存)中,下次回到CPU执行时,就能把PCB中的上下文数据恢复到对应的寄存器中,这时,进程就和上次执行的一模一样!!!

④记账信息

作用:相当于一个统计信息,统计每个进程在CPU上执行多久,执行多少条指令,也相当于是对进程调度工作的一个”兜底“

五:进程的隔离性/独立性

定义:每个进程都有自己的虚拟地址空间,使得一个进程无法直接访问或修改其他进程虚拟空间的内容

这种虚拟地址空间不像最早的操作系统一样,最早的操作系统是将物理内存直接分配给进程,这样有个缺点就是一旦某个进程内部代码有BUG,内存越界访问,会影响其他进程;而现在我们给每个进程分配有效的虚拟地址,将虚拟地址指向不同的物理地址,这样当进程使用该虚拟地址的内存,都需要操作系统进行转换物理地址的过程,这个转换的过程,就可以针对虚拟地址是否有效做出判断,可以避免影响其他进程!!!

六:进程间的通信

1.定义

在进程隔离的基础上,加个口子,能够有限制的进行相互影响

2.本质

找一个公共区域,多个进程均能访问的区域,借助公共区域完成进程间的通信

3.方式

①:基于文件(硬盘作为公共区域)

②:基于网络(网卡作为公共区域)

等等..........

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值