作业总 设备管理 理解并发进程 虚拟存储管理

设备管理

P294页第5、7题。

5.

综上所述 调度顺序为5,3,2,1,4 使磁盘旋转圈数最少

7.

(1)先来先服务算法FCFS为565,依次为143-86-147-91-177-94-150-102-175-130。

(2)最短查找时间优先算法SSTF为162,依次为143-147-150-130-102-94-91-86-175-177。

(3)扫描算法SCAN为169,依次为143-147-150-175-177-199-130-102-94-91-86。

(4)电梯调度为125(先向地址大的方向),依次为143-147-150-175-177-102-94-91-86。为148(先向地址小的方向) 依次为143-130-102-94-91-86-147-150-175-177。

理解并发进程

一、顺序程序设计:

顺序程序设计具有四种特性:(1)执行的顺序性(2)环境的封闭性(3)结果的确定性(4)过程的可再现性。程序顺序执行与其速度无关,即程序的最终输出仅与初始输入数据有关,而与时间无关。

顺序结构是最简单的程序结构,也是最常用的程序结构,只要按照解决问题的顺序写出相应的语句就行,它的执行顺序是自上而下,依次执行。

扫描二维码关注公众号,回复: 6416257 查看本文章

二、并发程序设计:

并发程序设计是指由若干个可同时执行的程序模块组成程序的程序设计方法。这种可同时执行的程序模块称为进程。进程由数据和有关的语句序列组成。组成一个程序的多个进程可以同时在多台处理器上并行执行,也可以在一台处理器上夹插执行。采用并发程序设计可以使外围设备和处理器并行工作,缩短程序执行时间,提高计算机系统效率。

例子:

并发程序设计:

如果程序中有大量的计算任务,并且这些任务能分割成几个互相独立的任务块,那就应该使用并行编程。并行编程可临时提高CPU利用率,以提高吞吐量,若客户端系统中的CPU经常处于空闲状态,这个方法就非常有用,但通常并不适合服务器系统。大多数服务器本身具有并行处理能力,例如ASP.NET可并行地处理多个请求。某些情况下,在服务器系统中编写并行代码仍然有用(如果你知道并发用户数量会一直是少数)。但通常情况下,在服务器系统上进行并行编程,将降低本身的并行处理能力,并且不会有实际的好处。

顺序程序设计:

a = 3,b = 5,现交换a,b的值,这个问题就好像交换两个杯子水,这当然要用到第三个杯子,假如第三个杯子是c,那么正确的程序为: c = a; a = b; b = c; 执行结果是a = 5,b = c = 3如果改变其顺序,写成:a = b; c = a; b = c; 则执行结果就变成a = b = c = 5,不能达到预期的目的,初学者最容易犯这种错误。 顺序结构可以独立使用构成一个简单的完整程序,常见的输入、计算,输出三部曲的程序就是顺序结构,例如计算圆的面积,其程序的语句顺序就是输入圆的半径r,计算s = 3.14159*r*r,输出圆的面积s。不过大多数情况下顺序结构都是作为程序的一部分,与其它结构一起构成一个复杂的程序,例如分支结构中的复合语句、循环结构中的循环体等。

进程互斥与同步

1.解释并发与并行,并说明两者关系。

并发的实质是一个物理CPU(也可以多个物理CPU) 在若干道程序之间多路复用,并发性是对有限物理资源强制行使多用户共享以提高效率。
并行性指两个或两个以上事件或活动在同一时刻发生。在多道程序环境下,并行性使多个程序同一时刻可在不同CPU上同时执行。

 并发与并行是两个既相似而又不相同的概念:并发性,又称共行性,是指能处理多个同时性活动的能力;并行是指同时发生的两个并发事件,具有并发的含义,而并发则不一定并行,也亦是说并发事件之间不一定要同一时刻发生。

2.进程间有哪几种关系?分别要采取什么策略?

进程间存在两种基本关系:竞争和协助。

多个交互式进程,他们共享一个计算机资源,使得原本不存在逻辑关系的诸进程因共享资源而产生交互和制约关系,这是间接制约关系,又称互斥关系。

一个作业科涉及一组并发进程,它们为了完成共同的任务需要分工协作,由于每个进程都独立地以不可预知的速度推进,在执行的先后次序上就要有约束,需要相互协作的进程在某些关键点上协调各自的工作。

3.为什么说进程的互斥也是一种同步?

互斥指的是某种资源一次只允许一个进程使用,即你在使用的时候我不使用,我在使用的时候你不使用,这就是一种协调,一种“步伐”上的一致,因而也就是一种同步。

4.解释死锁与“饥饿”,并说明两者关系。

死锁:是指两个或两个以上的进程(或线程)在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁进程。
死锁发生的四个条件
1、互斥条件:线程对资源的访问是排他性的,如果一个线程对占用了某资源,那么其他线程必须处于等待状态,直到资源被释放。
2、请求和保持条件:线程T1至少已经保持了一个资源R1占用,但又提出对另一个资源R2请求,而此时,资源R2被其他线程T2占用,于是该线程T1也必须等待,但又对自己保持的资源R1不释放。
3、不剥夺条件:线程已获得的资源,在未使用完之前,不能被其他线程剥夺,只能在使用完以后由自己释放。
4、环路等待条件:在死锁发生时,必然存在一个“进程-资源环形链”,即:{p0,p1,p2,...pn},进程p0(或线程)等待p1占用的资源,p1等待p2占用的资源,pn等待p0占用的资源。(最直观的理解是,p0等待p1占用的资源,而p1而在等待p0占用的资源,于是两个进程就相互等待)

产生饥饿的主要原因是:在一个动态系统中,对于每类系统资源,操作系统需要确定一个分配策略,当多个进程同时申请某类资源时,由分配策略确定资源分配给进程的次序。有时资源分配策略可能是不公平的,即不能保证等待时间上界的存在 。在这种情况下,即使系统没有发生死锁,某些进程也可能会长时间等待.当等待时间给进程推进和响应带来明显影响时,称发生了进程饥饿,当饥饿到一定程度的进程所赋予的任务即使完成也不再具有实际意义时称该进程被饿死。举个例子,当有多个进程需要打印文件时,如果系统分配打印机的策略是最短文件优先,那么长文件的打印任务将由于短文件的源源不断到来而被无限期推迟,导致最终的饥饿甚至饿死。
饥饿没有其产生的必要条件,随机性很强。并且饥饿可以被消除,因此也将忙等待时发生的饥饿称为活锁。

死锁和饥饿的异同

相同点:二者都是由于竞争资源而引起的。

不同点:

  1. 从进程状态考虑,死锁进程都处于等待状态,忙等待(处于运行或就绪状态)的进程并非处于等待状态,但却可能被饿死;
  2. 死锁进程等待永远不会被释放的资源,饿死进程等待会被释放但却不会分配给自己的资源,表现为等待时限没有上界(排队等待或忙式等待);
  3. 死锁一定发生了循环等待,而饿死则不然。这也表明通过资源分配图可以检测死锁存在与否,但却不能检测是否有进程饿死;
  4. 死锁一定涉及多个进程,而饥饿或被饿死的进程可能只有一个。
  5. 在饥饿的情形下,系统中有至少一个进程能正常运行,只是饥饿进程得不到执行机会。而死锁则可能会最终使整个系统陷入死锁并崩溃。

5.什么叫做临界区?如何解决进程对临界资源的访问冲突?

每个进程中访问临界资源的那段程序称为临界区,每次只准许一个进程进入临界区,进
入后不允许其他进程进入

用信号量及其PV操作处理实际问题

P187-43

Cemaphore

empty=1;橘子精=0;糖=0;水=0;

Process product(){

While(true){

P(empty);

产生一个随机数s;

If(s==0) V(橘子精);

If(s==1) V(水);

If(s==2) V(糖);

  }

}

Process P1(){      | Process P2(){      | Process P3(){

While(true){        While(true){        While(true){

P(橘子精);        P(糖);             P(水);

取走橘子精;       取走糖;           取走水;

V(empty);        V(empty);            V(empty);

    }             }             }

  }             }            }

Coend

2.IPO问题:有多个输入进程、多个处理进程和多个输出进程。输入进程把数据逐步输入到一个有M个单位缓冲区B1上,经处理进程处理之后放到有N个单位的缓冲区B2上,由输出进程进行输出。

        a.这个问题有哪些进程?进程之间有什么样的制约关系?

        b.用信号量及PV操作写出这些进程之间的同步算法

解:

   a:有输入进程、处理进程、输出进程,进程之间有同步关系。

虚拟存储管理

(2):1、fifi算法如下 

页面走向:0 0 1 1 0 3 1 2 2 4 4 3 

缺页率为 6/12=50%

2、LRU算法如下

页面走向:0 0 1 1 0 3 1 2 2 4 4 3 

缺页率:7/12=58.3%

3、POT算法如下

页面走向:0 0 1 1 0 3 1 2 2 4 4 3 

缺页率:5/12=41.7

猜你喜欢

转载自www.cnblogs.com/ze-ze/p/11005083.html
今日推荐