操作系统大题总结解答

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

处理机的执行模式与执行状态

大多数处理器都至少支持两种执行模式,一种是同操作系统有关的模式,另一种则是同用户程序有关的模式。较低特权的模式称为用户模式。较高特权的模式称系统模式、控制模式或内核模式。 内核模式能执行所有的指令,访问所有的内存; 用户模式则只能执行有限的指令,访问规定的内存

处理器往往有一个或多个寄存器来保存处理器模式信息——程序状态字(PSW )

为了防止操作系统及其关键数据(如PCB )遭到用户程序有意或无意的破坏,通常将处理机的执行状态分为两种:核心态与用户态

核心态又称管态、系统态,是操作系统管理程序执行时机器所处的状态。 它具有较高的特权,能执行一切指令,能访问所有的寄存器和存储区。 用户态又称目态,是用户程序执行时机器所处的状态。

它具有较低的特权,只能执行规定的指令和只能访问指定的寄存器和存储区。

信号量练习2.某电话亭每一时刻最多只能容纳一个人打电话。来打电话的人,如果看到电话亭空闲,则直接进入电话亭打电话;如果看到电话亭里正有人在打电话,则在外面排队等候,直到轮到自己,再进入电话亭打电话。请用信号量来表达打电话的进程对电话机的互斥使用逻辑。

该电话亭每次只能容纳一个人打电话(进程)使用,所以是一个临界资源,资源量为1,各进程要互斥使用。

用信号量来表达资源的数量:

semaphore mutex=1;(或empty=1) main( ) { Cobegin

Pi ( );//(i=1,2,3,4,……); Coend }

练习3.某电话亭共有3台电话机,即能容纳3个人(3个进程)同时打电话。来打电话的人,如果看到电话亭有空闲机子,则直接进入电话亭打电话;如果看到电话亭人满,则在外面排队等候,直到轮到自己再进入电话亭打电话。请用信号量机制表达打电话的进程对电话机资源的使用限制。 用信号量来表达空闲的电话机数:

资源量的初值为3(表示开始时有3

semaphore empty=3; main ( ) { Cobegin

Pi ( ); i=1,2,3,…… Coend }

4.生产者-消费者问题

一个说明空缓冲单元的数目,用empty 表示,其初值为有界缓冲区的大小n ,另一个说明满缓冲单元的数目,用full 表示,其初值为0。而有界缓冲区是一个临界资源,必须互斥使用,因此还需要另外设置一个互斥信号量mutex ,其初值为1。semaphore full=0; //第一步:定义信号量, semaphore empty=n; //并为信号量赋初值 semaphore mutex=1;

main( ) // 第二步:编写主函数, { cobegin //在其中调用各个进程 produceri ( ); //i=1,2,…m

consumerj ( ); //j=1,2,…k coend }

例.有三个作业按下表的时间提交给系统,按照先来先服务的调度算法计算它们的平均周转时间T 和平均带权周转时间W

先来先服务;

T=(2.00+2.90+3.00)/3=2.63 W=(2/2+2.90/1+3.00/0.25)/3=5.30 短作业优先;

T=(2.00+3.15+2.00)/3=2.38 W=(2/2+3.15/1+2.00/0.25)/3=4.05

表中有4个作业提交给系统,按响应比高者优先算法调度,计算它们的平均周转时间和平均带权周转时间

producer i( ) { while (1) { 生产一个产品; p(empty) ; p(mutex); 将一个产品送入有界 缓冲区; V(mutex); V(full);

}

consumer j( ) { while (1) { p(full) ; p(mutex); 从缓冲区中取出一个 产品; V(mutex); V(empty); 消费一个产品 }

作业1做完后,其它三个作业的响应比为:

R2p=1+等待时间/估计运行时间=1+1.5/0.5=4

R3p=1+1.0/0.1=11

R4p=1+0.5/0.2=3.5

故作业3的响应比最大,作业1完成后要运行作业3。作业3运行结束时,时间为10:06,这时候再看作业2、4的响应比哪个高:R2p=1+等待时间/估计运行时间=1+1.6/0.5=4.2

R4p=1+0.6/0.2=4

R2p>R4p 所以先调度作业2到内存中,

作业2运行完毕,结束时间为:10:36

T=(2+2.1+1.1+1.3)/4=1.625

W=(2.00/2+2.1/0.5+1.1/0.1+1.3/0.2)/4=5.7

银行家算法;例1

若系统运行中出现如下所示的资源分配情况,该系统是否安全?如果进程P2此时提出资源申请(1,2,2,2),系统能否将资源分配给它?为什么?

解(1):利用安全性算法对此刻的资源分配情况进行分析,可得到如下安全性检测表:

从上表中可以看出,此时存在一个安全序列{P0,P3,P4,P1,P2},故该系统是安全的。

请问还有其它的安全序列吗?(如P0-P3-P1-P4-P2)

解(2):P2提出请求(1,2,2,2),按银行家算法进行检查:

Request(1,2,2,2)<=Need(2,3,5,6)

Request(1,2,2,2)<=Available(1,6,2,2)

试着把资源分配给P2,资源分配表中P2的项目改变的有:

Allocation=Allocation+(1,2,2,2)

Need=Need-(1,2,2,2)

Available=Available-(1,2,2,2)

由此得到新的资源分配表:

经检查发现可用的资源Available(0,4,0,0)已不能再满足任何进程的需要,所以,系统处于不安全状态,系统不能把资源分配给P2。

内存的分配与回收

在多道程序设计的环境中,当有作业进入计算机系统时,存储管理模块应能根据当时的内存分配情况,按作业要求,分配给它适当的内存。当某个作业完成之后不再使用内存时,应回收其占用的内存空间。

按照分配时机的不同,有两种内存分配形式:

静态存储分配和动态存储分配

(1)静态存储分配:

指内存分配是在作业运行之前,各目标模块连接后,把整个作业一次性全部装入内存,并规定在作业的整个运行过程中,不允许再申请其它内存或在内存中移动位置。也就是说,内存分配是在作业运行前一次性完成的。

(2)动态存储分配:

作业要求的基本内存空间是在目标模块装入内存时分配的,但在作业运行过程中,允许作业再申请附加的内存空间或者在内存中移动。即分配工作可以在作业运行前及运行过程中逐步完成

显然,动态存储分配具有较大的灵活性。它不要求一个作业把全部信息装入内存才开始运行,而是在作业运行期间需要某些信息时,系统才将其调入内存,作业中暂不使用的信息可放在辅存中,不必进入内存,从而大大提高了内存的利用率。

因此,内存中所有的空闲区和已分配的区域应当被合理地组织起来。

通常可用分区说明表、空闲区链表、存储分块表等组织内存区域。

地址重定位

1.内存空间(物理空间)

内存是由若干个存储单元组成的,每个存储单元都有一个编号。

该编号能唯一地确定一个存储单元,称为内存地址(物理地址)。

内存地址的集合称为内存地址(物理地址)空间,简称内存空间。

它是一个线性空间,其编址顺序为0,1,2,3,……,n-1,n的大小由实际组成存储器的存储单元的个数决定。

如,某个系统有64KB内存,则其内存空间为集合{0,1,2,……,65535}。

2.逻辑地址空间

在多道程序环境中,内存中可同时驻留多个相互独立的进程。

这些进程在内存中的地址,用户事先并不知道,且应用程序装入内存是随机的,每次装入内存时所占用的内存空间可能都不一样。

相关文档
最新文档