您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 管理学资料 > 北方工业大学-计算机操作系统-作业总复习答案
11.1什么是操作系统的基本功能?答:操作系统的职能是管理和控制计算机系统中的所有硬、软件资源,合理地组织计算机工作流程,并为用户提供一个良好的工作环境和友好的接口。操作系统的基本功能包括:处理机管理、存储管理、设备管理、信息管理(文件系统管理)和用户接口等。1.2什么是批处理、分时和实时系统?各有什么特征?答:批处理系统(batchprocessingsystem):操作员把用户提交的作业分类,把一批作业编成一个作业执行序列,由专门编制的监督程序(monitor)自动依次处理。其主要特征是:用户脱机使用计算机、成批处理、多道程序运行。分时系统(timesharingoperationsystem):把处理机的运行时间分成很短的时间片,按时间片轮转的方式,把处理机分配给各进程使用。其主要特征是:交互性、多用户同时性、独立性。实时系统(realtimesystem):在被控对象允许时间范围内作出响应。其主要特征是:对实时信息分析处理速度要比进入系统快、要求安全可靠、资源利用率低。1.3多道程序(multiprogramming)和多重处理(multiprocessing)有何区别?答:多道程序(multiprogramming)是作业之间自动调度执行、共享系统资源,并不是真正地同时执行多个作业;而多重处理(multiprocessing)系统配置多个CPU,能真正同时执行多道程序。要有效使用多重处理,必须采用多道程序设计技术,而多道程序设计原则上不一定要求多重处理系统的支持。2.2作业由哪几部分组成?各有什么功能?答:作业由三部分组成:程序、数据和作业说明书。程序和数据完成用户所要求的业务处理工作,系统通过作业说明书控制文件形式的程序和数据,使之执行和操作。2.4试述SPOOLING系统的工作原理。答:在SPOOLING系统中,多台外围设备通过通道或DMA器件和主机与外存连接起来,作业的输入输出过程由主机中的操作系统控制。操作系统中的输人程序包含两个独立的过程,一个过程负责从外部设备把信息读入缓冲区,另一个过程是写过程,负责把缓冲区中的信息送人到外存输入井中。在系统输人模块收到作业输人请求后,输人管理模块中的读过程负责将信息从输人装置读人缓冲区。当缓冲区满时,由写过程将信息从缓冲区写到外存输人井中。读过程和写过程反复循环,直到一个作业输入完毕。当读过程读到一个硬件结束标志后,系统再次驱动写过程把最后一批信息写入外存并调用中断处理程序结束该次输入。然后,系统为该作业建立作业控制块JCB,从而使输入井中的作业进人作业等待队列,等待作业调度程序选中后进人内存。2.5操作系统为用户提供哪些接口?它们的区别是什么?答:操作系统为用户提供两个接口,一个是系统为用户提供的各种命令接口,用户利用这些操作命令来组织和控制作业的执行或管理计算机系统。另一个接口是系统调用,编程人员使用系统调用来请求操作系统提供服务,例如申请和释放外设等类资源、控制程序的执行速度等。22.7什么是系统调用?系统调用与一般用户程序有什么区别?与库函数和实用程序又有什么区别?答:系统调用是操作系统提供给编程人员的唯一接口。编程人员利用系统调用,在源程序以及动态请求和释放系统资源,调用系统中已有的系统功能来完成那些与机器硬件部分相关的工作以及控制程序的执行速度等。因此,系统调用像一个黑箱子那样,对用户屏蔽了操作系统的具体动作而只提供有关的功能。它与一般用户程序、库函数和实用程序的区别是:系统调用程序是在核心态执行,调用它们需要一个类似于硬件中断处理的中断处理机制来提供系统服务。3.2试比较进程和程序的区别。答:(1)进程是一个动态概念,而程序是一个静态概念,程序是指令的有序集合,无执行含义,进程则强调执行的过程。(2)进程具有并行特征,程序则没有。(3)不同的进程可以包含同一个程序,同一程序在执行中也可以产生多个进程。3.3我们说程序的并发执行将导致最终结果失去封闭性。这话对所有的程序都成立吗?试举例说明。答:并非对所有的程序均成立。例如:beginlocalxx:=10print(x)end上述程序中x是内部变量,不可能被外部程序访问,因此这段程序的运行不会受外部环境影响。3.4试比较作业和进程的区别。答:一个进程是一个程序对某个数据集的执行过程,是分配资源的基本单位。作业是用于需要计算机完成某项任务,而要求计算机所做工作的集合。一个作业的完成要经过作业提交,作业收容、作业执行和作业完成4个阶段。而进程是已提交完毕的程序所执行过程的描述,足资源分配的基本单位。其主要区别关系如下:(1)作业是用户向计算机提交任务的任务实体。在用户向计算机提交作业之后,系统将存储在外存中的作业等待队列中等待执行。而进程则是完成用户任务的执行实体,是向系统申请分配资源的基本单位。任一进程,只要它被创建,总有相应的部分存在于内存中。(2)一个作业可由多个进程组成。且必须至少由一个进程组成,但反过来不成立。(3)作业的概念主要用在批处理系统中。像Unix这样的分时系统中,则没有作业概念。而进程的概念则用在几乎所有的多道程序系统中。3.6什么是临界区?试举一临界区的例子。答:临界区是指不允许多个并发进程交叉执行的一段程序。它是由于不同并发进程的程序段共享公用数据或公用数据变量而引起的。所以它叉被称为访问公用数据的那段程序。例如:getspace:beginlocalgg=stack[top]3top=top-1endrelease(ad):begintop=top+1stack[top]=adend3.8什么是进程间的互斥,什么是进程间同步?答:进程间的互斥是指:一组井发进程中的一个或多个程序段,因共享某一公有资源而导致它们必须以一个不许交叉执行的单位执行,即不允许两个以上的共享该资源的并发进程同时进入临界区。进程间的同步是指:异步环境下的一组并发进程因直接制约互相发送消息而进行互相合作、互相等待.是各进程按一定的速度执行的过程。3.11两进程Pa,Pb通过两FIFO缓冲区队列连接(如图E1.1),每个缓冲区长度等于传送消息长度。进程Pa,Pb之间的通信满足如下条件:(a)至少有一个空缓冲区存在时,相应的发送进程才能发送一个消息。(b)当缓冲队列中至少存在一个非空缓冲区时,相应的接收进程才能接受一个消息。试描述发送过程send(i,m)和接收过程receive(i,m)。这里i代表缓冲队列。答:定义数组buf[0],buf[1],bufempty[0],buffull[1]是Pa的私有信息量,buffull[0],bufempty[1]是Pb的私有信息量。初始时:bufempty[0]=bufempty[1]=n,(n为缓冲区队列的缓冲区个数)buffull[0]=buffull[1]=0send(I,m)beginlocalxP(bufempty[I])按FIFO方式选择一个空缓冲区buf[I](x)buf[I](x)=mbuf[I](x)置满标记V(buffull[I])Endreceive(I,m)beginlocalx4P(buffull[I])按FIFO方式选择一个装满数据的缓冲区buf[I](x)m=buf[I](x)buf[I](x)置空标记V(bufempty[I])EndPa调用send(0,m)和receive(1,m)Pb调用send(1,m)和receive(0,m)3.13编写一个程序使用系统调用fork生成3个子进程,并使用系统调用pipe创建一管道,使得这3个子进程和父进程公用同一个管道进行信息通信。答:main(){intr,p1,p2,p3,fd[2];charbuf[50],s[5];pipe(fd);while((p1=fork())==-1);if(p1==0){Lock(fd[1],1,0);sprintf(buf,”childprocessP1issendingmessage!\n”);printf(“childprocessP1!\n”);write(fd[1],buf,50);sleep(5);lockf(fd[1],0,0);exit(0);}else{while((p2=fork())==-1);if(p2==0){sprintf(buf,”childprocessP2issendingmessage!\n”);printf(“childprocessP2!\n”);write(fd[1],buf,50);sleep(5);lockf(fd[1],0,0);exit(0);}}else{5while((p3=fork())==-1);if(p3==0){sprintf(buf,”childprocessP3issendingmessage!\n”);printf(“childprocessP3!\n”);write(fd[1],buf,50);sleep(5);lockf(fd[1],0,0);exit(0);}}wait(0);if(e=read(fd[0],s,50)==-1)printf(“can’treadpipe\n”);elseprintf(“%s\n”,s);wait(0);if(r=read(fd[0],s,50)==-1)printf(“can’treadpipe\n”)elseprintf(“%s\n”,s);exit(0);}3.14设有5个哲学家,共享一张放有五把椅子的桌子,每人分得一把椅子。但是,桌子上总共只有五支筷子,在每人两边分开各放一支。哲学家们在肚子饥饿时才试图分两次从两边拾起筷子就餐。条件:(1)只有拿到两支筷子时,哲学家才能吃饭。(2)如果筷子已在他人手上,则该哲学家必须等到他人吃完之后才能拿到筷子。(3)任一哲学家在自己未拿到两支筷子吃饭之前,决不放下自己手中的筷子。试:(1)描述一个保证不会出现两个邻座同时要求吃饭的通信算法。(2)描述一个既没有两邻座同时吃饭,又没有人饿死(永远拿不到筷子)的算法。在什么情况下,5个哲学家全部吃不上饭?答(1)设信号量c[o]~c[4],初始值均为l,分别表示I号筷子被拿(I=0,1,2,3,4)。Send(I):第I个哲学家要吃饭BeginP(c[I]);P(c[(I+1)mod5]);eat;V(c[(I+1)mod5]);V(c[I]);6end该过程能保证两邻座不同时吃饭,但会出现5个哲学家一人拿一支筷子,谁也吃不上饭的死锁情况。答(2)解决的思路如下:让奇数号的哲学家先取右手边的筷子,让偶数号的哲学家先取做左手边的筷子。这样,任何一个哲学家拿到一支筷子之后,就已经阻止了他邻座的一个哲学家吃饭的企图,除非某个哲学家一直吃下去,否则不会有人饿死。Send(I):第I个哲学家要吃饭BeginIf(Imod2)==0Then{P(c[I]);P(c[(I+1)mod5]);eat;V(c[I]);V(c[(I+1)mod5]);}else{P(c[(I+1)mod5]);P(c[I]);eat;V(c[(I+1)mod5]);V(c[I]);}End3.15什么是线程?试述线程与进程的区别。答:线程是在进程内用于调度和占有处理机的基本单位,它由线程控制表、存储线程上下文的用户栈以及核心栈组成。线程可分为用户级线程、核心级线程以及用户、核心混合型线程等类型。其中用户级线程在用户态下执行,CPU调度算法和各线程优先级都由用户设置,与操作系统内核无关。核心级线程的调度算法及线程优先级的控制权在操作系统内核。混合型线程的控制权则在用户和操作系统内核二者。线程与进程的主要区别有:(1)进程是资源管理的基本单位,它拥有自己的地址空间和各种资源,例如内存空间、外部设备等;线程只是处理及调度的基本单位,它只和其他线程一起共享进程资源,但自己没有任何资源。(2)以进程为单位进行处理机切换和调度时,由于涉及到资源转移以及现场保护等问题,将导致处理机切换时间变长,资源利用率降低。以线程为单位进行处理机切换和调度时,由于不发生资源变化,特别是地址空间的变化,处理机切换的时间较短
本文标题:北方工业大学-计算机操作系统-作业总复习答案
链接地址:https://www.777doc.com/doc-4349378 .html