计算机操作系统课程学习指导

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

计算机操作系统课程学习指导

2003-5

一、注意理解和掌握OS的重要术语和概念

理解和掌握OS的重要术语和概念是学好OS课程的基础。例如应会论述以下OS的一些重要概念。

1、现代OS的四种特征

1) 并发(Concurrence)

并发性是指两个或多个事件在同一时间间隔内发生。在多道程序环境下,并发性是指宏观上在一段时间内有多道程序在同时运行。但在单处理机系统中,每一时刻仅能执行一道程序,故微观上,这些程序是在交替执行的。操作系统必须具各控制和管理各种并发活动的能力。

2) 共享(Sharing)

系统中的资源可供内存中多个并发执行的进程共同使用。有两种资源共享方式:1、当一个进程正在访问该资源时,其它欲访问该资源的进程必须等待,仅当该进程访问完并释放该资源后,才允许另一进程对该资源进行访问,称为互斥共享方式。2.允许在一段时间内由多个进程同时对该资源进行访问。称为同时共享方式。

3) 虚拟(Virtual)

在操作系统中的所谓“虚拟”,是指通过某种技术把一个物理实体变成若干个逻辑上的对应物。物理实体(前者)是实的,即实际存在的,而后者是虚的,是用户感觉上的东西。例如利用多道程序技术可以把一台物理上的CPU虚拟为多台逻辑上的CPU,也称为虚处理机。

4) 异步性(Asynchronism)

在多道程序环境下,允许多个进程并发执行,进程的执行并非“一气呵成”,而是以“走走停停”的方式运行。内存中的每个进程以怎样的速度向前推进,每道程序总共需多少时间才能完成,都是不可预知的。很可能是先进入内存的作业由于资源等因素的限制后完成,而后进入内存的作业先完成。

2、进程的五种基本特征

1) 动态性

进程是进程实体的执行过程,动态性是进程最基本的特性。动态性表现为:“它由创建而产生,由调度而执行,因资源缺乏而阻塞,因资源满足而被唤醒,由撤消而消亡”。

因此,进程具有生命期。

2) 并发性

指多个进程实体,同存于内存中,让它们公平的竞争CPU资源,使CPU能在很短的时间内轮流的执行多个程序。宏观上产生在单处理机上同时运行多个程序的效果。

3) 独立性

指进程实体是一个能独立运行的基本单位,同时也是系统中独立获得资源和独立调度的基本单位。凡未建立进程的程序,不能作为一个独立的单位参加运行。

4) 异步性

指进程按各自独立的、不可预知的速度向前推进;或者说,进程按异步方式运行。

正是这一特征,将导致程序执行的不可再现性。因此,在OS中必须采取某种措施来保证各程序之间能协调运行。

5) 结构特征

进程实体是由程序段、数据段及进程控制块三部分组成,有人把这三部分统称为“进程映像”。因此说进程具有结构性。

3、同步机制应遵循的四种准则

1) 空闲让进

当无进程处于临界区时,相应的临界资源处于空闲状态。因而可允许一个请求进入临界区的进程立即进入自己的临界区,以有效地利用临界资源。

2) 忙则等待

当已有进程进入自己的临界区时,意味着相应的临界资源正被访问,因而所有其它试图进入临界区的进程必须等待,以保证诸进程互斥地访问临界资源。

3) 有限等待

对要求访问临界资源的进程,应保证该进程能在有效时间内进入自己的临界区,以免陷入“死等”状态。

4) 让权等待

当进程不能进入自己的临界区时,应立即释放处理机,以免进程陷入“忙等”。

4、处理死锁的四种基本方法

1) 预防死锁

通过设置某些限制条件,去破坏产生死锁的四个必要条件中的一个或几个条件,来防止发生死锁。预防死锁是一种较易实现的方法,已被广泛使用。但由于所施加的限制条件往往太严格,可能导致系统资源利用率和系统吞吐量降低。

2) 避免死锁

不需事先采取各种限制措施去破坏产生死锁的必要条件,而是在资源的动态分配过程中,用某种方法去防止系统进入不安全状态,从而避免发生死锁。这种方法只需在事先加以较弱的限制条件,便可获得较高的资源利用率及系统吞吐量,在目前较完善的系统中,常用此方法来避免发生死锁。

3) 检测死锁

这种方法预先并不采取任何限制性措施,也不检查系统是否已进入不安全区,此法允许系统在运行过程中发生死锁。但可通过系统设置的检测机构,及时地检测出死锁的发生,并精确地确定与死锁有关的进程和资源;然后,采取适当措施,从系统中将已发生的死锁清除掉。

4) 解除死锁

这是与检测死锁相配套的一种措施,用于将进程从死锁状态下解脱出来。常用的实施方法是撤消或挂起一些进程,以便回收一些资源,再将这些资源分配给已处于阻塞状态的进程,使之转为就绪状态以继续运行。

5、可变分区内存管理的分区分配算法

1) 首次适应算法(First Fit)

FF算法要求空闲分区地址递增的次排列或链接。在进行内存分配时,从首项开始顺序查找,直至找到一个能满足其大小要求的空闲分区为止。然后,再按照作业的大小,从该分区中划出一块内存空间分配给请求者,余下的空闲分区仍留在空闲链中。该算法倾向于优先利用内存中低址部分的空闲分区,在高址部分的空闲分区很少被利用,从而保留了高址部分的大空闲区。其缺点是低址部分不断被划分,致使留下许多难以利用的、很小的空闲分区。

2)循环首次适应算法(Loop First Fit)

LFF是由首次适应算法演变而形成的。在为进程分配内存空间时,不再每次从首项开始查找,而是从上次找到的空闲分区的下一个空闲分区开始查找,直至找到第一个能满足要求的空闲分区,并从中划出一块与请求的大小相等的内存空间分配给作业。该算法能使内存中的空闲分区分布得更均匀,减少查找空闲分区的开销,但这会缺乏大的空闲分区。

3) 最佳适应算法(Best Fit)

“最佳”的含义是指每次为作业分配内存时,总是把既能满足要求、又是最小的空闲分区分配给作业,避免了“大材小用”。为了加速寻找,该算法要求将所有的空闲区,按其大小以递增的顺序形成一空闲区链。这样,第一次找到的满足要求的空闲区,必然是最佳的。孤立地看,最佳适应算法似乎是最佳的,然而在宏观上却不一定。因为每次分配后所切割下的剩余部分,总是最小的,这样,在存储器中会留下许多这样难以利用的小空闲区。

二、会分析和解决进程控制中的有关问题

例如对于教材P60习题1,2类似的问题,我们能画出它的前趋图:

S1: a=5-x;

S2: b=a*x;

S3: c=4*x;

S4: d=b+c;

S5: e=d+3;

前趋图:

会利用Berhstein条件证明哪些语句可并发执行,而哪些语句不能并发执行;

S1的读写集合: R(S1)={x} W(S1)={a}

S2的读写集合: R(S2)={a,x} W(S2)={b}

S3的读写集合: R(S3)={x} W(S3)={c}

S4的读写集合: R(S4)={b,c} W(S4)={d}

S5的读写集合: R(S5)={d} W(S5)={e}

S1和S3的Berhstein条件为:

R(S1)∩W(S3)∪R(S3)∩W(S1)∪W(S1)∩W(S3)= {x}∩{c}∪{x}∩{a}∪{a}∩{c}={} 结果为一空集合,说明S1和S3无前后趋关系,所以S1和S3可以并发执行。

而S3和S4的Berhstein条件为:

R(S3)∩W(S4)∪R(S4)∩W(S3)∪W(S3)∩W(S4)= {x}∩{d}∪{b,c}∩{c}∪{c}∩{d}={c}

结果不为空集合,即S3是S4的前趋,S3和S4不可以并发执行。

相关文档
最新文档