从哲学角度上理解进程

注:本文的内容主要参考了《从哲学层次上看操作系统》一书,若想作更加细致的理解,可自行阅读

1.什么是进程

简单来说,进程就是正在进行中的程序,一个程序加载到内存后执行,就叫做进程。

2.为什么会有进程

进程在Multics操作系统出现前叫做 工作(job)。job 是IBM用于多道批处理程序设计中的概念。由于一些原因,Multics操作系统的研发人员将 job 改为 进程(process)。
计算机的发展总离不开“高效”这个词,之前,单一操作员单一控制终端、批处理均存在效率低下的问题,即CPU使用率不高。为了提高CPU利用率,人们想起将多个程序溶蚀加载到计算机里并发执行。这些同时存在于计算机内存的程序就被称为进程。因此,进程就是为了在CPU上实现多道编程而出现的概念。

3.进程是什么样的

物理内存的分配来看,每个进程都占有一个内存空间,因为CPU执行命令只能是一条一条的,所有决定了进程也只能是一个一个执行,而CPU决定执行哪条指令由物理程序计数器指定,所以在物理层面上,所有的进程共用一个计数器。
逻辑角度来看,也即用户角度,执行的所有进程都是在共同运作的,看起来就像是程序是并行执行的。
时序视角上看,所有的进程都是向前推进的,运行了一段时间后,将CPU分给另一个进程,挂起的进程的计数器会记录下次指令开始的位置,下次开始时,从上次结束的地方继续执行。

在这里插入图片描述

4.进程是如何产生和消失的

进程消失

进程消失可以分为四种情况:
寿终:程序全部执行完毕,走完了一生,进程自然“死亡”。
自杀:进程出现了错误然后自行退出。
他杀:进程被其他的进程强行关闭。
处决:进程出现异常然后强行关闭。

进程产生

在一个系统初始化时,就不断会有系统进程产生,这是不可避免的。在系统初始化后,系统等待用户的操作,例如用户执行某一个程序,那么系统就会为这个可执行文件创建一个进程,或是在进程中通过系统调用,产生一个新的进程。以上情况,可以理解为女娲造人(系统初始化产生系统进程),人生人(系统进程创建子进程和用户进程创建子进程)

进程产生的过程

进程创立的过程可以分为 6 步:
1.分配进程控制块PCB(Processing Control Block)
2.初始化机器寄存器
3.初始化页表
4.将机器代码从磁盘读入内存
5.将处理器状态设置为“用户态”
6.跳转到程序的起始地址(设置程序计数器)

ps:整个进程创立的过程还涉及了其他一些知识点,并且不同的操作系统对于进程创立的过程可能存在一些区别,以上的是Windows的进程创立方法。

5.进程的状态

一般逻辑下,我们认为进程就是在不断执行的,这就是一种状态——执行状态。
那么物理视角下,CPU不可能总是分配给一个进程使用,这时候就需要挂起——挂起状态,当然还可能是进程在运行的过程中执行了某种阻塞操作使得进程挂起,如果是前一种挂起,那么将CPU分配给该进程,进程就会继续执行,但是像后一种,进程自己挂起,就算将CPU分配给它,它也不能继续运行。
当进程挂起后,等待CPU的分配时,这种状态是就绪状态

在这里插入图片描述

从上面进程的三个状态可以看出,状态的转换只有四种,而不是六种,四种可以进行的转换图中和上文已经有基本的描述,这里就不多作赘述了,剩下两种:从阻塞态转换到执行态和从就绪态转换到阻塞态。
前一种从理论上是可以的,但是这样的转换是没有意义的,因为此时的进程被某些阻塞操作挂起,它需要等待这些阻塞操作的完成,此时就算将CPU资源分配给该进程,它也不能继续执行,因此操作系统禁止这样的转换。后一种很简单,逻辑上就不成立,进程都没有执行,怎么还能从就绪态转换到阻塞态。所有这三种状态之间的转换只有四种。

5.进程存在于哪里

一个事物存在于一个空间之中,进程就存在于进程空间之中,也称为地址空间。在地址空间里,有进程所需要的所有资源,地址空间的特点就是“被动”。就是说,空间里面所以资源的调配需要进程主动提出,而地址空间不会主动去分配资源。就像是舞台剧,演员就是进程,而舞台就是地址空间,舞台就在那里不动,而演员可以在舞台上尽情表演。我们需要思考的是如何使多个进程空间共享一个物理内存。

6.如何管理进程

谁来管理进程?毫无疑问是由操作系统管理,那么要如何管理呢?需要方法和资源。
与国家管理一个人类似,操作系统要管理进程就要维护关于进程的一些信息。当一个进程产生时,操作系统也需要为其建立记录,而操作系统维护进程记录的结构就是进程表或者是进程控制块PCB,这个进程表或进程控制块里面存放的就是相关进程的资料。

进程表所包含的进程记录信息

不同的操作系统维护的进程表资料不完全相同,但是一般来说,维护的资料应该包括寄存器、程序计数器\状态字、栈指针、优先级、进程ID、信号、创立时间、所耗CPU时间、当前持有的各种句柄等。采纳的数据结构主要是线性表和链表结构,也可能使用到树和图结构。
进程表存在于操作系统所在的内核空间里,进程是在用户空间里执行的。

在这里插入图片描述

进程管理最大问题是资源分配的问题。人类社会的最大问题其实也是资源分配问题,谁能解决资源分配问题,谁就能解决资源争端,当然,计算机的资源分配相比于人类来说要简单,因为计算机没有自我意识,就算对某些程序不公平,它们也不能做什么。但我们需要考虑到用户的体验,因此我们需要“公平”地给进程分配资源,并且还要追求效率

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值