怎样理解进程并发执行的不可再现性

怎样理解进程并发执行的不可再现性,第1张

程序并发执行以致失去了封闭性,就是一个数据,你可以用,我也可以用,你改一下,我改一下,所以计算结果已经和并发程序的执行速度有关,例如:

有两个循环程序A和B,它们共享一个变量N。程序A每执行一次时,都要做N∶=N+1 *** 作;程序B每执行一次时, 都要执行Print(N) *** 作,然后再将N置成“0”。程序A和B以不同的速度运行。

(1) N∶=N+1在Print(N)和N∶=0之前,此时得到的N值分别为N +1, N +1, 0。

(2) N∶=N+1在Print(N)和N∶=0之后,此时得到的N值分别为 N, 0, 1。

(3) N∶=N+1在Print(N)和N∶=0之间,此时得到的N值分别为N, N +1, 0。

至于执行速度一样了是不是可再现的,这个我就不知道了

经典定义:

1进程是可以并发执行的计算部分

进程的五个特性

1动态性:创建时产生,由调度而执行,得不到资源而暂停执行,有撤销而消亡

2并发性:多个进程实体同存于主存中

(引入进程的目的,程序是不能并发执行的)

3独立性:进程实体是一个能独立运行的基本单位,也是系统中获得资源和独立调度的基本单位

4异步性:进程按各自独立的,不可预知的速度向前推进(导致程序执行的不可再现性)

5结构特征:进程实体是由程序段、数据段、进程控制块三部分构成,又称进程映像/进程上下文(context)

进程的基本状态

有些还存在两个额外状态:新状态和终止状态

进程控制块PCB

1概念:是 *** 作系统用于记录和刻画进程状态及有关信息的 数据结构 ,也是 *** 作系统控制和管理进程的主要依据。

原语:一组系统命令

要么全部执行,要么不执行,不存在中间状态

$$进程创建

\begin{cases}

& \text{系统生成时,会创建一些系统进程(用来分配系统资源和管理工作)}\

& \text{用户作业,由 *** 作系统的作业调度程序为之创建相应的进程}

\end{cases}$$

1既可撤销具有指定标识符的过程,又可撤销一个优先级中的所有进程

2一个进程被撤销时,必须从系统队列中移出,释放并归还所有系统资源,同时也有审查是否有子孙进程,如果有子孙进程也有一起予以撤销

1当一个进程出现等待事件时,该进程调用阻塞原语将自己阻塞

1必要性:解决多个进程争夺少数CPU资源的问题

2功能:

(1)记录系统中所有进程的执行情况

(2)选择占有CPU的进程

(3)CPU分配给进程,即进行进程上下文切换

(4)回收CPU

3进程调度算法

先来先服务/FCFS

按照进程进入就绪队列的先后次序选择占用处理器的进程

优先数调度算法

为每个进程确定一个优先数,进程调度总是让具有最高优先数的进程先使用处理器(若优先数相同则采用FCFS)

时间片轮转调度算法

CPU处理时间分成固定大小的时间片,轮流来,如果时间片用完进程还未结束,也得重新排到就绪队列的末尾等待再次调度

时间片q的选择:

q=R/N(R是系统对响应时间的要求;N是进程数)

多级反馈队列调度算法/MLFQ

设置多个就绪队列

各个队列的优先权不同(第一个队列的优先权最高,逐个降低)

各个队列的时间片大小不同(优先权越高的队列时间片越小)

当前队列的某个进程在时间片内没有完成就进入下一个队列的末尾

当某个队列为空时才会调度下一个队列

处理机在第i队为谋进程服务时,如果有新进程进入优先权较高的队列(i之前),则处理机就去处理i之前的那个新进程了,正在运行的进程被放到i队伍的末尾(可怜哈哈哈哈)

4调度算法的选择

(1)处理器利用率(尽量让CPU处于忙碌状态)

(2)吞吐量

(3)等待时间(尽可能减少)

(4)响应时间(尽可能减少)

1进程互斥:若干个进程要使用一个共享资源,任何时刻只允许一个进程去使用,其他要使用的进程必须等待,直到那个进程使用完后释放资源

2进程互斥的管理办法: PV *** 作 管程

1进程同步:并发进程之间存在一种制约关系,一个进程的执行依赖另一个进程的消息,当一个进程没有得到另一个进程的消息时应等待,直到消息到达时才被唤醒

3时间上的同步问题

$$进程通信

\begin{cases}

低级& \text{PV *** 作}\

高级 \begin{cases} 共享存储器系统\ 消息传递系统 \管道通信系统 \end{cases}

\end{cases}$$

1基于共享数据结构的通信方式

在这种通信方式中,要求诸进程公用某些数据结构,进程通过它们交换信息。这种通信方式是低效的,只适于传递少量数据。

2基于共享存储区的通信方式

为了传输大量数据,在存储器中划出了一块共享存储区,诸进程可通过对共享存储区中的数据进行读或写来实现通信。这种通信方式属于高级通信。

消息传递系统中,进程间的数据交换以消息为单位

1管道,是指用于连接一个读进程和一个写进程,以实现它们之间通信的共享文件,又称为pipe文件

2为了协调双方的通信,管道通信机制必须提供以下三方面的协调能力:(1)互斥;(2)同步;(3)对方是否存在。

1需要线程的目的:保持系统的并发性

2为了减少额外开销,系统把进程的资源申请与调度执行分开,线程是调度的基本单位,进程是资源申请与拥有的基本单位

3概念:线程(Thread)是进程中的一个实体,是可独立参与调度的基本单位

4属性:

并发

一个线程可以创建另一个

动态性(生命周期)

TCB(进程是PCB)

同一进程内的线程共享同一地址空间

一个进程的线程对另外一个进程是不可见的

线程的通信是基于全局变量进行的

5状态(与进程类似)

时间片轮转算法

优先权算法

1进程作为资源的申请与拥有单位,线程作为调度的基本单位

2线程在调度和切换上所花费的开销比进程小得多

3进程是独立拥有资源的的一个基本单位,线程只拥有一点点运行中必要的资源

4进程作为独立拥有资源的基本单位,线程是独立参与调度的基本单位

1概念:死锁是多个进程因竞争资源而造成的一种僵局,若无外力作用,这些进程都将永远不能再向前推进

2$$产生原因\begin{cases} 竞争资源\ 进程推进顺序非法(请求与释放资源顺序不当) \end{cases}$$

3$$产生死锁必要条件 \begin{cases} 互斥条件(进程互斥使用资源) \ 占有且等待条件(得不到需要的资源就不释放占有的资源)\ 不剥夺条件(进程不能从另一进程抢夺资源)\ 循环等待条件(每个进程都在等待另一个进程所持有的资源) \end{cases}$$

4对策:预防 避免 检测 解除

预防

(1)静态分配策略//破坏第二个必要条件

所谓静态分配是指一个进程必须在执行前就申请它所要的全部资源,并且直到它所要的资源都得到满足后才开始执行

(2)层次分配策略//破坏第四个必要条件

当一个进程获得了某一层的一个资源后,它想再申请该层中的另一个资源,必须先释放该层中的已占用资源。

避免

检测

*** 作系统中的每一时刻的系统状态都可以用进程—资源分配图来表示,进程—资源分配图是描述进程和资源间申请及分配关系的一种有向图,可用以检测系统是否处于死锁状态。

因为程序并发执行时,是多个程序共享系统中的各种资源,因而这些资源的状态是由多个程序来改变,致使程序的运行失去了封闭性。而程序一旦失去了封闭性也会导致其再失去可再现性。

一、程序的并发执行,是指两个或两个以上程序在计算机系统中同处理已开始执行且尚未结束的状态。

二、程序的并发执行具有以下特点:

1、并发程序在执行期间具有相互制约关系。

2、程序与计算不再一一对应。

3、并发程序执行结果不可再现。

三、 *** 作流程

在大多数计算问题中,仅要求 *** 作在时间上是部分有序的。有些 *** 作必须在其他 *** 作之后执行,另外有些 *** 作却可以并行地执行。如图32所示,其先后次序是:I1先于P1和I2;P1先于O1、P2和I3;O1先于O2,P3……部分有序使某些 *** 作的并行执行成为可能,如I2和P1,I3,P2与O1等 *** 作的执行可以在时间上互相重叠。

通常,程序的制约方式有如下两种。

(1)间接制约方式。

(2)直接制约方式。

无论是 *** 作系统自身的程序还是用户程序,通常总是存在一些相对独立、但又能并发执行的程序段。

为了合理利用系统资源,更好地发挥各种资源的效益,使各种物理设备之间的时间性限制条件减少到最低限度,最大限度地提高系统的效率,因而引出了多道程序方法。其实质是减少程序的顺序性,提高系统的并行性。

1、程序并发执行与顺序执行时产生的特性有:可分割性、失去封闭性、失去可再现性。

2、程序并发执行的主要特点是并发程序间具有相互制约的关系,程序并发执行失去了程序的封闭性和再现性,程序和机器执行程序的活动不再一一对应。

3、程序并发执行,就是系统中的各个部分不再以单纯的串行方式工作,在同一时刻系统中不是只有一个活动,而是存在许多并行活动。从程序的活动方面看,则可能有若干个作业程序同时或者相互穿插在系统中并发执行。这时,计算机不再是简单的顺序执行一道程序。也就是说,一道程序的前一 *** 作结束后,系统不一定立即执行其后续的 *** 作,而可能转而执行其他程序的某一 *** 作。

并发与并行是两个既相似而又不相同的概念:并发性,又称共行性,是指能处理多个同时性活动的能力;并行是指同时发生的两个并发事件,具有并发的含义,而并发则不一定并行,也亦是说并发事件之间不一定要同一时刻发生。

-------------------------------------------------------------

并发和并行的区别仅仅在发生时刻的不同吗?

举个例子理解一下,如:

假设有A、B 两个事件

并行:

如果A和B都在15:30同时发生,A 的运行时间为 5 分钟,B 的运行时间为 8 分钟

在前5分钟是并行,也包括并发,因为他们都是在同一时刻发生的

并发:

如果A在15:30发生,运行3分钟后,B事件发生,在以后的5分钟时间里,A和B 是并发的

-------------------------------------------------------------

并发,是在同一个cpu上同时(不是真正的同时,而是看来是同时,因为cpu要在多个程序间切换)运行多个程序。

并行,是每个cpu运行一个程序。

打个比方,并发,就像一个人(cpu)喂2个孩子(程序),轮换着每人喂一口,表面上两个孩子都在吃饭。

并行,就是2个人喂2个孩子,两个孩子也同时在吃饭。

在 *** 作系统中,并发是指一个时间段中有几个程序都处于已启动运行到运行完毕之间,且这几个程序都是在同一个处理机上运行,但任一个时刻点上只有一个程序在处理机上运行。

在关系数据库中,允许多个用户同时访问和更改共享数据的进程。SQL Server 使用锁定以允许多个用户同时访问和更改共享数据而彼此之间不发生冲突。

上面是百度百科上的回答 , 

通俗点的解释 , 一个冰箱 , 一家人在用 ,  最极端的情况 , 一家人在晚餐的时候 同一时间点都要从冰箱里面拿东西 , 也是排队拿, 但是交给电脑处理类似的逻辑 ,这就是错误的, 并发的存在就是保证这样的错误不会发生 ,

进程的定义:“进程”是 *** 作系统的最基本、最重要的概念之一。但迄今为止对这一概念还没有一个确切的统一的描述。下面给出几种对进程的定义描述。l进程是程序的一次执行。l进程是可以并行执行的计算。l进程是一个程序与其使用的数据在处理机上顺序执行时发生的活动。l进程是程序在一个数据集合上的运行过程。它是系统进行资源分配和调度的一个独立单位。2)进程的特征:动态性:是程序的一次执行;并发性:进程是可以并发执行;独立性:是系统进行资源分配和调度的一个独立单位;异步性:进程间的相互制约,使进程执行具有间隙;结构性:进程是具有结构的。;3)进程与程序的主要区别: (1)程序是永存的;进程是暂时的,是程序在数据集上的一次执行,有创建有撤销,存在是暂时的;(2)程序是静态的观念,进程是动态的观念;(3)进程具有并发性,而程序没有;(4)进程是竞争计算机资源的基本单位,程序不是。(5)进程和程序不是一一对应的: 一个程序可对应多个进程即多个进程可执行同一程序; 一个进程可以执行一个或几个程序

以上就是关于怎样理解进程并发执行的不可再现性全部的内容,包括:怎样理解进程并发执行的不可再现性、进程与线程、程序并发执行的时候为什么会失去封闭性和可再现性等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/9684250.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-30
下一篇2023-04-30

发表评论

登录后才能评论

评论列表(0条)

    保存