精华内容
下载资源
问答
  • 模拟进程的并发执行

    2011-12-05 21:51:33
    进程的并发性: 指多个进程实体同时存在于内存中,能在一段时间内同时运行。 引入进程的目的就是为了使进程并发执行,以提高资源利用率,所以并发性是进程的重要特征,也是OS重要特征
  • 我们知道,在没有OS的计算机或者单道批处理系统中,程序执行的方式是顺序执行。在多道批处理系统中,多道程序共享系统资源、并发执行,因此引入了进程的概念。 所以,在学习进程之前有必要先对程序的 顺序执行 和 ...

    我们知道,在没有OS的计算机或者单道批处理系统中,程序执行的方式是顺序执行。在多道批处理系统中,多道程序共享系统资源、并发执行,并发执行出现的问题也引入了进程的概念。 所以,在学习进程之前有必要先对程序的 顺序执行并发执行方式简单的了解


    一、前驱图的概念

    所谓前驱后继,其实也就是发生时间的先后关系。

    作用: 用于描述程序执行的先后顺序。
    本质: 是一个有向无循环图,可记为 DAG(Directed Acyclic Graph)(重点:有向无循环)

    在这里插入图片描述

    结点表示: 一个进程、一个程序段 或 一条语句。
    有向边表示: 前驱关系。箭头所指的是后继,如图中 P2 是 P1 的后继。
    Pi --> Pj: Pi 存在指向 Pj 的边,称 Pi 是 Pj 的直接前驱,Pj 是 Pi 的直接后继。表示 Pj 在执行前 Pi 必须完成。
    终止节点: 没有后继的结点,如图中的 P9。


    二、程序的顺序执行与并发执行

    1. 顺序执行

    (1)顺序执行的前驱图

    就是“一条直线”,因为每个时刻都只能运行一个程序。

    在这里插入图片描述
    (2)程序顺序执行的特征

    ① 顺序性
    指处理机严格地按照程序所规定的的顺序执行。

    ② 封闭性
    指程序在封闭的环境下运行,即程序运行时独占全机资源(没有其它程序一起共享),资源的状态只有本机才能改变。

    ③ 可再现性
    只要程序执行时的环境和初始条件相同,当程序重复执行时,都可获得相同的结果。


    2. 并发执行

    (1)并发执行的设计与前驱图

    Parbegin 与 Parend 里面的部分并发执行,begin 和 end 里面的语句顺序执行。
    所以图中 只有当 紫色的 Parbegin 里面的 P1 和 P2 并发执行完之后,才能执行接下来的 P4。

    在这里插入图片描述


    (2)程序并发执行时的特征(注意是“程序”,不是“进程”!!!我刚学时就搞混了)

    ① 间断性
    也就是一个程序的整个执行过程是“走走停停”的,由于共享资源,这些并发的程序相互制约,有时需要进行等待,造成了 “执行——暂停——执行” 的间断性活动规律。

    ② 失去封闭性
    由于并发的程序之间共享系统资源,导致其中任一程序在运行时,其环境都必然会收到其它程序的影响,所以就失去了运行环境的封闭性。

    ③ 不可再现性
    程序在并发执行时,由于失去了封闭性,从而也失去了不可再现性。换句话说,程序在多次执行后,虽然它们执行的环境和初始条件是相同的,但得到的结果却各不相同。
    比如 A 和 B 两个程序共享变量N,A 中会让 N+1 ,B 中会让 N=0 。那么 N 最后的数值肯定跟 A 和 B 执行的情况(比如执行顺序什么的)有关系。

    此时还未引入进程的概念。如果每次执行的结果都不同,岂不是失去了程序的意义,因此,人们引入了“进程”的概念,并且设计了相应的进程同步机制,使得程序在并发同时也能独立地运行。对于进程的描述,在下一章【OS笔记 6】中。

    展开全文
  • 操作系统所具有四大特征也都是基于进程而形成,并可从进程的观点来研究操作系统。显然,在操作系统中,进程是一个极其重要概念。 二、程序顺序执行及其特征 顺序执行:通常可以把一个应用程序分成若干个...

    一、引言

    在传统的操作系统中,程序并不能独立运行,作为资源分配和独立运行的基本单位都是进程。操作系统所具有的四大特征也都是基于进程而形成的,并可从进程的观点来研究操作系统。显然,在操作系统中,进程是一个极其重要的概念。

    二、程序的顺序执行及其特征

    顺序执行:通常可以把一个应用程序分成若干个程序段,在各程序段之间,必须按照某种先后次序顺序执行,仅当前一操作(程序段)执行完后,才能执行后继操作。

    程序顺序执行时的特征

    (1) 顺序性:处理机的操作严格按照程序所规定的顺序执行,即每一操作必须在上一个操作结束之后开始。

    (2) 封闭性:程序是在封闭的环境下执行的,即程序运行时独占全机资源,资源的状态(除初始状态外)只有本程序才能改变它。程序一旦开始执行,其执行结果不受外界因素影响。

    (3) 可再现性:只要程序执行时的环境和初始条件相同,当程序重复执行时,不论它是从头到尾不停顿地执行,还是“停停走走”地执行,都将获得相同的结果。

     程序顺序执行时的特性,为程序员检测和校正程序的错误带来了很大的方便。

    前趋图

        前趋图(Precedence Graph)是一个有向无循环图,记为DAG(Directed Acyclic Graph),用于描述进程之间执行的前后关系。图中的每个结点可用于描述一个程序段或进程,乃至一条语句;结点间的有向边则用于表示两个结点之间存在的偏序(Partial Order,亦称偏序关系)或前趋关系(Precedence Relation)“→”。 →={(Pi,Pj)|Pi must complete before Pj may start},如果(Pi,Pj)∈→,可写成Pi→Pj,称Pi是Pj的直接前趋,而称Pj是Pi的直接后继。在前趋图中,把没有前趋的结点称为初始结点(Initial Node),把没有后继的结点称为终止结点(Final Node)。此外,每个结点还具有一个重量(Weight),用于表示该结点所含有的程序量或结点的执行时间,前趋图中必须不存在循环。

    程序的并发执行及其特征

       3.1  输入程序在输入第一个程序后,在计算程序对该程序进行计算的同时,可由输入程序再输入第二个程序,从而使第一个程序的计算操作可与第二个程序的输入操作并发执行。一般来说,输入程序在输入第i+1个程序时,计算程序可能正在对第i个程序进行计算,而打印程序正在打印第i-1 个程序的计算结果。例如,我们有一批作业需要批改,但是需要对一个作业的输入、计算和打印三个操作,必须顺序执行。下图表示出了输入、计算和打印这三个程序对一批作业进行处理的情况。

        在该例中存在下述前趋关系:Ii→Ci,Ii→Ii+1,Ci→Pi,Ci→Ci+1,Pi→Pi+1而 Ii+1和Ci及Pi-1是重迭的,亦即在Pi-1和Ci以及Ii+1 之间,可以并发执行。

     

     

    程序并发执行时的特性

             程序的并发执行,虽然提高了系统吞吐量,但也产生了下述一些与程序顺序执行时不同的特征。

    1) 间断性

         程序在并发执行时,由于它们共享系统资源,以及为完成同一项任务而相互合作,致使在这些并发执行的程序之间,形成了相互制约的关系。例如,图2-3 中的I、C和P是三个相互合作的程序,当计算程序完成Ci-1的计算后,如果输入程序I尚未完成Ii的处理,则计算程序就无法进行Ci的处理,致使计算程序必须暂停运行。又如,当打印程序完成Pi的打印后,若计算程序尚未完成Ci+1的计算,则打印程序就无法对Ci+1的计算结果进行打印。一旦使程序暂停的因素消失后(如Ii已处理完成),计算程序便可恢复执行对Ci的处理。简而言之,相互制约将导致并发程序具有“执行—暂停—执行”这种间断性的活动规律。

    2) 失去封闭性

         程序在并发执行时,是多个程序共享系统中的各种资源,因而这些资源的状态将由多个程序来改变,致使程序的运行失去了封闭性。这样,某程序在执行时,必然会受到其它程序的影响。例如,当处理机这一资源已被某个程序占有时,另一程序必须等待。

    3) 不可再现性

        程序在并发执行时,由于失去了封闭性,也将导致其再失去可再现性。例如,有两个循环程序A 和B,它们共享一个变量N。程序A 每执行一次时,都要做N:=N+1 操作;程序B每执行一次时,都要执行Print(N)操作,然后再将N 置成“0”。程序A和B以不同的速度运行。这样,可能出现下述三种情况(假定某时刻变量N 的值为n)。

    (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。

     上述情况说明,程序在并发执行时,由于失去了封闭性,其计算结果已与并发程序的执行速度有关,从而使程序的执行失去了可再现性,亦即,程序经过多次执行后,虽然它们执行时的环境和初始条件相同,但得到的结果却各不相同。

     

     

    转载于:https://www.cnblogs.com/596014054-yangdongsheng/p/9650702.html

    展开全文
  • (3)进一步认识并发进程的实质和特征 实验仪器及材料: 微型计算机、红帽子Linux系统 实验内容: 任务1:进程创建 编写一段程序,让父进程产生两个子进程,父进程显示字符“a”、两个子进程,分别显示...

    实验0 Linux用户界面的使用

    实验一 进程的创建与并发执行

    实验目的:

    (1)熟悉Linux工作环境和GCC工具

    (2)加深对进程概念的理解,明确进程和程序的区别

    (3)进一步认识并发进程的实质和特征

    实验仪器及材料:

    微型计算机、红帽子Linux系统

    实验内容:

    任务1:进程创建

    编写一段程序,让父进程产生两个子进程,父进程显示字符“a”、两个子进程,分别显示字符“b”、“c”。

    #include<stdio.h>

    main(){

    int p1, p2;

    while ((p1=fork())==-1);/*父进程创建第一个进程,直到成功*/

    if (p1==0) /*0返回给子进程1*/

    putchar(‘b’); /*P1的处理过程*/

    else { /*正数返回给父进程(子进程号)*/

    while ((p2=fork())==-1); /*父进程创建第二个进程,直到成功*/

    if (p2==0)/* 0返回给子进程2*/

    putchar(‘c’); /*P2的处理过程*/

    else putchar(‘a’); /*P2创建完成后,父进程的处理过程*/

    }

    }

    运行程序,观察并分析运行结果。

    任务2:将上述的输出字符改为输出较长的字符串,观察进程并发执行,分析执行结果。

    #include<stdio.h>

    main(){

    int p1, p2,i;

    while((p1=fork())==-1); /*父进程创建第一个进程,直到成功*/

    if (p1==0)

    for (i=0;i<500;i++)

    printf(“childA%d\n”,i)

    else {

    while ((p2=fork())==-1); /*父进程创建第二个进程,直到成功*/

    if (p2==0)

    for (i=0;i<500;i++)

    printf(“childB%d\n”,i)

    else /*P2创建完成后,父进程的处理过程*/

    for (i=0;i<500;i++)

    printf(“parent%d\n”,i);

    }

    }

    运行程序,观察并分析运行结果。

    本实验涉及到的系统调用:

    fork( ) ,创建一个新进程。

    系统调用格式:

    pid=fork( )

    fork( )返回值意义如下:

    0:在子进程中,pid变量保存的fork( )返回值为0,表示当前进程是子进程。

    >0:在父进程中,pid变量保存的fork( )返回值为子进程的id值(进程唯一标识符)。

    -1:创建失败。

    如果fork( )调用成功,它向父进程返回子进程的PID,并向子进程返回0,即fork( )被调用了一次,但返回了两次。此时OS在内存中建立一个新进程,所建的新进程是其父进程(parent process)的副本,称为子进程(child process)。子进程继承了父进程的许多特性,并具有与父进程完全相同的用户级上下文。父进程与子进程并发执行。

    思考题:(回答写在实验报告上)

    1 当新创建进程开始执行时,指令指针的起始位置在哪里?

    2 如果将任务1改为:编写一段程序,让父进程创建一个子进程,然后父进程显示字符“a”;子进程创建一个子子进程,然后显示字符“b”;子子进程显示字符“c”。如何改写源程序?(实验报告上给出完整的源码,并在机器上运行。)

    展开全文
  • //两个或更多进程在协作时需保持互斥 //进程的并发执行特征 //P,V操作 #include <sys.h>semaphore mutex=1;int x; void process_one() { int y,z; P(mutex); //wait(mutex); x=1; y=0; if(x>=1) y=y+1; z=y;
    /*
    两个或更多进程在协作时需保持互斥
    进程的并发执行特征
    P,V操作
    */
    #include <sys.h>
    
    semaphore mutex=1;
    
    int x;
    void process_one()
    {
        int y,z;
        P(mutex);
        //wait(mutex);
        x=1;
        y=0;
        if(x>=1)
            y=y+1;
        z=y;
        V(mutex);
        //signer(mutex);
        return(z);
    }
    
    void process_two()
    {
        int y,z;
        P(mutex);
        x=0;
        y=0;
        if(x<=1)
            y=y+2;
        z=y;
        V(mutex);
        return(z);
    }
    //进程间的同步
    //生产者与消费者之间的关系
    #include <xinu.h>
    
    void produce(sid32,sid32),consume(sid32,sid32);
    int32 n = 0;
    
    void main(void)
    {
        sid32 prodeced,consumed;
        consumed = semcreate(0);
        prodeced = semcreate(1);
        resume(create(consume,1024,20,"cons",2,consumed,prodeced));
        resume(create(produce,1024,20,"prod",2,consumed,prodeced));
    }
    
    void produce(sid32 consumed,sid32 prodeced)
    {
        int32 i;
        for(i=1;i<=2000;i++)
        {
            wait(consumed);
            n++;
            signal(prodeced);
        }
    }
    
    void consume(sid32 consumed,sid32 prodeced)
    {
        int32 i;
        for(i=1;i<=2000;i++)
        {
            wait(prodeced);
            printf("n = %d\n",n);
            signal(consumed);
        }
    }
    
    展开全文
  • 理解并发进程

    2019-04-17 21:01:00
    具有以下特征:1、执行的顺序性(即一个程序在处理器上是严格按照顺序执行的,每个操作必须在一个操作开始之前结束)。2、环境的封闭性(程序运行独占全机资源,注意,是全机资源!后面我们可以看到和并发设...
  • 1. 实现多进程(线程)程序编码,程序须要体现出多线程的并发执行的特征:运行结果无序、不可重现 2. 在上述基础上,考虑为多线程设置同步机制,程序须要体现出同步多线程的特点,即运行结果的可再现性 四、实验提示...
  • 进程的特征与状态

    2018-09-15 13:41:00
    2.1.4 进程的特征与状态1. 进程的特征和定义 ...为使程序能并发执行,且为了对并发执行的程序加以描述和控制,人们引入了“进程”的概念。为了能较深刻地了解什么是进程,我们将先对进程的特征加以描述。...
  • 进程的特征:动态性,并发性,独立性,异步性 注意:异步性是指进程是按异步方式运行的,即按各自独立的、不可预知的速度向前推进。 进程的基本状态: 就绪,执行,阻塞(有的课本加了创建状态和终止状态。个人感觉...
  • 线程与进程的特征及区别定义及特征进程  指在系统...2.并发性:任何进程都可以同其他进程一起并发执行。 3.独立性:进程是一个能独立运行的基本单位,同时也是系统分配资源和调度的独立单位。 4.异步性:由于进程间的
  • 四、进程的特征 动态性:进程是程序的一次执行过程,是动态地产生、变化和消亡的 并发性:内存中有多个进程实体,各进程并发执行进程是资源分配、接受调度的基本单位 独立性:进程是能独立运行、独立获得...
  • 进程的定义及特征

    千次阅读 2018-03-08 09:40:06
    一、定义:进程是程序的一次执行进程是可以和别的计算并行执行进程是程序在一个数据集合上运行的过程,它是系统进行资源分配和调度的一个独立...异步性:由于进程间的相互制约,使进程具有执行的间断性,即进程按...
  • 04进程的特征和概念

    2021-01-08 08:02:14
    1进程的概念和特征:更好地描述和控制程序的并发执行,实现操作系统的并发性和共享性。配置专门数据结构:进程控制块PCB.PCB是进程存在唯一标志 2、进程特征:动态性(最基本特征)、并发性、独立性、异步性、结构...
  • 异步性:由于进程间的相互制约,使进程具有执行的间断性,即进程按各自独立的、不可预知的速度向前推进结构特征进程由程序、数据和进程控制块三部分组成。多个不同的进程可以包含相同的程序:一个程序在不同...
  • 进程具有的特征:动态性:进程是程序的一次执行过程,是临时的,有生命期的,是动态产生,动态消亡的并发性:任何进程都可以同其他进行一起并发执行独立性:进程是系统进行资源分配和调度的一个独立单位结构性:进程...
  • 进程的概念和特征

    2017-08-10 00:09:38
    进程的概念 在多道程序环境下,允许多个程序并发执行,...为了使参与并发执行的程序(含数据)能独立地运行,必须为之配置一个专门的数据结构,称为进程控制块(Process Control Block, PCB)。系统利用PCB来描述进程
  • 进程的并发与并行,三种状态

    千次阅读 2020-03-17 09:23:30
    进程的特征: 1.动态性,是进程最基本的特性,可表现为由创建而产生,由调度而执行,因得不到资源而暂停执行,以及由撤销而消亡,因而进程由一定的生命期。 2.并发性,是进程的重要特征,同时也是OS的重要特征。引入...
  • 程序并发执行的描述4.采用并发程序设计的目的练习题 2.2 进程的描述1. 进程( Process )的定义2. 进程的特征3. 进程与程序的区别练习题 4、进程的基本状态-三态模型练习题 5、五态模型6、七态模型练习题 7...
  • 进程进程概念进程的特征程序和进程的差别进程控制块1.进程的组成2.Linux中进程相关指令进程的状态 进程概念 进程程序的一个执行实例,正在执行的程序。 它是可执行程序关于数据集合的一次运行活动。 内核观点:进程...
  • 进程并发 操作系统

    2018-09-05 23:10:49
    进程并发是指:再多道程序系统中,由于内存中...程序并发执行的特征: 间断性:由于共享系统资源,以及为完成同一项任务而相互合作,致使在这些并发执行的程序之间形成了相互制约的关系。 失去封闭性:资源共享...
  • 特征:只有不存在前趋关系程序之间才有可能并发执行,否则无法并发执行。 例:输入程序、计算程序和打印程序之间,存在着Ii->Ci->Pi前趋关系。对一批作业进行处理,输入程序I1在输入第一次数据后,由计算...
  • 题目来源:王道2020计算机操作系统,资料来源:王道...在多道程序环境下,允许多个程序并发执行,此时它们将失去封闭性,并具有间断性及不可再现的特征。为此引入进程的概念,以便更好地描述和控制程序的并发执行...
  • 其实,我只是把 PPT Ctrl+C、Ctrl+V 了一下(捂脸) 4.1 并发进程 4.1.1 顺序程序与并发进程 1)顺序程序 ...2)顺序程序的特征 顺序性执行 封闭性,独占资源 确定性,即可再现性 3)并发进程 **并...
  • 进程定义进程是允许并发执行的程序在某个数据集合上的运行过程。进程是由:正文段,用户数据段,进程控制块共同组成的执行环境。正文段:存放被执行的机器指令。用户数据段:进程在执行过程中是直接进行操作的用户...
  • 进程的调度和执行

    2019-04-13 15:30:13
    进程是一个具有一定独立功能的程序关于某个数据集合的一次可以并发执行的运行活动。 进程与程序的关系:(了解) 进程是动态的,程序是静态的。进程是暂时的,程序是永久的。进程的组成包括程序、数据和进程控制...
  • 什么是进程 进程是指一个程序在一个数据集上的动态执行过程(程序执行过程的抽象) 进程包含 程序:我们通过程序来描述一个进程所要执行的内容以及...进程执行的三种状态:阻塞/运行/就绪 1.进程执行过程中出...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,196
精华内容 478
关键字:

并发进程执行的特征