精华内容
下载资源
问答
  • 并发三大特性
    2022-01-29 14:49:15

    并发三大特性

    可见性、原子性、有序性。

    可见性

    当一个线程修改了共享变量的值,其他线程能够看到修改的值。Java内存模型是通过在变量修改后将新值同步回主内存,在变量读取前从主内存刷新变量值这种依赖主内存作为传递媒介的方法来实现可见性。如何保证可见性?

    • 通过 volatile 关键字保证可见性
    • 通过内存屏障保证可见性
    • 通过 synchronized 关键字保证可见性
    • 通过 lock 保证可见性
    • 通过 final 关键子保证可见性

    有序性

    即程序执行的顺序按照代码的先后顺序执行。JVM存在指令重排,所以存在有序性的问题。如何保证有序性?

    • 通过 volatile 关键字保证有序性
    • 通过内存屏障保证有序性
    • 通过 synchronized 关键字保证有序性
    • 通过 lock 保证有序性

    原子性

    一个或多个操作,要么全部执行且在执行过程中不被任何因素打断,要么全部不执行。在Java 中,对基本数据类型的变量的读取和赋值操作是原子性操作(64位处理器)。不采取任何的原子性保障措施的自增操作并不是原子性的。 如何保证原子性?

    • 通过 synchronized 关键字保证原子性
    • 通过 lock保证原子性
    • 通过cas保证原子性

    并发和并行

    目标都是最大化CPU的使用率
    并行(parallel)指在同一时刻,有多条指令在多个处理器上同时执行。所以无论从微观还是从宏观来看,二者都是一起执行的。
    并发(concurrency)指在同一时刻只能有一条指令执行,但多个进程指令被快速的轮换执行,使得在宏观上具有多个进程同时执行的效果,但在微观上并不是同时执行的,只是把时间分成若干段,使多个进程快速交替的执行。
    并行在多处理器系统中存在,而并发可以在单处理器和多处理器系统中都存在,并发能够在单处理器系统中存在是因为并发是并行的假象,并行要求程序能够同时执行多个操作,而并发只是要求程序假装同时执行多个操作(每个小时间片执行一个操作,多个操作快速切换执行)

    更多相关内容
  • 并发进程的封闭性

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

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

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

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

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

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

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

    进程的概念

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

    进程特性

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

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

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

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

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

    进程的基本状态和转换

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

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

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

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

    在这里插入图片描述

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

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

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

    进程控制块

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

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

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

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

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

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

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

    进程队列

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

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

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

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

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

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

    展开全文
  • 操作系统之进程—并发进程(一)

    万次阅读 多人点赞 2018-11-03 21:55:22
    1.顺序程序设计 传统的程序设计方法是顺序程序设计,即把一个程序设计成一个顺序执行的程序模块,不同程序也是按序执行的。顺序分成内部顺序和外部顺序 内部的顺序性 : 程序在处理器上执行时严格有序的,...2.并发...

    1.顺序程序设计

    传统的程序设计方法是顺序程序设计,即把一个程序设计成一个顺序执行的程序模块,不同程序也是按序执行的。顺序分成内部顺序和外部顺序

    • 内部的顺序性 : 程序在处理器上执行时严格有序的,即只有当一个操作结束后,才能开始后继操作,这称为程序内部的顺序性
    • 外部的顺序性 : 如果完成一个任务需要若干个不同的程序,这些不同程序在时间上按调用次序严格有序执行,这称为程序外部的顺序性

    2.并发程序设计

    并发含义

    • 一个程序分成若干个可同时执行的程序模块的方法称为并发程序设计,进程的并发性是指一组进程的执行在时间上是重叠的,重叠是指一个进程执行的第一条指令是在另一个进程执行的最后一条指令完成之前开始的

    并发例子

    有两个进程A和B,进程A执行操作a1、a2、a3,进程B执行操作b1、b2、b3

    • 进程A和B顺序(串行)执行的情况:在单处理器上,进程A执行完,进程B才开始执行,它们的操作次序为:a1、a2、a3、b1、b2、b3
    • 进程A和B并发执行的一种情况:在单处理器上,进程A和B交替(交叉)执行,它们交替(交叉)执行的操作次序可能为:a1、b1、b2、a2、a3、b3

    并发实质

    • 并发的实质是一个处理器在几个进程之间的多路复用 (多路复用比较出名的有时分复用,根据时间片调用不用的进程)
    • 并发是对有限的物理资源强制行使多用户共享,消除计算机部件之间的互等现象,以提高系统资源利用率
    • 宏观:并发性反映一个时间段中几个进程都在同一处理器上处于运行还未运行结束的状态
    • 微观:任一时刻仅有一个进程在处理器上运行

    并发差异

    • 并发多线程程序设计:模块都属于一个进程,在进程内部执行
    • 并发多进程程序设计:模块属于不同进程

    3.并发进程的特性

    并发进程之间的关系分为两类:无关的交互的

    • 无关的并发进程:一个并发进程不会改变另一个并发进程的变量值
    • 交互的并发进程:一组并发进程共享某些变量,进程的执行可能影响其他并发进程的执行结果

    Bernstein条件

    并发进程的无关性是进程的执行与时间无关的一个充分条件,又称为Bernstein条件

    4.进程的交互:协作和竞争

    竞争关系(间接制约关系)

    系统中的多个进程之间彼此无关,相互并不知道其它进程的存在,相互之间并不交换信息。但是由于这些进程共用了一套计算机系统资源,因而必然产生竞争资源的问题,一个进程的执行可能影响到同其竞争资源的其它进程。操作系统必须协调好诸进程对资源的争用。一旦一个进程要使用已分配给另一个进程的资源,则该进程必须等待

    资源竞争产生两个问题

    • 一个是死锁(Deadlock)问题,就是一组进程如果都获得了部分资源,还想要得到其他进程所占用的资源,最终所有进程都将陷入死锁
    • 一个是饥饿(Starvation) 问题,是指一个进程由于其它进程总是优先于它而被无限期拖延 既要解决饥饿问题,又要解决死锁问题。解决饥饿问题的最简单策略是FCFS资源分配策略(先来先服务)

    竞争解决

    进程互斥是解决进程间竞争关系(间接制约关系)的手段

    进程互斥

    • 指若干进程要使用同一共享资源时,任何时刻最多允许一个进程使用,其他要使用该资源的进程必须等待,直到占有资源的进程释放该资源
    • 进程互斥关系是一种特殊的进程同步关系,即逐次使用互斥共享资源,是对进程使用资源次序上的一种协调  
    • 临界区管理可以解决进程互斥问题

    协作关系(直接制约关系)

    某些进程为完成同一任务需要分工协作,由于合作的每一个进程都是独立地以不可预知的速度推进,这就需要相互协作的进程在某些协调点上协调各自的工作。当协作进程中的一个到达协调点后,在尚未得到其伙伴进程发来的消息或信号之前应阻塞自己,直到其他合作进程发来协调信号或消息后才被唤醒并继续执行。这种协作进程之间相互等待对方消息或信号的协调关系称为进程同步

    进程同步:

    指两个以上进程基于某个条件来协调它们的活动。一个进程的执行依赖于协作进程的消息或信号,当一个进程没有得到来自于协作进程的消息或信号时需等待,直到消息或信号到达才被唤醒

     

     

    展开全文
  • 并发编程三大特性

    千次阅读 2018-09-16 19:56:19
    并发编程中往往涉及三个问题:原子性、可见性、有序性。 原子性 定义:即一个或者多个操作作为一个整体,要么全部执行,要么都不执行,并且操作在执行过程中不会被线程调度机制打断;而且这种操作一旦开始,就一直...
  • 进程并发与并行,三种状态

    千次阅读 2020-03-17 09:23:30
    1.动态性,是进程最基本的特性,可表现为由创建而产生,由调度而执行,因得不到资源而暂停执行,以及由撤销而消亡,因而进程由一定的生命期。 2.并发性,是进程的重要特征,同时也是OS的重要特征。引入进程的目的...
  • Linux Shell多进程并发以及并发数控制

    千次阅读 2018-06-30 18:22:01
    1.1. linux后台进程 Unix是一个多任务系统,允许多用户同时运行多个程序。shell的元字符&提供了在后台运行不需要键盘输入的程序的方法。输入命令后,其后紧跟&字符,该命令就会被送往到linux后台...
  • 程序一旦运行就是进程,或者更专业化来说:进程是指程序执行时的一个实例。进程是资源分配的最小单位。 什么是线程 一个线程是进程的一个顺序执行流。同类的多个线程共享一块内存空间和一组系统资源,线程本身有一...
  • 实践并发进程的创建和控制方法。观察和 体验进程的动态特性。进一步理解进程生命期期间创建、变换、撤销状态变换的过 程。掌握进程控制的方法,了解父子进程间的控制和协作关系。练习 Linux 系统中 进程创建与...
  • Computer:现代计算机操作系统的四大基本特性(并发/共享/虚拟/异步) 导读:现代操作系统都具有并发、共享、虚拟和异步的特性,其中并发是其它三个特征的前提。共享和并发是操作系统的两个最基本的特征,虚拟以...
  • 进程具有以下主要特性: (1)并发性:可以与其它进程一道在宏观上同时向前推进。 (2)动态性:进程是执行中的程序。此外进程的动态性还体现在如下两个方面:首先,进程是动态产生、动态消亡的;其次,在进程的...
  • 理解进程及线程的区别及特性,进一步理解进程是资源分配单位,线程是独立调度单位。 二、实验环境 硬件环境:计算机一台,局域网环境; 软件环境:Linux Ubuntu操作系统,gcc编译器。 三、实验内容和步骤 进程异步...
  • 在linux平台上,shell脚本进行多进程并发处理是常见的操作,尤其是在需要并行处理大量数据的时候。 然而在编码执行过程中遇到了一些问题,记录于下。 1. 并发控制        网上搜索能找到一些...
  • 理解进程及线程的区别及特性,进一步理解进程是资源分配单位,线程是独立调度单位。 二、实验环境 硬件环境:计算机一台,局域网环境; 软件环境:Linux Ubuntu操作系统,gcc编译器。 三、实验内容和步骤 1、...
  • Linux shell实现多进程并发执行

    千次阅读 2019-08-15 11:57:10
    在bash中,使用后台任务来实现任务的“多进程化”。在不加控制的模式下,不管有多少任务,全部都后台执行。也就是说,在这种情况下,有多少任务就有多少“进程”在同时执行。我们就先实现第一种情况: 实例一:正常...
  • 使用队列,额外起一个进程处理队列,并发请求都放到队列中,由额外进程串行处理,并发问题就不存在了,但是要额外进程支持以及处理延迟严重,本文不先不讨论这种方法。 利用数据库事务特征,做原子更新,此方法...
  • [Linux]Linux Shell多进程并发以及并发数控制

    万次阅读 多人点赞 2016-09-12 12:56:59
    linux多进程并发时,如何控制每次并发进程数。 2. linux多进程并发数控制 最近小A需要生产2015年全年的KPI数据报表,现在小A已经将生产脚本写好了,生产脚本一次只能生产指定一天的KPI数据,假设跑一次生产...
  • 在使用这些方向的时候,我们可以使用到PHP的更多特性,例如并发(多进程)、socket编程等。 那么接下来就说说我遇到的PHP多进程的编程。这个多进程的使用是有一个背景的,下面模糊描述一下背景。 我需要一个监控系统...
  • 本书首先介绍了Go语言的优秀特性、安装设置方法、工程结构、标准命令和工具、语法基础、数据类型以及流程控制方法,接着阐述了与多进程编程和多线程编程有关的知识,然后重点介绍了goroutine、channel以及Go提供的...
  • Linux Shell实现多进程并发执行

    万次阅读 多人点赞 2017-08-18 10:16:58
    在bash中,使用后台任务来实现任务的“多进程化”。在不加控制的模式下,不管有多少任务,全部都后台执行。也就是说,在这种情况下,有多少任务就有多少“进程”在同时执行。我们就先实现第一种情况: 实例一:正常...
  • 1.1 语言特性 1 1.2 安装和设置 2 1.3 工程结构 3 1.3.1 工作区 3 1.3.2 GOPATH 4 1.3.3 源码文件 5 1.3.4 代码包 8 1.4 标准命令简述 11 1.5 问候程序 13 1.6 小结 14 ...
  • 进程管理顺序执行和并发执行

    千次阅读 2018-09-15 13:15:00
    操作系统所具有的四大特征也都是基于进程而形成的,并可从进程的观点来研究操作系统。显然,在操作系统中,进程是一个极其重要的概念。 二、程序的顺序执行及其特征 顺序执行:通常可以把一个应用程序分成若干个...
  • 并发:互斥与同步

    千次阅读 2018-07-18 01:00:07
    1.在单处理器的情况下,问题源于多道程序设计系+统的一个基本特性进程的相对执行速度不可预测,它取决于其他进程的活动,操作系统处理中断的方式以及操作系统的调度策略。带来以下困难: (1)全局资源的共享危险...
  • 并发处理

    千次阅读 2019-12-30 13:13:47
    操作系统的特性之一是并发与共享,即在系统中(内存)同时存在几个相互独立的程序,这些程序在系统中既交叉地运行,又要共享系统中的资源,这就会引起一系列的问题,包括:对资源的竞争、运行程序之间的通信、程序...
  • fork函数的特性: 1.fork之前打开的所有的描述符(文件描述符、设备描述符、sockfd、管道中的描述符等等)在fork之后由子进程共享的。 2.出了继承打开后的描述符之外,还有其他属性, 例如: 实际用户ID、实际组ID、...
  • 但是在使用python3进行并发写的时候,无论是多进程,还是多线程,都没有出现这个问题,难道是python3的特性吗? import time import os import multiprocessing from multiprocessing.dummy import Pool as ...
  • 并发服务器--多进程实现

    千次阅读 2018-03-01 21:58:17
    通过简单的socket可以实现一对一的c/s通信,当多个客户端同时进行服务器访问,那么服务器只能按序的一一进行...那么要想实现一个服务器能同时接受多个客户端访问并且能够双工通信的并发服务器,其中一种实现方式---...
  • 理解进程及线程的区别及特性,进一步理解进程是资源分配单位,线程是独立调度单位。 二、实验环境 硬件环境:计算机一台,局域网环境; 软件环境:Linux Ubuntu操作系统,gcc编译器。 三、实验内容和步骤 1、进程...
  • 一、并发与并行 并行:多个计算机核心在同时处理多个任务,这时多个任务间是并行关系 并发:同时处理多个任务,但是内核在多个任务间不断地切换,达到好像都在处理运行的效果,但实际一个时间点内核只能处理其中一...
  • 1.1. linux后台进程 Unix是一个多任务系统,允许多用户同时运行多个程序。shell的元字符&提供了在后台运行不需要键盘输入的程序的方法。输入命令后,其后紧跟&字符,该命令就会被送往到linux后台...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 158,553
精华内容 63,421
关键字:

并发进程的特性