精华内容
下载资源
问答
  • 02进程学习之并发,时钟中断,单道程序设计多道程序设计的区别 1 并发的概念 并发:一个时间段内可以运行多个程序。注意并不是同一时刻运行,即不是并行。 2 时钟中断 时钟中断:发送指令使当前占用CPU的进程停止...

    02进程学习之并发,时钟中断,单道程序设计和多道程序设计的区别

    1 并发的概念
    并发:一个时间段内可以运行多个程序。注意并不是同一时刻运行,即不是并行。

    2 时钟中断
    时钟中断:发送指令使当前占用CPU的进程停止并记录时间,好让其它进程可以执行。
    由于我们程序可以并发执行,所以每个程序都会争夺CPU,当我们需要切换另一个进程时,就是利用时钟中断来暂停它,记录本次时间等待其它进程执行完再回到被中断的那个时刻执行该进程。例如酷狗和微信的切换。

    3 单道程序设计
    单道程序设:“所有进程一个一个排对执行。若A阻塞,B只能等待,即使CPU处于空闲状态。所以已被淘汰。

    4 多道程序设计
    多道程序设计:内存中可以有多个进程轮流执行,不会阻塞,但需要硬件基础支撑。实际上就是并发的思想。

    5 四者的区别
    在不考虑单道程序设计下,多道程序设计是并发的实现,时钟中断是多道程序设计的前提。或者你可以理解为并发就是多道程序设计,毕竟这两个概念并不需要很严谨。

    展开全文
  • 下面从程序的顺序执行、程序的执行环境和程序的并发执行几方面介绍多道程序设计模型。 一、程序的顺序执行 程序是一个在时间上按严格次序前后相继的操作序列,这些操作是机器指令或高级语言编写的语句。人们习惯的...

    采用多道程序设计可以提高处理器的利用率。多道程序设计技术充分发挥了处理器与外围设备以及外围设备之间的并行工作能力,从而提高处理器和其他各种资源的利用率。下面从程序的顺序执行、程序的执行环境和程序的并发执行几方面介绍多道程序设计模型。

    一、程序的顺序执行

    程序是一个在时间上按严格次序前后相继的操作序列,这些操作是机器指令或高级语言编写的语句。人们习惯的传统程序设计方法是顺序程序设计,计算机也是以顺序方式工作的:处理器一次执行一条指令,对内存一次访问一个字节或字,对处部设备一次传送一个数据块。顺序处理也是人们习惯的思考方法,为了解决一个复杂的问题,人们把它分解成一些较为简单、易于分析的小问题,然后逐个解决。也可以把一个复杂的程序划分为若干个程序段,然后按照某种次序逐个执行这些程序段。

    我们把一个具有独立功能的程序独占处理器直到得到最终结果的过程称为程序的顺序执行。程序的顺序执行具有如下特点。

    1.顺序性

    程序所规定的动作在机器上严格地按顺序执行。每个动作的执行都以前一个动作的结束为前提条件,即程序和机器执行它的活动严格一一对应。

    2.封闭性

    程序运行后,其计算结果只取决于程序自身,程序执行得到的最终结果由给定的初始条件决定,不受外界因素的影响。程序所使用的资源(包括处理器、内存、文件等)是专有的,这些资源的状态(除了初始状态外)只有程序本身的动作才能改变。

    3.程序执行结果的确定性

    也称为程序执行结果与时间无关性。程序执行的结果与它的执行速度无关,即处理器在执行程序时,任意两个动作之间的停顿对程序的计算结果都不会产生影响。

    4.程序执行结果的可再现性

    如果程序在不同的时间执行,只要输入的初始条件相同,则无论何时重复执行该程序都会得到相同的结果。

    程序的顺序性和封闭性是一切顺序程序所应具有的特性,从这两个特性出发,不难引出程序执行时所具有的另外两个特性。顺序程序与时间无关的特性,可使程序的编制者不必去关心不属于他控制的那些细节(如操作系统的调度算法和外部设备操作的精确时间等);顺序程序执行结果的可再现性,则对程序检测和校正程序的错误带来了方便。

    二、程序的并发执行

    所谓程序并发执行,是指两个或两个以上程序在计算机系统中,同时处于已开始执行且尚未结束的状态。能够参与并发执行的程序称为并发程序。程序的并发执行,可以充分利用系统的资源,提高计算机的处理能力。但是,程序的并发执行产生了一些和程序顺序执行时不同的特性。程序的并发执行有如下特征。

    1.在执行期间并发程序相互制约

    资源的共享和竞争存在于多道程序的并发执行中,从而制约了各道程序的执行速度。由于本来并无逻辑关系的程序之间产生了相互制约的关系,而各个程序活动的工作状态与所处环境有密切关系,使并发程序的执行出现了“执行——暂停——执行”的活动现象。

    2.程序与计算不再一一对应

    在并发执行中,允许多个用户进程调用一个共享程序段,从而形成了多个“计算”。如在分时系统中,一个编译程序往往同时为几个用户提供编译服务,该编译程序便对应了几个“计算”。

    3.并发程序的执行结果不可再现

    并发程序执行结果与其执行的相对速度以及并发执行的多道程序之间的相互关系有关,导致并发程序的执行结果不可再现,即执行结果是不确定的。

    4.程序的并行执行与程序的并发执行

    多道程序的并发执行是指它们在宏观上,即在某一段时间周期内是同时进行的(这个时间周期,比处理器的指令处理周期要长得多,但是从操作人员的感觉来看,仍然时一个瞬间)。但从微观上看,除了多处理器系统外,在单处理器系统中,这些程序仍然是顺序执行的。

    程序的并行执行与程序的并发执行,这两者存在着差别。前者是指不论从宏观的时间周期上看,还是从微观上看,若干程序确实在同时运行;而程序的并发执行,如果在单处理器系统中,它们在宏观上是同时进行的,但在微观上,这些程序仍然是顺序执行的

    展开全文
  • Java并发程序设计+并发
  • 程序和进程 程序:是指编译好的二进制文件,存放在磁盘上,并不占用系统资源(系统资源包括CPU、内存、打开的文件、设备、锁…) 进程:是一个抽象的概念,与操作系统原理密切相关。进程是活跃的程序,占用系统资源...

    程序和进程

    • 程序:是指编译好的二进制文件,存放在磁盘上,并不占用系统资源(系统资源包括CPU、内存、打开的文件、设备、锁…)
    • 进程:是一个抽象的概念,与操作系统原理密切相关。进程是活跃的程序,占用系统资源。在内存中执行。(程序运行起来之后,产生一个进程)。
    • 那么我们可以形象的将程序比作一个剧本,这个剧本就是一张一张的纸组成的,那么就是进程就要演的戏,一出戏上面包括舞台、演员、灯光、道具等等。同一个剧本可以在多个舞台上同时上演,同样的,同一个程序也可以加载为不同的进程(而且彼此之间互不影响)。
    • 举个例子,在linux终端上同时打开两个终端。他们各自都有一个bash但是彼此的ID却是不同的。

    二:并发的认识

    • 并发:在操作系统中,一个时间段中有多个进程都处于已经启动运行—到-----运行完毕之间的状态。但是呢,任一时刻点上CPU上只有一个进程在运行。
    • 举个例子,现在,我们使用计算机可以边听音乐边聊天边上网。那么我用自己的话来说,意思就是说CPU先运算音乐进程几纳秒,然后停下来在运算聊天几微秒,然后在停下来再运算上网几微秒,由于速度很快,我们肉眼几乎发现不了进程在切换着运行。

    单道程序设计

    • 所有进程一个一个排对执行。若A阻塞,B只能等待,即使CPU处于空闲状态。而在人机交互时阻塞的出现时必然的。所有这种模型在系统资源利用上极其不合理,在计算机发展历史上存在不久,大部分便被淘汰了。像以前的Dos就是单道程序设计系统。

    多道程序设计

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

    CPU

    • 中央处理器(CPU,Central Processing Unit)是一块超大规模的集成电路,是一台计算机的运算核心(Core)和控制核心( Control Unit)。它的功能主要是解释计算机指令以及处理计算机软件中的数据。中央处理器主要包括运算器(算术逻辑运算单元,ALU,ArithmeTIc Logic Unit)和高速缓冲存储器(Cache)及实现它们之间联系的数据(Data)、控制及状态的总线(Bus)。它与内部存储器(Memory)和输入/输出(I/O)设备合称为电子计算机三大核心部件。
    • cpu的基本结构
        从功能上看,一般CPU的内部结构可分为:控制单元、逻辑运算单元、存储单元(包括内部总线和缓冲器)三大部分。其中控制单元完成数据处理整个过程中的调配工作,逻辑单元则完成各个指令以便得到程序最终想要的结果,存储单元就负责存储原始数据以及运算结果。浑然一体的配合使得CPU拥有了强大的功能,可以完成包括浮点、多媒体等指令在内的众多复杂运算,也为数字时代加入了更多的活力。
    1. 逻辑部件

    英文Logic components;运算逻辑部件。可以执行定点或浮点算术运算操作、移位操作以及逻辑操作,也可执行地址运算和转换。

    1. 寄存器

    寄存器部件,包括寄存器、专用寄存器和控制寄存器。 通用寄存器又可分定点数和浮点数两类,它们用来保存指令执行过程中临时存放的寄存器操作数和中间(或最终)的操作结果。 通用寄存器是中央处理器的重要部件之一。

    1. 控制部件

    英文Control unit;控制部件,主要是负责对指令译码,并且发出为完成每条指令所要执行的各个操作的控制信号。

    其结构有两种:一种是以微存储为核心的微程序控制方式;一种是以逻辑硬布线结构为主的控制方式。

    微存储中保持微码,每一个微码对应于一个最基本的微操作,又称微指令;各条指令是由不同序列的微码组成,这种微码序列构成微程序。中央处理器在对指令译码以后,即发出一定时序的控制信号,按给定序列的顺序以微周期为节拍执行由这些微码确定的若干个微操作,即可完成某条指令的执行。

    简单指令是由(3~5)个微操作组成,复杂指令则要由几十个微操作甚至几百个微操作组成。

    CPU的逻辑单元
    • 更细一点,从实现的功能方面看,CPU大致可分为如下八个逻辑单元:

    1. 指令高速缓存,俗称指令寄存器 : 它是芯片上的指令仓库,有了它CPU就不必停下来查找计算机内存中的指令,从而大幅提高了CPU的运算速度。

    2. 译码单元,俗称指令译码器 : 它负责将复杂的机器语言指令解译成运算逻辑单元(ALU)和寄存器能够理解的简单格式,就像一位外交官。

    3. 控制单元 : 既然指令可以存入CPU,而且有相应指令来完成运算前的准备工作,背后自然有一个扮演推动作用的角色——它便是负责整个处理过程的操作控制器。根据来自译码单元的指令,它会生成控制信号,告诉运算逻辑单元(ALU)和寄存器如何运算、对什么进行运算以及对结果进行怎样的处理。

    4. 寄存器 : 它对于CPU来说非常的重要,除了存放程序的部分指令,它还负责存储指针跳转信息以及循环操作命令,是运算逻辑单元(ALU)为完成控制单元请求的任务所使用的数据的小型存储区域,其数据来源可以是高速缓存、内存、控制单元中的任何一个。

    5. 逻辑运算单元(ALU) : 它是CPU芯片的智能部件,能够执行加、减、乘、除等各种命令。此外,它还知道如何读取逻辑命令,如或、与、非。来自控制单元的讯息将告诉运算逻辑单元应该做些什么,然后运算单元会从寄存器中间断或连续提取数据,完成最终的任务。

    6. 预取单元 : CPU效能发挥对其依赖非常明显,预取命中率的高低直接关系到CPU核心利用率的高低,进而带来指令执行速度上的不同。根据命令或要执行任务所提出的要求,何时时候,预取单元都有可能从指令高速缓存或计算机内存中获取数据和指令。当指令到达时,预取单元最重要的任务就是确保所有指令均排列正确,然后发送给译码单元。

    7. 总线单元 : 它就像一条高速公路,快速完成各个单元间的数据交换,也是数据从内存流进和流出CPU的地方。

    8. 数据高速缓存 : 存储来自译码单元专门标记的数据,以备逻辑运算单元使用,同时还准备了分配到计算机不同部分的最终结果。

    • 通过以上介绍可以看出CPU虽小,方寸之地却能容纳大世界,内部更像一个发达的装配工厂,环环相扣,层层相套。正因为有了相互间的协作配合,才使得指令最终得以执行,才构成了图文并茂、影像结合的神奇数字世界。
    cpu的工作原理:
    • 我们都知道CPU的根本任务就是执行指令,对计算机来说最终都是一串由“0”和“1”组成的序列。CPU从逻辑上可以划分成3个模块,分别是控制单元、运算单元和存储单元,这三部分由CPU内部总线连接起来。如下所示:
      在这里插入图片描述

      • 控制单元:控制单元是整个CPU的指挥控制中心,由指令寄存IR(InstrucTIon Register)、指令译码器ID(InstrucTIon Decoder)和操作控制器OC(OperaTIon Controller)等,对协调整个电脑有序工作极为重要。它根据用户预先编好的程序,依次从存储器中取出各条指令,放在指令寄存器IR中,通过指令译码(分析)确定应该进行什么操作,然后通过操作控制器OC,按确定的时序,向相应的部件发出微操作控制信号。操作控制器OC中主要包括节拍脉冲发生器、控制矩阵、时钟脉冲发生器、复位电路和启停电路等控制逻辑。

      • 运算单元:是运算器的核心。可以执行算术运算(包括加减乘数等基本运算及其附加运算)和逻辑运算(包括移位、逻辑测试或两个值比较)。相对控制单元而言,运算器接受控制单元的命令而进行动作,即运算单元所进行的全部操作都是由控制单元发出的控制信号来指挥的,所以它是执行部件。

    • 存储单元:包括CPU片内缓存和寄存器组,是CPU中暂时存放数据的地方,里面保存着那些等待处理的数据,或已经处理过的数据,CPU访问寄存器所用的时间要比访问内存的时间短。采用寄存器,可以减少CPU访问内存的次数,从而提高了CPU的工作速度。但因为受到芯片面积和集成度所限,寄存器组的容量不可能很大。寄存器组可分为专用寄存器和通用寄存器。专用寄存器的作用是固定的,分别寄存相应的数据。而通用寄存器用途广泛并可由程序员规定其用途,通用寄存器的数目因微处理器而异。这个是我们以后要介绍这个重点,这里先提一下。

    • 我们将上图细化一下,可以得出CPU的工作原理概括如下:
      在这里插入图片描述

    • 总结一下,CPU的运行原理就是:
        1. 取指令:CPU的控制器从内存读取一条指令并放入指令寄存器。指令的格式一般是这个样子滴:
      在这里插入图片描述

    操作码就是汇编语言里的mov,add,jmp等符号码;操作数地址说明该指令需要的操作数所在的地方,是在内存里还是在CPU的内部寄存器里。

    1. 指令译码:指令寄存器中的指令经过译码,决定该指令应进行何种操作(就是指令里的操作码)、操作数在哪里(操作数的地址)。

    2. 执行指令,分两个阶段“取操作数”和“进行运算”。

    3. 修改指令计数器,决定下一条指令的地址。
      在这里插入图片描述
      在这里插入图片描述

    • 如上图所示,存储介质中,从上到小,内存越来越大,价格越来越便宜,但是传输速率越来越慢。因此将他们搭配起来使用是最好的。
    • 假如数据在硬盘上放着,当我们执行某个程序的时候,从硬盘中先拿到内存中,在拿到cache缓存器中,然后由预取器预取指令,再交给译码器进行译码,译码器再交给ALU算术逻辑单元执行运算,然后,将运算好的数据交给寄存器,由寄存器交给内存,再由内存交给硬盘。

    MMU(内存管理单元)

    在这里插入图片描述

    • 我就简答的说一下关于MMU,MMU就是为了完成物理内存和虚拟内存之间的映射,还有修改内存的访问级别。
    • 在没有使用虚拟存储器的机器上,虚拟地址被直接送到内存总线上,使具有相同地址的物理存储器被读写。而在使用了虚拟存储器的情况下,虚拟地址不是被直接送到内存地址总线上,而是送到内存管理单元——MMU(主角终于出现了)。他由一个或一组芯片组成,一般存在与协处理器中,其功能是把虚拟地址映射为物理地址。
    MMU工作过程
    • 大多数使用虚拟存储器的系统都使用一种称为分页(paging)。虚拟地址空间划分成称为页(page)的单位,而相应的物理地址空间也被进行划分,单位是页框(frame).页和页框的大小必须相同。接下来配合图片我以一个例子说明页与页框之间在MMU的调度下是如何进行映射的:
      在这里插入图片描述

    • 在这个例子中我们有一台可以生成16位地址的机器,它的虚拟地址范围从0x0000~0xFFFF(64K),而这台机器只有32K的物理地址,因此他可以运行64K的程序,但该程序不能一次性调入内存运行。这台机器必须有一个达到可以存放64K程序的外部存储器(例如磁盘或是FLASH)以保证程序片段在需要时可以被调用。在这个例子中,页的大小为4K,页框大小与页相同(这点是必须保证的,内存和外围存储器之间的传输总是以页为单位的),对应64K的虚拟地址和32K的物理存储器,他们分别包含了16个页和8个页框。

    • 关于MMU,我后面再来介绍。

    展开全文
  • 并发程序设计

    2021-03-03 05:10:40
    火龙果软件工程技术中心 9.1并发程序的概念大家知道,进程具有并发性。在单处理机环境下,各进程交替占用CPU从而提高了CPU的利用率。在处理机环境下,各进程可独自在自己占用的处理机上与其它进程在指令级上实现...
  • Java并发程序设计
  • 1.1多道程序设计 1.1.1程序的顺序执行 Ii表示第i个程序的输入;Pi表示第i个程序的计算处理;Oi表示第i个程序的打印输出 对于一个要解决的问题,往往需要按一定的顺序执行,典型的是输入,计算,然后进行打印...
    1.1多道程序设计
    1.1.1程序的顺序执行
    Ii表示第i个程序的输入;Pi表示第i个程序的计算处理;Oi表示第i个程序的打印输出
    对于一个要解决的问题,往往需要按一定的顺序执行,典型的是输入,计算,然后进行打印输出。

    顺序程序设计方式的一些特点
    (1)简单,方便,容易理解;
    (2)确定性:程序运行结果,不会受运行过程中出现的中断事件的影响;
    (3)封闭性:运行程序独占整个计算机系统资源,除了初始状态以外,该程序所处的环境只有本身决定,只有程序本身才能改变系统资源状态和环境。
    (4)可再行性:一个程序,只要初始输入条件相同,运行结果也必然相同。

    缺点:计算机资源使用效率不高



    1.1.2程序的并发执行
    程序的并发执行:是指一个程序的执行还没有结束,另一个程序就已经开始了。
                                宏观上:在这段时间内,“同时”完成几个程序;
                                微观上:任何时刻就只有一个程序在运行。
    并发性的两层含义:(1)内部顺序性,对于一个程序而言,他的所有指令都是按序执行的;
                                    (2)外部并发性对于多个程序而言,他们是交叉运行的
    1.1.3多道程序设计
    单道程序设计:主存中每次只存在一个程序,该程序运行时独占整个计算机系统资源
    多道程序设计:让多个程序同时进入一个计算机系统的主存储器并发执行

    优点:充分发挥了计算机硬件的并发性,消除了处理器和外围设备相互等待的现象,大大提高了系统的效率。

    1.1.4并发程序执行的条件
    Bernstein条件:并发程序如果无关,则这些进程可以并发执行。
                         i个程序集合(1)读变量集合R(Pi)
                                             (2)写变量集合W(Pi)
                        如果(R(P1)并W(P2))
                            交(R(P2)并W(P1))
                            交(W(P1)并W(P2))= 空集
          

    展开全文
  • Java高并发程序设计

    2018-07-20 16:22:45
    Java高并发程序设计,葛一鸣,郭超编著,java系列书籍
  • Java并发程序设计教程

    2011-04-28 10:08:43
    Java并发程序设计教程Java并发程序设计教程
  • 高清Java高并发程序设计
  • 并发程序设计

    2014-04-14 09:31:32
    java高并发程序设计
  • int lock=0; to process Ti that want to enter the critical section int key; do{ key=1; while(key==1)exchange(lock,key); //when key!=1 swap out of critical section //at that time key=0 lock=1 ...
  • Java并发程序设计编程

    2018-02-10 23:38:51
    并发编程的目的是为了让程序运行的更快,但是并不是启动更的线程,就能让程序最大限度的并发执行。在进行并发编程时,如果希望通过线程执行任务让程序运行的更快,会面临非常的挑战,比如上下文切换的问题,...
  • java并发程序设计

    2018-04-09 09:46:29
    java并发程序设计,帮助需求的童鞋们,提高Java技术,不管是新手还是老手,还是很有学习参考价值的。
  • java高并发程序设计

    2018-07-23 09:44:46
    java高并发程序设计电子书,有需要的小伙伴可以下载学习
  • 并发的java程序设计技巧,知识,经验。结合大量的例子,通俗易懂。
  • 把多个程序同时装入一个计算机系统的主存储器并行执行,称为并发程序设计 1.并发:在一段时间内完成多个任务执行,或者说是在...多道环境下的程序设计叫做并发程序设计 2.并行:在同一时刻多个任务同时执行,或者说...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 390,241
精华内容 156,096
关键字:

多道程序设计是不是并发