精华内容
下载资源
问答
  • 在多道程序设计的系统中同时存在着许多... 解决并发进程之间的错误关键就是解决共享变量的访问方式,当多个进程都想访问共享变量时,我们一定要管理好各个进程的使用规律,不然的话程序就会出错。采用PV操作,让相关进

        在多道程序设计的系统中同时存在着许多进程。他们可能同时装入主存,等待处理器的调度,这就形成的并发进程。对于单核处理器来说,并发进程并不是多个进程同时占用处理器同时执行,而是同时装入主存,至于进程什么时候被执行,这要看进程的调度策略啦! 谈到并发进程,我就想到进程的并发会产生许多错误,这些错误在我们在设计系统或者编写软件时都是尽量要避免的。 

        那么进程的并发执行为什么会产生错误那?归根到底是并发进程访问共享变量的事,当多个进程访问共享变量的过程中,就有可能会产生与时间有关的错误,或者是死锁。

        一、导图分析


       二、导图分析

       说到进程访问共享资源,我觉得首先先明白进程的同步与进程的互斥问题。

       1、进程的互斥:指当有若干个进程都要使用某一共享资源时,任何时候最多只允许一个进程去使用共享资源,其他要使用的进程必须等待,知道该资源的占用者释放了该资源。

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

       3、与时间有关的错误:多个进程共同执行时,交替的访问了共享变量,但是有一个进程由于自身原因或者外界原因被中断了后,稍后又接着执行,最后导致运行结果出错。

       例如:

       某小区有两扇门,其中一扇门是入口,另一扇门是出口,用一个计数器count显示在小区的人数,当有人进入时,由进程PIN实现计数加一,当有人退出时,由进程POUT减一。这两个进程如下

    <span style="font-family:KaiTi_GB2312;font-size:18px;">begin
         count: interge                                                               
         count: =0
    cobegin
    process PIN 
         R1: integer;
    begin
         R1:=count;
         R1:=R1+1;
         count: =R1;
    end ;
    
    process POUT 
         R2: integer;
    begin
         R2:= count;
         R2:=R2-1;
         count:=R2;
    end;
    coend;
    end;</span>
        假定某个时候的计数值count=n,这时有一个人要进入,正好有一个同时要出去,于是进程PIN和POUT同时都要执行,如果进程PIN和POUT都没有被打断,那么各自完成了count+1和count-1操作,count还是n,但是若果被打断了PIN操作,看下图



    这样执行过后,结果会变成n+1,这就是与时间有关的错误的实例。

        解决办法:采用PV操作,引进PV操作会引进一个叫临界区的名词,临界区是指并发进程中与共享变量有关的程序段。相关临界区是指并发进程中设计到相同变量的那些临界区。PV操作的原理是保证一个进程在临界区执行时,不让另一个进程进入相关临界区执行,即个进程对共享变量的访问是互斥的,这就不会造成与时间有关的错误。对于上面表格的一个例子来说,当进程PIN被打断后,POU不能访问共享变量count,直到PIN进程结束后才让POUT访问,这样最后的结果就正确了。

       三、小结

        解决并发进程之间的错误关键就是解决共享变量的访问方式,当多个进程都想访问共享变量时,我们一定要管理好各个进程的使用规律,不然的话程序就会出错。采用PV操作,让相关进程互斥的进入各自的临界区执行,这样就解决了并发进程间与时间有关的错误。好了,并发进程访问共享变量时,还会产生死锁,要想看死锁的形成原因及解决办法,请关注我的下一篇博客!

    展开全文
  • 进程之间的相互影响 并发进程相互之间可能是无关...进程执行与时间有关的错误 进程执行与时间有关的错误 进程的执行的速度不能由自己来控制,对于有交往的并发进程来说,可能有若干并发进程同时使用共享资源。即一个进

    进程之间的相互影响

    并发进程相互之间可能是无关的,也可能是有交往的

    • 一个进程的执行不影响其他进程的执行,且与其他进程的进展情况无关,则这些并发进程相互之间是无关的。
    • 一个进程的执行可能影响其他进程的执行结果,则说这些并发进程相互之间是有交往的,是有关的。

    有哪些原因使得一个进程的执行可能影响其他进程的执行结果?

    • 有交往的并发进程一定共享某些资源
    • 进程执行与时间有关的错误

    进程执行与时间有关的错误

    进程的执行的速度不能由自己来控制,对于有交往的并发进程来说,可能有若干并发进程同时使用共享资源。即一个进程一次使用尚未结束,另一个进程已经开始使用,形成交替使用共享资源的现象,如果不加以控制的换,可能出现与时间有关的错误,在共享资源(变量)时就会出现错误,得到不正确的结果。

    假设火车站售票系统有两个终端,运行进程T1和T2。
    Aj表示公共数据的余票数

    void Ti(int i){
        int xi;
        // 按照旅客订票要求找到Aj
        xi=Aj;
        if(xi>=1){
            xi=xi-1;
            Aj=xi;
            // 输出一张票
        }
        else{
            // 票已经售完
        }
    }
    

    如果
    x1=Aj;
    x2=Aj;
    当一个用户同时要买票,当还没有付款的时候,也就是票数并没有减去。另一个用户要买票,此时的余票数仍然是一开始的数值,这样两个用户买完票之后,票数最后只减了1。出现了问题

    另一个例子

    主存管理问题
    两个并发进程borrow和return分别负责申请和归还主存资源
    x表示现有的空闲主存容量,B表示申请或者归还的主存量。

    int x=1000;
    cobegin
    
    void borrow(int B){
        if(B>x){
            // 申请进程进入等待队列等主存资源
        }else{
            x=x-B;
            // 修改主存分配表,申请进程获得主存资源
        }
    }
    
    void return(int B){
        x=x+B;
        // 修改主存分配表
        // 释放等主存资源的进程
    }
    
    coend;
    

    运行过程中,发现B>x,但是还没有进入下一步,就运行了return
    于是此时还没有进程进入等待,return成了空操作,以后调用borrow时候,已经没有其他进程来归还主存资源了。

    从以上的例子可以看出,由于并发程序的随机性,一个进程对另一个进程的影响是不可预测的。由于他们共享了资源,在不同时刻交替访问资源的时候可能造成结果的不正确。

    展开全文
  • 与时间有关的错误可以这样描述:程序并发执行时若共享了公共变量,其执行结果将与并发程序执行的相对速度有关,即给定相同的初始条件,也可能会得到不同的结果,此为与时间有关的错误。 转载于:...

    与时间有关的错误可以这样描述:程序并发执行时若共享了公共变量,其执行结果将与并发程序执行的相对速度有关,即给定相同的初始条件,也可能会得到不同的结果,此为与时间有关的错误。

    转载于:https://www.cnblogs.com/luo841997665/p/4663095.html

    展开全文
  • 程序顺序执行和并发执行 顺序执行:按照顺序进行执行。 顺序性:严格按照顺序执行,前一个结束后一个才能执行 封闭性:程序运行时独占资源,只有程序本身才能改变机器各种资源状态。 可再现性:结果执行速度...

    程序的顺序执行和并发执行

    顺序执行:按照顺序进行执行。

    • 顺序性:严格按照顺序执行,前一个结束后一个才能执行
    • 封闭性:程序运行时独占资源,只有程序本身才能改变机器各种资源的状态。
    • 可再现性:结果与执行速度无关,只与初始条件有关。给定相同的输入,输出结果一定相同。

    顺序执行给程序员检测和纠正错误带来便利。

    并发执行:多道程序系统执行环境的变化可以引起多道程序的并发执行。一组在逻辑上相互独立的程序或程序段在执行过程中其执行时间在客观上相互重叠,即一个程序尚未结束、另一个程序的执行已经开始的执行方式。
    链接:多道程序系统的具体概念

    • 间断性:共享资源的使用使得在并发程序之间有相互制约。相互制约导致并发程序具有:执行-暂停-执行 这种间断性的活动规律。
    • 失去封闭性:多个程序共享资源,执行时必定会受到其他程序的影响。
    • 不可再现性:失去封闭性,也同时失去了不可再现性。资源的利用状况和环境有关,不能保证每次同一个输入有着相同的输出。

    进程的概念

    程序的概念:源代码是静态文本,通过编译软件对源代码进行编译之后得到程序。
    进程的定义:程序是静态的,程序每一次执行的动态过程都不一样。只用程序这一概念,只能对并发程序进行静止的、孤立的研究,不能深刻地反映它们活动的规律和状态变化。所以有了进程这一说法。程序——静态,进程——动态,进程就是程序的执行过程

    进程特性

    动态性:由创建而产生、由调度而执行、因得不到资源而暂停执行、由撤销而消亡。进程具有一定的生命周期。

    并发性:并发性是指多个进程实体同存与主存中,能在一段时间内同时运行,并发性是进程和操作系统的重要特征。引入并发执行的目的是使其程序能够和其他进程的程序并发执行,但是程序本身并不能并发执行。

    独立性:进程实体是一个独立运行的基本单位,也是系统中独立获得资源和独立调度的基本单位。进程和程序并非一一对应,一个程序在不同的数据集上就能构成不同的进程。

    异步性:进程按照各自独立的,不可预知得速度向前推进

    结构特征:进程实体是由:程序段、数据段及程序控制快三部分组成

    进程的基本状态和转换

    进程具有异步性,所以有 执行-暂停-执行 的活动规律。
    一个进程活动期间有三种基本状态:就绪状态、运行状态、等待状态。

    1)就绪状态:进程已经分配到只差CPU以外的所有必要资源。在系统中,多个进程同时处于就绪状态排成的队列叫做就绪队列。

    2)运行状态:运行状态是指进程已获得处理器,其程序正在执行。单处理器系统中只能有一个进程。

    3)等待状态:进程因发生某些事件(比如请求输入输出、申请缓存空间等)而暂停执行的状态。多个进程同时处于等待状态的队列叫等待队列,多个等待原因可以排成多个队列。

    在这里插入图片描述

    • (1)就绪→运行状态
      处于就绪状态的进程,当进程调度程序为之分配了处理器后,该进程便由就绪状态转换为运行状态。正在执行的进程也称为当前进程。
    • (2)运行→等待状态
      正在执行的进程因出现某事件而无法执行时,就释放处理器转换为等待状态。例如,进程请求访问临界资源,而该资源正被其它进程访问,则请求该资源的进程将由运行状态转变为等待状态。
    • (3)运行→就绪状态
      在分时系统中,正在执行的进程,如因时间片用完而被暂停执行,该进程便由运行状态转变为就绪状态。又如,在抢占调度方式中,一个优先权高的进程到来后,可以抢占一个正在执行的优先权低的进程的处理器,这时,该低优先权进程也将由运行状态转换为就绪状态。
    • (4)等待→就绪状态
      处于等待状态的进程在等待事件结束后就转换成就绪状态,等待处理器的分配。

    有些操作系统中增加了两种基本状态:新状态和终止状态
    在这里插入图片描述

    • 新状态指的是刚刚建立,还没有将它送入就绪队列时的状态。
    • 终止状态是指的是一个进程已经结束,但是还没有将它撤销时的状态。

    进程控制块

    每一个进程都有一个进程控制块(PCB)。进程控制块是操作系统用与记录和刻画进程状态及有关信息的数据结构,也是操作系统控制和管理的主要依据。

    作用:使一个在多道程序下不能独立运行的程序(含数据),成为一个能独立运行的基本单位、一个能与其他进程并发执行的进程。

    操作系统是根据PCB来对并发执行的进程进行控制和管理的

    在这里插入图片描述
    标识信息:每一个进程都有一个唯一的标识符。

    说明信息:说明本进程的情况。

    现场信息:当进程由于某种原因让出处理器的时候,把与处理器有关的各种现场信息保留下来,以便于后续该进程重新获得处理器之后能够把保留的现场信息重新置入处理器的想过寄存器之中继续执行。

    管理信息:对进程进行管理和调度的信息。

    进程队列

    定义:把处于相同状态的进程链接在一起,形成的队列就叫做进程队列。处于就绪状态的叫就绪队列,等待状态的叫等待队列。

    链接方式实现进程队列
    进程控制块能够标识进程的存在,并动态刻画进程的特性,所以进程队列可以用进程控制块的链接来形成。

    链接方式有:单向链接和双向链接。
    在这里插入图片描述

    • 一个进程从所在的队列中退出称为“出队”
      一个进程能被选中占用处理器时,就从就绪队列中退出成为“执行态”

    • 一个进程进入到指定的队列中称“入队”
      进程要求读磁盘上的信息而成为等待磁盘传输信息的状态,便进入等待队列。

    索引方式形成进程队列
    建立索引表,表内填有各个PCB的地址
    在这里插入图片描述

    展开全文
  • 与时间有关的错误 进程互斥与进程同步 互斥与临界区 PV操作与进程互斥 问题 信号量的构思 管程概念的提出 霍尔管程的实现方法 进程通信的概念 基于流的进程通信 远程过程调用RPC 死锁的产生 定义 死锁:每一个...
  • 多线程并发知识

    2020-08-13 15:07:03
    竞态:多线程编程中一个问题,对于同样的输入,程序的输出有时是正确的,有时是错误的,这种计算结果的正确性与时间有关的现象被成为竞态。 线程安全和非线程安全: 一个类在单线程环境下能够正常运行,并且在多线程...
  • 并发进程执行时一定会产生与时间有关的错误吗?为什么。 与时间有关的错误是指两个程序都以各自的速度交叉着运行,同时访问共享信息导致的错误。 比如程序A对共享变量p执行+1操作后,休眠一秒输出变量p,程序B对共享...
  • 那么出现问题地方便网关服务如php-fpm配置有关。max_children最大子进程数,在高并发请求下,达到php-fpm最大响应数,后续请求就会出现502错误。可以通过netstat命令来查看当前连接数。 request_terminate_...
  • 那么出现问题地方便网关服务如php-fpm配置有关。max_children最大子进程数,在高并发请求下,达到php-fpm最大响应数,后续请求就会出现502错误。可以通过netstat命令来查看当前连接数。 request_terminate_...
  • 一、单选题 (题数:15,共 60.0 分) 1 若信号量S的初值为2,当前值为-1,则表示有( )个等待进程。 (4.0分)4.0 分 A、 0 B、 1 C、 ...为了使两个进程能同步运行,最少...3并发进程执行时可能会出现与时间有关的错误...
  • 文章目录并发进程前驱图程序的顺序执行顺序程序特性并发程序特性程序并发执行的条件读集与写集Bernstein条件与时间有关的错误进程互斥共享变量临界区域共享变量和临界区域的表示进程互斥的定义实现互斥的要求调度...
  • 本章考核知识点 :1、进程的顺序性与并发性 2、与时间有关的错误 3、相关临界区 4、进程的互斥 5、进程的同步 6、进程通信 7、线程的概念 本章自学要求 :理解“进程”是操作系统中的基本执行单位,在多道程序...
  • Java多线程有关零散笔记收录等待通知机制线程休眠、停止一段时间死锁之:输入流与错误流问题Synchronized可重入机制详解New过程重排序:隐式地this逸出多线程安全发布理解不变性理解类锁和对象锁作用范围守护线程...
  • 对于Louis而言,他全部职业经验几乎都微软SQL Server有关,从早期版本一直到当前最新版本Beta版。Louis是一本讲数据库设计4个版本主要作者。Louis主要兴趣领域是数据库架构和用T-SQL编码,并且,...
  • 对于Louis而言,他全部职业经验几乎都微软SQL Server有关,从早期版本一直到当前最新版本Beta版。Louis是一本讲数据库设计4个版本主要作者。Louis主要兴趣领域是数据库架构和用T-SQL编码,并且,...
  • 这里说这个执行数据写入到临时文件的时间点是可以通过配置来自己确定,通过配置redis 在 n 秒内如果超过 m 个 key 被修改这执行一次 RDB 操作。这个操作就类似于在这个时间点来保存一次 Redis 所有数据,一次...
  • 1.同步与互斥的理解 进程的同步: 一个进程的执行,依赖于另一个进程... 两个或两个以上的进程,不能同时进入关于同一组共享变量的临界区域,否则可能发生与时间有关的错误,这种现象被称作进程互斥·也就是说,...
  • 页面置换算法

    2018-05-25 23:14:26
    实验要求:模拟实现用同步机构避免并发进程执行时可能出现的与时间有关的错误。进程是程序在一个数据集合上运行的过程,进程是并发执行的,也即系统中的多个进程轮流地占用处理器运行。我们把如干个进程都能进行访问...
  • 进程及进程管理

    2018-12-16 17:38:14
    操作:数据的处理规则,每一个操作都有操作对象 程序:为解决某一问题而设计的一系列指令的集合 顺序程序的特点:顺序性,封闭性(程序执行所用的变量等不受外界影响),...与时间有关的错误:程序并发执行时...
  • 模拟实现用同步机构避免发生进程执行时可能出现的与时间有关的错误。 我们把若干个进程都能进行访问和修改的那些变量称为公共变量。由于进程是并发执行的,所以,如果对进程访问公共变量不加限制,那么就会产生...
  • 模拟实现用同步机构避免发生进程执行时可能出现的与时间有关的错误。 二、实习目的 进程是程序在一个数据集合上运行的过程,进程是并发执行的,也即系统中的多个进程轮流地占用处理器运行。 我们把若干个进程都能...
  • 模拟实现同步机构,以避免发生进程执行时可能出现的与时间有关的错误。 二、实习目的 当进程并发执行时,如果对进程访问的共享变量不加限制,就会产生“与时间有关”的错误。为了防止这类错误,系统必须用同步机构来...
  • 模拟实现同步机构避免并发进程执行时可能出现的与时间有关的错误。 二. 实验目的 进程是程序在一个数据集合上运行的过程。进程是并发执行的,也即系统中的多个进程轮流的占用处理器运行。 我们把若干个进程都能进行...
  • 与时间有关的错误:一是结果不唯一,二是永远等待 进程的关系:竞争与协作;(同步) 互斥会产生死锁和饥饿问题;进程同步指为完成共同任务的并发进程需要协调它们的活动,需要在某些位置上排定执行的先后次序而...
  • 进程互斥和同步

    千次阅读 2018-10-09 14:40:43
    对于一组交往的并发进程,执行的相对速度无法相互控制,各种与时间有关的错误就可能出现,表现形式: 结果不唯一 永远等待 什么叫互斥? 一组并发进程中的一个或多个程序段,因共享某...
  • 同步机制(上)

    2017-07-25 23:05:00
    进程特性: 并发: 1.进程的执行是间断性的(进程由于调度问题...由于并发,进程可能会出现与时间有关的错误: 进程get,copy,put并发执行,f s t g为缓冲区,其中s t只能存放一个数据  假如get进程执行了...
  • 《操作系统原理设计》全本

    热门讨论 2012-02-14 15:54:16
    5.1.2 与时间有关的错误 106 5.1.3 进程的交互(Interaction Among Processes)——协作和竞争 108 5.2 临界区管理 109 5.2.1 互斥和临界区 109 5.2.2 临界区管理的尝试 110 5.2.3 实现临界区管理的软件方法 111 5.2.4...
  • 进程同步和互斥

    2021-06-05 20:52:11
      两个或两个以上的进程,不能同时进入关于同一组共享变量的临界区域,否则可能发生与时间有关的错误,这种现象被称作进程互斥· 也就是说,一个进程正在访问临界资源,另一个要访问该资源的进程必须等待。...
  • 操作系统 - 线程

    2019-04-16 10:51:09
    失去封闭性,程序运行结果不可再现性 与时间有关的错误:没有实现互斥共享 静态程序结构不能支持并发运行的实现 进程管理功能 进程控制 进程互斥与同步 互斥方式多个进程在共享临界资源时应采用互斥方式访问 ...

空空如也

空空如也

1 2 3 4 5 ... 8
收藏数 146
精华内容 58
关键字:

并发执行与时间有关的错误