计算机系统进程模型概念

计算机系统进程概念

以下进程概念内容均来自:https://www.bilibili.com/video/av16710919?p=13https://blog.csdn.net/qq_40421919/article/details/85224864 、《Linux网络编程(第二版)》和《深入理解计算机系统》


个人认为如果真的想搞懂计算机进程的内容,就先去看上面北大的视频“进程”那节课程,然后不理解的去翻《深入理解计算机系统》8.2节进程,这本书大部分东西还是说的蛮详细,此文仅仅是我做一个笔记,排版顺序是按照视频讲解顺序排的,排版可能不是很好。最后,多写多练


首先,我们需要区分程序与进程:

狭义上说:
进程与应用程序的区别在于:应用程序作为一个静态文件存储在计算机系统的硬盘等存储空间中。而进程则是处于动态条件下由操作系统维护的系统资源管理实体。

他们之间最大的不同之处在于(狭义上):

  • 进程是动态的,而程序是静态的;
  • 进程有一定的生命期,而程序时是指令的集合,本身并无"运动"的含义。没有建立进程的程序不能作为1个独立单位操作系统的认可。
  • 一个进程只能对应一个程序,一个程序可以对应多个进程。进程和程序的关系就像戏剧和剧本之间的关系。

广义上说:

进程从用户角度来看时应用程序的一个执行过程。从操作系系统核心角度来看,进程代表的是操作系统的分配的内存,CPU时间片等资源的基本单位,是为正在运行的程序提供的运行环境。



好的,在大致区别进程和程序的不同后,我们来看看进程的相关来源与其相关知识:

来源:

进程是操作系统中最基本、重要的概念。是多道程序系统出现后,为了刻画系统内部出现的动态情况,描述系统内部各道程序的活动规律引进的一个概念,所有 多道程序设计操作系统都建立在进程的基础上。

早期的计算机中只支持单道程序 (单道程序设计),因为只有一个物理程序计数器,所以所有的程序是串行执行的,即A程序运行完成,B程序才能开始运行。计算机中的所有资源都只被一个程序所享有,包括内存。所以内存只供当前运行的程序所使用。如果程序A遇到了阻塞,则程序B一直不能运行。这样的资源分配是不合理的,同时这大大的浪费的CPU的效率。

然而随着计算机的发展,开始有了多道程序 (多道程序设计),即内存中同时存放几道相互独立的程序,每个程序变成了一个独立的控制流 (逻辑控制流),每个程序都有一个 逻辑程序计数器。这是操作系统虚拟的一个体现,将一个 物理程序计数器变换成 多个逻辑程序计数器。但因为物理上只有一个(物理)程序计数器,所以当哪个程序真正上CPU,就把那个逻辑程序计数器推送到物理程序计数器。通过这种变换,达到了在内存中有多个程序并发运行的效果(宏观)。

逻辑控制流

在计算机系统中通常有许多其他程序在运行,进程也可以向每个程序提供提供一种假象,好像它在独占地使用CPU,如果想用调试器但不执行程序,我们会看到一系列的 程序计数器(PC) 的值,这些值唯一的对应于包含在程序的可执行目标文件中的指令,或是在包含在运行时动态链接到程序的共享对象中的指令。这个程序计数器(PC)值的序列叫做 逻辑控制流,或者简称 逻辑流

考虑一个运行着三个进程的系统,处理器的一个物理控制流被分成了三个逻辑流,每个进程一个,如下图所示:

// 图

每个竖直的条表示一个进程的逻辑流的一部分。在这一个例子中,三个逻辑流的执行时交错的,进程A运行了一会儿,然后是进程B开始开始运行到完成。接着就是进程C运行了会儿,进程A接着运行到完成,最后进程C运行到完成。

这很好的说明了进程是轮流着使用处理器的,每个进程执行它的流的一部分,然后被别的进程抢占(Preempted),导致在运行的程序被暂时挂起,然后运行别的进程。

并发环境与并发程序:

并发环境:指的是一段时间间隔内,在物理机器上有两个,或两个以上的程序它们处于开始运行,且未结束运行的状态。也就是说,一个程序开始执行了,在还未结束时,另一个程序又开始运行了。注意,在并发情况下程序之间谁先执行,谁后执行,这是没法预测的。

并发程序:在并发环境中执行的程序,称为并发程序。

并发流

当一个逻辑流的执行在时间上与另一个流重叠,称为 并发流 ,这两个流称为并发地运行。
更准确的说,应该是两个流相互并发。例如:X在Y开始运行之后和Y结束运行之前开始运行,或是Y在X开始运行之后和X结束运行之前开始运行。这样就说X和Y是并发地运行,或是X和Y相互并发。

刚刚上面逻辑流那里给出一张图,进程A和进程B就是并发地运行,进程A和进程C也是并发地运行,但进程B和进程C则不是,因为进程B的最后一条指令在进程C的第一条指令之前执行。

多个流并发的执行一般现象叫做 并发(Concurrency)。一个进程和其他进程轮流运行的概念叫做 多任务(Multitasking)。一个进程执行它的控制流的一部分的每一段时间叫做 时间片(Time Slice)。因此,多任务也叫做 时间分片(Time Slicing)

例如:逻辑流中给出的图片中,进程A和进程C的流的由两个时间片组成,进程B的流由一个时间片组成。

多道程序设计:

  • 在计算机内存中同时存放几道相互独立的程序,它们在管理程序控制之下,相互穿插的运行。多道程序设计必须有硬件基础作为保证。
  • 时钟中断即为多道程序设计模型的理论基础。 并发时,任意进程在执行期间都不希望放弃cpu。因此系统需要一种强制让进程让出cpu资源的手段。时钟中断有硬件基础作为保障,对进程而言不可抗拒。 操作系统中的中断处理函数,来负责调度程序执行。
  • 在多道程序设计模型中,多个进程轮流使用CPU (分时复用CPU资源)。而当下常见CPU为纳秒级,1秒可以执行大约10亿条指令。由于人眼的反应速度是毫秒级,所以看似同时在运行。

    实质上,并发是 宏观并行微观串行

那么在一个并发环境下,执行的并发程序,我们怎么刻画这样的程序呢?于是,进程的定义就孕育而生了,它准确的刻画了一个在并发环境下的一个并行程序的执行

进程:
  进程是具有独立功能的程序,是关于某个数据集合上的一次运行活动。进程还是系统进行资源分配基本的单位、基本的执行单元,也是CPU调度的单位。

如下:

  • 进程是程序的
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值