您好、欢迎来到现金彩票网!
当前位置:红彩会 > 分派优先级 >

进程与线程

发布时间:2019-07-19 18:07 来源:未知 编辑:admin

  并发进程在执行次序上的协调,以达到有效的资源共享和相互合作,使程序执行有可再现性

  进程间可能存在的制约关系:间接制约(并发进程互斥的访问临界资源),直接制约(进程需相互合作执行)

  软件方法:信号量,管程(遵循原则:空闲让进,忙则等待,有限等待,让权等待)

  由进程同步而引起的一些经典的进程同步问题(生产者消费者问题, 哲学家进餐问题, 读写问题)可以在我的另一篇文章中查看.

  管程(英语:Monitors,也称为监视器)是一种程序结构,结构内的多个子程序(对象或模块)形成的多个工作线程互斥访问共享资源。这些共享资源一般是硬件设备或一群变量.

  代表共享资源的数据结构以及由对该共享数据结构实施操作的一组过程所组成的资源管理程序共同构成了一个操作系统的资源管理模块,我们称之为管程.

  3.信息掩蔽,管程中的数据结构只能被管程的过程访问,这些过程也是在管程内部定义的,共管程外的进程调用,而管程中的数据结构及过程(函数)的具体实现外部不可见.

  管程的条件变量:条件变量是在管程内部的数据结构,且只有在管程内才能被访问,它对管程内所有过程是全局的,只能通过x.wait(),x.signal()两个操作访问.

  x.wait():正在调用的管程因x条件需要被阻塞或挂起,则调用x.wait()将自己插入到x条件的等待队列上,并释放管程,知道x条件变化.

  xsignal():正在调用管程的进程发现x发生了变化,则调用x.siganl(),重新启动一个因x条件而阻塞或挂起的进程,如果存在多个这样的进程,则选择其中的一个,如果没有则继续执行原进程,而不产生任何结果.

  自古以来熊和鱼掌不可兼得,同样对于进程来讲,作为调度和分派的基本单位同时又拥有资源这会加重系统开销.那么能否将它们分开呢?对于拥有资源的单位,并不频繁的进行上下文切换,于是线程便诞生了.进程作为拥有资源的单位, 线程作为独立调度和分派的单位. 一个进程可拥有多个线程. 在多线程中, 可将每个线程称为一个任务. 宏观上, 进程也是任务.

  线程,有时被称为轻量级进程(Lightweight Process, LWP),是程序执行流的最小单元.相对的,传统的进程叫做重型进程.

  调度的基本单位:传统OS中,进程是独立调度和分派的基本单位,占有资源独立运行,但是在引入线程的OS中,线程是调度的基本单位,可以独立运行的,此时进程已不是可以独立运行的实体.

  并发性:一个进程中拥有多个线程,称为多线程.这多个线程可以并发运行.不同进程间的线程也可并发运行.

  拥有资源:进程是系统中拥有资源的基本单位,而线程只有一点必不可少的,能保证独立运行的资源,这大大减少了系统的开销.

  独立性:每个进程拥有一个独立的地址空间和资源,除了共享全局变量以外不允许其他进程访问.同一进程中的线程除了只拥有自身必须的少量资源,它们共享进程的内存地址空间和资源

  系统开销:进程因为拥有资源,每次调度进程时必定要对其分配回收,系统开销大.线程只占有极少的资源,其系统开销远低于进程.

  系统为每个进程配置了一个进程控制块PCB用于管理进程.同样,也有一个线程控制块TCP用户控制和管理线程.它包括:

  为了使参与并发执行的程序(含数据)能独立的运行,必须位置配置一个专门的数据结构,称为进程控制块(PCB),系统利用PCB来描述进程的基本情况和运行状态,进而控制和管理进程。相应地,由程序段、相关数据段和PCB三部分构成了进程映像(进程实体)。所谓创建进程,实质上是创建进程映像中的PCB;而撤销进程,实质上是撤销进程的PCB,值得注意的是,进程映像是静态的,进程则是动态的。PCB是进程存在的唯一标志。

  2)并发性,提高资源利用率,单处理器系统中,是某个时间段的并发,某个时刻的并行。

  3)独立性,进程实体是一个能独立运行、独立获得资源和独立接受调度的基本单位。凡是为创建PCB的程序都不能作为一个独立的单位参与运行。

  4)异步性:由于进程的相互制约,使得进程具有执行的间断性,即进程按各自独立的、不可预知的速度向前推进。异步性会导致执行结果的不可再现性,为此,在操作系统中必须配置相应的进程同步机制。

  5)结构性:每个进程都配置一个PCB对其进行描述。从结构上看,进程实体是由程序段、数据段和进程控制段三部分构成。

  1)运行状态:进程正在处理机上运行。在但处理机环境下,每一时刻最多只有一个进程处于运行状态。

  2)就绪状态:进程已处于准备运行的状态,即进程或得了除处理机之外的一切所需资源,一旦得到处理机即可运行。

  3)阻塞状态:进程正在等待某一事件而暂停运行,如等待某一资源为可用(不包括处理机)或等待输入、输出完成。即使处理机空闲,该进程也不能运行。

  4)创建状态:进程正在被创建尚未转到就绪状态。创建进程通常需要多个步骤:首先申请一个空白的PCB,并向PCB中填写一些控制和管理进程的信息;然后有系统进一步处理资源释放和回收工作。

  5)结束状态:进程正从系统中消失,这可能是进程正常结束或其他原因中断退出运行。当进程需要结束运行时,系统首先必须置该进程为结束状态,然后在进一步处理资源释放和回收等工作。

  就绪到运行:处于就绪状态的进程被调度后,获得处理机资源(时间片),于是进程有就绪转为运行状态

  运行到就绪:处于运行状态的进程在时间片用完后,不得不让出处理机,从而进程由运行状态转换为就绪状态。在可剥夺的系统中,更高优先级的进程就绪时,也会将其置为就绪,执行更高级的进程。

  运行到阻塞(主动行为):在进程请求某一资源的使用和分配或等待某一事件的发生(I/O操作的完成)时,他就从运行状态转换为阻塞状态。

  阻塞到就绪(被动行为):当进程等待的时间到来时,如IO操作结束或中断结束时,中断处理程序把相应进程的状态由阻塞状态转为就绪状态。

  进程控制块(Process Control Block, PCB) 描述进程的基本信息和运行状态,所谓的创建进程和撤销进程,都是指对 PCB 的操作。进程控制表:所有进程的 PCB 集合,上限即为操作系统的并发度。多道程序设计:允许多个程序同时

  一次执行过程 是正在运行程序的抽象 将一个CPU变成多个虚拟的CPU 系统资源以进程为单位分配,如内存、文件、 ……每个具有独立的地址空间 操作系统将CPU调度给需要的进程2. 线程

  Word 和浏览器是两个进程,浏览器进程里面有很多线程,例如 HTTP 请求线程、事件响应线程、渲染线程等等,线程的并发执行使得在浏览器中点击一个新链接从而发起 HTTP 请求时,浏览器还可以响应用户的其它事件。

  Word 中同时运行 I/O 线程(保持输入)、排版线程(输入后进行相应的排版)和保存线程(实现每隔一段时间自动保存)。

  的基本单位,在同一进程中,线程的切换不会引起进程切换,从一个进程中的线程切换到另一个进程中的线程时,会引起进程切换。

  由于创建或撤销进程时,系统都要为之分配或回收资源,如内存空间、I/O 设备等,

  。类似地,在进行进程切换时,涉及当前执行进程 CPU 环境的保存及新调度进程 CPU 环境的设置,而

  线程间可以通过直接读写同一进程中的数据进行通信,但是进程通信需要借助 IPC。

  运行状态(running): 占有 CPU,并在 CPU 上运行阻塞状态(waiting):等待某一事件

  ,非抢占式。长作业有可能会饿死,处于一直等待短作业执行完毕的状态。因为如果一直有短作业到来,那么长作业永远得不到调度。

  优点:最短的平均周转时间(所有进程可同时运行的前提下)缺点:不公平性(源源不断的短作业会使先到达的长作业一直等待)

  折中权衡,计算每个进程的响应比 R,之后总是选择 R 最高的进程执行。响应比 = 周转时间 / 处理时间 = (处理时间+等待时间) / 处理时间2. 交互式系统

  抢占式,时间片用完时因为进程切换都要保存进程的信息并且载入新进程的信息,如果时间片太小,会导致进程切换得太频繁,在进程切换上就会花过多时间。而如果时间片过长,那么

  。2.2 优先级调度为每个进程分配一个优先级,按优先级进行调度。为了防止低优先级的进程永远等不到调度,可以随着时间的推移增加等待进程的优先级。

  实时系统要求一个请求在一个确定时间内得到响应。分为硬实时和软实时,前者必须满足绝对的截止时间,后者可以容忍一定的超时。

  进程互斥:由于各进程要求使用共享资源,而这些资源需要排他性使用,所以造成各进程之间竞争使用这些资源的现象。临界资源:系统中某些资源

  down: 如果信号量大于 0 ,执行 -1 操作;如果信号量等于 0,进程睡眠,等待信号量大于 0;up:对信号量执行 +1 操作,唤醒睡眠的进程让其完成 down 操作。

  down 和 up 操作需要被设计成原语,不可分割,通常的做法是在执行这些操作的时候屏蔽中断

  。也就是说,不能先执行 down(mutex) 再执行 down(empty)。如果这么做了,那么可能会出现这种情况:生产者对缓冲区加锁后,执行 down(empty) 操作,发现 empty = 0,此时生产者睡眠。

  消费者不能进入临界区,因为生产者对缓冲区加锁了,消费者就无法执行 up(empty) 操作,empty 永远都为 0

  原因:使用信号量机制实现的生产者消费者问题需要客户端代码做很多控制,易出错,而管程把控制的代码独立出来,不仅不容易出错,也使得客户端代码调用更容易。

  c 语言不支持管程,下面的示例代码使用了类 Pascal 语言来描述管程。示例代码的管程提供了 insert() 和 remove() 方法,客户端代码通过调用这两个方法来解决生产者-消费者问题。

  ——为了保证数据结构的完整性。进程在无法继续执行的时候不能一直占用管程,否则其它进程永远不能使用管程。同步:管程引入了条件变量以及相关的操作:wait()和signal()

  (例如名称为c)是管程内的一种数据结构,且只有在管程中才能被访问,它对管程内的所有过程是全局的,只能通过两个原语操作来控制它。

  -调用进程阻塞并移入与条件变量c相关的队列中,并释放管程,直到另一个进程在该条件变量c上执行signal( )唤醒等待进程并将其移出条件变量c队列。

  c.signal( )-如果存在其他进程由于对条件变量c执行wait( )而被阻塞,便释放之;如果没有进程在等待,那么,信号被丢弃。条件变量与P、V操作中信号量的区别:条件变量是一种信号量,但不是P、V操作中纯粹的计数信号量,没有与条件变量关联的值,不能像信号量那样积累供以后使用,仅仅起到维护等待进程队列的作用。因此在使用条件变量x时,通常需要定义一个与之配套使用的整型变量x-count用于记录条件变量x所维护等待队列中的进程数。

  消息队列可以独立于读写进程存在,从而避免了 FIFO 中同步管道的打开和关闭时可能产生的困难;

  读进程可以根据消息类型有选择地接收消息,而不像 FIFO 那样只能默认地接收。

  5. 共享存储允许多个进程共享一个给定的存储区。因为数据不需要在进程之间复制,所以这是最快的一种 IPC。需要使用信号量来同步对共享存储的访问。

  额外的时间开销:管理和协调、跟踪、填写和更新有关数据结构、切换进程、保护现场;

  PCB是进程存在的唯一标志,创建进程时,创建PCB,进程结束时,系统将撤销其PCB;

  所有进程的PCB通过链表组织成为一个队列。适用于进程数目不多的系统。如:windows操作系统;

  PCB按进程状态不同,组织成不同的表格:就绪进程表。执行进程表(多处理机系统中)及阻塞进程表;

  进程进入内存中,分配器程序给该进程建立PCB以及其他运行的必要信息,并加入就绪队列;

  此时该程序只差处理机就可以执行了;”未执行“ 可分为 “就绪” 和  “阻塞”(读写文件,磁盘操作台面了)

  就绪队列中的进程都是只差处理机就可以执行了;”阻塞“结束之后就进入就绪队列;进程的5个状态,之间的转换关系:新建/就绪/执行/阻塞/终止/

  新建状态:进程已经创建,但未被os接纳为可执行进程;(PCB已存在,即进程标识符,该进程的父进程,该进程的所属用户,进程状态情况; 但是该进程的某些资源未存在);

  进程被交换到外存,此时进程处于挂起状态;进程PCB仍然保持在内存,程序和数据移到外存;

  3、操作系统的需要,操作系统可能需要挂起后台进程或一些服务进程,或者某些可能导致系统故障的进程;

  1、具有较高的特权2、运行系统特定的指令,包括读/写控制寄存器的指令、基本I/O指令以及与存储器管理有关的指令,及一些特定的内存区;

  3、内核模式下的处理机及其指令、寄存器和内存读受到完全控制和保护;用户模式(或用户态)

  两者切换是由操作系统内核:操作系统的核心,是基于硬件的第一层软件扩充,提供操作系统最基本的功能,是操作系统工作的基础;

  现代操作系统设计中,为减少系统本身的开销,往往将一些与硬件紧密相关的(如中断处理程序,设备驱动程序),基本的,公共的,运行频率较高的模块(时钟管理,进程调度等)以及关键性数据结构独立开来,使之常驻内存,并为它们紧凑特殊保护,通常把这一部分称为操作系统内核;

  进程控制原语:(原子操作) 进程切换、 创建和终止、 阻塞与唤醒、  挂起与激活

  主进程表中增加一个新的表项(每个进程有一个表项);2、为进程分配空间:用户地址空间、用户栈空间、PCB空间。若共享已有空间。则应建立相应的链接;

  正常结束;超时终止,执行时间超过预计时间;内存不足,无法为进程分配所需的内存空间;

  优先级保存在进程PCB中1、多就绪队列(根据不同的优先级),单阻塞队列;

  当然,仅考虑优先权,某些低优先级的进程可能会出现饥饿,对低优先级的进程不公平;

  可以将进程排队的等待时间等因素纳入优先权的计算,随着进程等待时间的增长,其优先权也不断提高,进程也会在不久的将来得到调度;(优先级是动态改变的)

  执行进程只有在执行完毕,或因申请I/O阻塞自己时,才中断其执行,释放处理机,调度新的进程执行;这种方式不利于“即时性”要求高的分时和实时系统,主要用于批处理系统;剥夺方式:

  这种方式会产生较多的中断,主要用于实时性要求较高的实时系统及性能要求较高的批处理系统和分时系统;调度的类型批处理调度,分时调度、实时调度、和多处理机调度;

  某些采用交换技术的系统将新创建的进程插入到就绪/挂起队列,等待中程调度;在批处理系统中,作业进入系统中,先驻留在磁盘上,组织称批处理队列,称为后备队列;长程调度从该队列中选择一个或多个作业,为之创建进程;长程调度考虑两个问题:

  静态与动态优先级:静态优先级:一旦确定,则进程运行期间优先级一直不改变;动态优先级:系统首先赋予进程一个初始优先级,该优先级将随着进程的运行而改变;

  将进程的等待时间和进程的预期执行时间纳入优先级的计算,进程(预期执行时间)越长优先级越低,而随着进程的等待时间增长优先级

  实时系统Real-Time System  :  实时控制系统(实时采集数据,并自动处理。炼钢控制), 实时信息处理系统:飞机订票系统

  指能及时响应外部事件的请求,在规定的时间内完成对该事件的处理,并控制所有实时任务协调一致地运行的计算机系统;

  引言进程是操作系统资源分配和能够独立运行的基本单位。在多道程序的环境下,程序是并发执行的,这有个并发和并行的概念。所谓的并发是在一大段时间内,程序看似是一起执行的,但是实际上在一个时间点上只有一个程序在执行任务,而并行则是在同一时间点上,多个程序同时执行任务。进程定义:进程是进程实体的运行过程,是系统进行资源分配和调度的一个基本独立单位。结构:一个进程实体由PCB(进程控制块)、程序段、相关数据

  进程描述进程状态线程进程间通信进程互斥与同步死锁进程描述在一个具有一定独立功能的程序在一个数据集合上的一次动态执行过程。进程的组成一个进程应该包括程序的代码;程序处理的数据程序计数器中的值,指示下一条将运行的指令;一组通用的寄存器的当前值,堆,栈一组系统资源包括了运行所需要的所有状态信息。动态性,并发性,独立性,共享某些资源。如何进行进程管理?程序=算...

  一、进程1.1多道程序设计允许多个程序同时进入内存并运行,提高CPU的利用率,目的是提高系统效率a图内存中有四个程序,串行执行,因为这里只有一个程序计数器。当有了多道程序技术之后就得到了b图,每个程序各自独立的占用一个逻辑程序计数器,达到并发执行效果从c图中可以看到多个程序是轮流执行的1.2并发环境与并发程序并发环境指一段时间间隔内,单处理器上有两个或两...

  进程的概念:进程是程序在一个数据集上的运行过程,是系统进行资源分配和调度的一个独立单位,是给定的活动空间和初始状态下处理机的一次执行过程..进程是一个动态概念,动态被创建,并在调度执行后消失。。而程序则是一个静态的概念,是指令的有序集合进程具有并发执行的特征..进程是竞争计算机系统资源的基本单位,从而其并行性受到系统资源的制约。。进程控制块和状态转换:在操作系统中,通常

  一、进程1.1多道程序设计允许多个程序同时进入内存并运行,提高CPU的利用率,目的是提高系统效率a图内存中有四个程序,串行执行,因为这里只有一个程序计数器。当有了多道程序技术之后就得到了b图,每个程序各自独立的占用一个逻辑程序计数器,达到并发执行效果从c图中可以看到多个程序是轮流执行的1.2并发环境与并发程序并发环境指一段时间间隔内,单处理器上有两个或两个以上的程序同时处于开始...

http://m3-ctech.com/fenpaiyouxianji/647.html
锟斤拷锟斤拷锟斤拷QQ微锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷微锟斤拷
关于我们|联系我们|版权声明|网站地图|
Copyright © 2002-2019 现金彩票 版权所有