操作系统概论-06

6】并发进程

6.1进程的并发性

 1进程的顺序性和并发性:进程的顺序性是指进程在顺序处理器上执行是严格按照顺序运行 当一个进程独占处理器顺序执行时 具有封闭性和可再现性

若系统中存在一组可同时执行的进程 则称为改组进程具有并发性 并把可同时执行的进程称为 并发进程

2 并发进程相互之间可能是无关的也可能是有交往的:如果一个进程的执行不影响其他进程的执行 则这些并发进程相互之间无关的 如果一个进程的执行 影响进程的执行 则这些并发进程之间是有交往的

6.2与时间有关的错误

1并发进程的执行速度受自身原因以及进程调度策略的影响:一个进程运行会被中断 且断点不是固定的 一个劲被中断后 哪个进程可以运行 被中断的进程什么时候占用处理器 是进程调度策略有关的 因此进程的执行速度是不能由自己决定的

2并发进程交替使用共享资源时会出现跟时间有关的错误:由于共享资源的原因 加上二进制并发进程的随机性 一个进程对另一个进程的影响是不可 预测的,造成不正确的因素与进程占用处理器的时间 执行的速度以及外界的影响有关的 因此被称为与时间有关的错误

3 分析与时间有关的错误:一个飞机航班系统有n个售票处 每个售票区通过终端访问系统公共数据区 嘉定工作数据区的一些单元Aj(j=1,2,...)

 分别存放 XXX次航班的余票数 设P1 P22.。。Pn 表示各个售票区的处理进程 R1 R2 Rn 表示进程执行占用工作单位 当售票处有人买票

进程如下工作 process Pi(i=1,2...) begin 按照旅客要求找到Aj   

Ri = Aj ; if Ri >= 1 then; begin Ri :=Ri-1:Aj =Ri 输出一张票 end

Else :输出票已经售完End;  这里如果有两个都需要同一个班次的票 然后同时购买 但是票只有一张 而进程并发执行可能会把一张票买个几个用户,核心问题就是多个进程同时访问一个变量产生的问题。

6.3 临界值PV操作

1临界值的定义:并发进程中与共享变量有关的进程断 称为临界值

2相关临界值区管理要求 1一次到多一个进程能进入临界区 当有进程在临界区执行时 其他想想进入临界区的进程必须等待2不能让一个进程无限制的在临界区执行 即任何一个进入临界区的进程必须在有限的时间内退出临界区3不能强迫一个进程无限的等待进入它的临界区 即有进程退出临界区 应让一个等待进入临界区的进程进入它的临界区执行 。

3不可中断的过程称为原语 PV操作分别是两个原语 P操作原语和V操作原语

4P操作和V操作的定义

P操作P(S):将信号量S减去1 如果结果小于0 则调用P(S)的进程被置成等等待信号量 S的状态

V操作 V(S):将信号量S1 若结果不大于0 则释放一个等待信号量S的进程

6.4 进程的互斥和同步

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

2 pv操作实现对相关临界区的管理:一个信号量与一组涉及共享的相关临界区联系起来 信号量的初始值为1 任何一个进程要进入临界区前 先调用P操作 执行临界区的操作后 退出临界区时调用V操作 由于信号量的初始值为 1 进程退出后执行V操作 若有进程在等待则释放一个进程 这样就达到了临界区管理的第二个和第三个要求。

3 进程同步的含义:进程同步只是并发进程之间存在的一种制约管理,一个进程的执行依赖另一个进程消息,当一个进程没有得到另一个进程的消息时应等待 知道消息到达才被唤醒

4 PV操作实现进程同步:用一个信号量与一个消息联系起来 当信号量的值为0时 便是期望的消息尚未产生 当信号量值为非0时表示期望的消息已经存在,在用PV操作实现同步时 一个信号量与一个消息量联系在一起 当有多个消息时必须定义多个信号量 测试不同的消息是否到达或发送不同消息时 应对不同信息量调用P操作或者V操作。

5 pv操作解决进程的同步与互斥的混合问题:进程的同步与进程的互斥都涉及并发进程访问共享资源的问题 可以看到进程的互斥实际上进程同步的一种特殊情况,若干进程互斥进程发出”归还资源”的信息 (调用V操作)后,它就可以去使用资源 因此 互斥使用资源的进程之间实际上也存在一个进程依赖另一个进程的发出的信息的制约关系

     6.5 进程通信

1进程通信的含义:通过专门的通信机制实现进程间交换大量信息的通信方式称为 进程通信

2信件和信箱 一个进程要向其他进程发送消息 应先组织好一封信 信件内容应包括 发送者名 信息(或信息存放地址和长度)等/不等回信 回信存放地址  若干个进程都可以向同一进程发送信件 接受信件的进程可以设定一个信箱 信箱的大小决定了信箱中可以容纳的信件数 可以便于了解信箱中的情况 每个信箱可以由 信箱说明 信箱体 两部分组成

3实现进程通信的基本原语

有两条 send 发送 和 receive接受原语。1>send*N M)功能:把信件M送到指定信箱N2>receive(NX)功能 把指定信箱N中取出一封信存放到指定的地址中

6.6 死锁

1死锁的形成 1>死锁 若系统中存在一组进程(两个或者多个进程),它们中的每一个进程都使用某种资源而又等待其中另一个进程所占用的资源 这种等待永远不能结束 则称系统出现了某种死锁 或者称这组进程处于 死锁状态 >2 引起死锁的原因 形成死锁的原因是系统提供的资源数比进程要求的资源要少 或者是某若干进程要求资源的总数大于系统提供的资源数

2产生死锁的必要条件:互斥使用资源 占有目的等待资源 非抢夺式分配  循环等待资源

1> 互斥使用资源 :每一个资源每次只能给一个进程使用

2> 占有且等待资源 :一个进程申请资源得不到满足时处于等待资源的状态且不释放已占资源

3> 非抢夺式分配 :任何一个进程不能抢夺另一个进程所占资源

4> 循环等待资源:存在一组进程 其中每一个进程分别等待另一个所占用的资源

           3死锁的防止策略

1) 静态分配资源 静态分配资源是指进程必须在开始执行前就申请它所要的全部资源 仅当系统能满足进程的资源申请要求且把资源分配给进程后 该进程才开始执行 显然 采用静态分配资源策略后 进程在执行过程中不会再申请资源 故不可能出现占有某些资源再等待其他资源的情况 即四个必要条件中的 占用并等待资源和循环等待资源两个条件不成立 从而防止死锁的发生

2) 按序分配资源 对系统中每一个资源给出一个编号,规定任何一个进程申请两个以上资源时,总是申请编号小的资源,再申请编号大的资源 总是先申请编号小的资源 在申请编号大的资源 按照这种策略分配资源可破坏 循环等待资源的条件 达到防止死锁的目的

3) 剥夺式分配资源:剥夺式分配资源是当一个进程申请资源得不到满足时则可以从另一个进程那里去抢夺 这种分配策略目前只适用于对处理器和主存资源的分配 这种分配策略破坏了4个必要中第三项 可方式死锁的发生。

4死锁的避免

死锁的避免是解决死锁的另一种方式,它不同于死锁的防止 在系统中不采用防止死锁的资源分配策略 而是估计到可能有死锁发生时避免死锁的发生 一个古典的测试方法是银行家法(系统现有的资源可以满足进程的最大需求 就满足进程的当前申请 否则推迟分配)

5死锁的检查

对资源的申请和不分配不加限制 只要有剩余的资源就可以吧资源分配给申请者 这样可能会出现死锁 系统定时运行一个死锁检测程序 如果检测到死锁发生 则必须先解除死锁再继续工作

实现死锁检测的一种方法是可以设置两张表格来记录资源使用情况和进程等待资源的情况

SPOOLING  打印机 当某进程要求打印输出时,操作系统并不是把某台实际打印机分配给该进程,而是在磁盘上输出井中为其分配一块区域,该进程的输出数据高速存入输出井的相 关区域中,而并不直接在打印机上输出。输出井上的区域相当于一台虚拟的打印机,各进程的打印输出数据都暂存放在输出井中,形成一个输出队列。最后,由 SPOOLING的缓输出程序依次将输出队列中的数据实际地打印输出。 这样,从用户的角度来看,他似乎独占打印机,可以随时根据运行的情况输出各种结果,但从系统的角度来看,同一台打印机又可以分时地为每一个用户服务。用户 进程实际上获得的是虚拟设备。 SPOOLING系统的引入缓和了CPU与设备的速度的不均匀性,提高了CPU与设备的并行程度。

转载于:https://www.cnblogs.com/nerdlerss/p/7721919.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值