当前位置:首页 > 浙大远程操作系统原理离线作业及答案
操作系统原理离线作业
一、单选题 1.
进程P0和P1的共享变量定义及其初值为 boolean flag[2]; int turn=0;
flag[0]=FALSE;flag[1]=FALSE;
若进程P0和P1访问临界资源的类C代码实现如下:
void P0() //P0进程 { while(TURE){
flag[0]=TRUE; turn = 1; while (flag[1] && turn == 1) ; 临界区; flag[0] = FALSE; } }
void P1() //P1进程 { while(TURE){
flag[1]=TRUE; turn = 0; while (flag[0] && turn == 0) ; 临界区; flag[1] = FALSE; } }
则并发执行进程P0和P1时产生的情况是:D
A.不能保证进程互斥进入临界区、会出现“饥饿”现象 B.不能保证进程互斥进入临界区、不会出现“饥饿”现象 C.能保证进程互斥进入临界区、会出现“饥饿”现象 D.能保证进程互斥进入临界区、不会出现“饥饿”现象 2.有两个进程P1和P2描述如下: shared data: int counter = 6; P1 :
Computing;
counter=counter+1; Printing;
counter=counter-2; A. 4
B. 5
C. 6
D. 7
10
P2 :
两个进程并发执行,运行完成后,counter的值不可能为 C 。
3.某计算机采用二级页表的分页存储管理方式,按字节编址,页大小为2字节,页表项大小为2字节,逻辑地址结构为:
页目录号 页号 页内偏移量
逻辑地址空间大小为2页,则表示整个逻辑地址空间的页目录表中包含表项的个数至少是B A.64
B.128
C.256
D.512
4.在动态分区系统中,有如下空闲块:
空闲块 1 2 3 4
块大小(KB) 块的基址 80 75 55 90
60 150 250 350
16
此时,某进程P请求50KB内存,系统从第1个空闲块开始查找,结果把第4个空闲块分配给了P进程 ,请问是用哪一种分区分配算法实现这一方案? C
A. 首次适应 B. 最佳适应 C. 最差适应 D. 下次适应
5.在一页式存储管理系统中,页表内容如下所示。
页号 帧号 0 1 2
2 1 8
B. 8192 B. 2
12
若页大小为1K,逻辑地址的页号为2,页内地址为451,转换成的物理地址为 A
A. 8643 A. 2 段号 0 1 2 3
24
C. 2048 C. 2
10
D. 2499 D. 2
32
6.采用段式存储管理的系统中,若地址用32位表示,其中20位表示段号,则允许每段的最大长度是 B
7.在一段式存储管理系统中,某段表的内容如下:
段首址 段长
100K 560K 260K 670K
35K 20K 15K 32K
24
若逻辑地址为(2, 158),则它对应的物理地址为__B___。
A. 100K+158 B. 260K+158 A. 2字节
8
C. 560K+158 D. 670K+158
D. 2字节
32
8.一个分段存储管理系统中,地址长度为32位,其中段长占8位,则最大段长是 C
B. 2字节
16
C. 2字节
9.有一请求分页式存储管理系统,页面大小为每页100字节,有一个50×50的整型数组按行为主序连续存放,每个整数占两个字节,将数组初始化为0的程序描述如下:
int A[50][50];
for (int i = 0; i < 50; i++) for (int j = 0; j < 50; j++)
A[i,j] = 0;
C. 100
D. 2500
若在程执行时内存只有一个存储块用来存放数组信息,试问该程序执行时产生 B 次缺页中断。 A.1 B. 50
10.一台计算机有4个页框,装入时间、上次引用时间、和每个页的访问位R和修改位M,如下所示: 页 装入时间 上次引用时间 R M 0 126 279 0 0 1 230 260 1 0 2 120 272 1 1 3 160 280 1 1
采用FIFO算法将淘汰 C 页; A. 0 页 装入时间 上次引用时间 R M 0 126 279 0 0 1 230 260 1 0 2 120 272 1 1 3 160 280 1 1
采用NRU算法将淘汰 A 页; A. 0 页 装入时间 上次引用时间 R M 0 126 279 0 0 1 230 260 1 0 2 120 272 1 1 3 160 280 1 1
采用LRU算法将淘汰 B 页; A. 0
B. 1
C. 2
D. 3
B. 1
C. 2
D. 3
12.一台计算机有4个页框,装入时间、上次引用时间、和每个页的访问位R和修改位M,如下所示:
B. 1
C. 2
D. 3
11.一台计算机有4个页框,装入时间、上次引用时间、和每个页的访问位R和修改位M,如下所示:
13.一台计算机有4个页框,装入时间、上次引用时间、和每个页的访问位R和修改位M,如下所示: 页 装入时间 上次引用时间 R M 0 126 279 0 0 1 230 260 1 0 2 120 272 1 1 3 160 280 1 1
采用第二次机会算法将淘汰___A___页; A. 0 二、综合题
1.4在所列的两种设置中,哪些功能需要操作系统提供支持? (a)手持设备(b)实时系统。
a. 批处理程序b. 虚拟存储器c. 分时
答:对于实时系统来说,操作系统需要以一种公平的方式支持虚拟存储器和分时系统。对于手持系统,操作系统需要提供虚拟存储器,但是不需要提供分时系统。批处理程序在两种环境中都是非必需的。 1.17列出下列操作系统的基本特点:
a.批处理b.交互式c.分时d.实时e.网络f.并行式g.分布式h.集群式i.手持式
答: a.批处理:具有相似需求的作业被成批的集合起来,并把它们作为一个整体通过一个操作员或自动作业程序装置运行通过计算机。通过缓冲区,线下操作,后台和多道程序,运用尝试保持CPU和I/O一直繁忙,从而使得性能被提高。批处理系统对于运行那些需要较少互动的大型作业十分适用。它们可以被更迟地提交或获得。
a.交互式:这种系统由许多短期交易构成,并且下一个交易的结果是无法预知的。从用户提交到等待结果的响应时间应该是比较短的,通常为1秒左右。
b.分时:这种系统使用CPU调度和多道程序来经济的提供一个系统的人机通信功能。CPU从一个用户快速切换到另一个用户。以每个程序从终端机中读取它的下一个控制卡,并且把输出的信息正确快速的输出到显示器上来替代用soopled card images定义的作业。 c.实时:经常用于专门的用途。这个系统从感应器上读取数据,而且必须在严格的时间内做出响应以保证正确的性能。 d.网络:提供给操作系统一个特征,使得其进入网络,比如;文件共享。
e.并行式:每一个处理器都运行同一个操作系统的拷贝。这些拷贝通过系统总线进行通信。
f.分布式:这种系统在几个物理处理器中分布式计算,处理器不共享内存或时钟。每个处理器都有它各自的本地存储器。它们通过各种通信线路在进行通信,比如:一条高速的总线或一个本地的网络。
g.集群式:集群系统是由多个计算机耦合成单一系统并分布于整个集群来完成计算任务。
i.手持式:一种可以完成像记事本,email和网页浏览等简单任务的小型计算机系统。手持系统与传统的台式机的区别是更小的内存和屏幕以及更慢的处理能力。
2.3讨论向操作系统传递参数的三个主要的方法。
答:1.通过寄存器来传递参数 2.寄存器传递参数块的首地址 3.参数通过程序存放或压进堆栈中,并通过操作系统弹出堆栈。 2.12采用微内核方法来设计系统的主要优点是什么?在微内核中如何使客户程序和系统服务相互作用?微内核方法的缺点是什么? 答:a)增加一个新的服务不需要修改内核 b) 在用户模式中比在内核模式中更安全、更易操作 c) 一个简单的内核设计和功能一般导致一个更可靠的操作系统
用户程序和系统服务通过使用进程件的通信机制在微内核中相互作用,例如发送消息。这些消息由操作系统运送。微内核最主要
的缺点是与进程间通信的过度联系和为了保证用户程序和系统服务相互作用而频繁使用操作系统的消息传递功能。 3.2 问:描述一下内核在两个进程间进行上下文功换的动作.
答:总的来说,操作系统必须保存正在运行的进程的状态,恢复进程的状态。保存进程的状态主要包括CPU寄存器的值以及内存分配,上下文切换还必须执行一些确切体系结构的操作,包括刷新数据和指令缓存。
进程关联是由进程的PCB来表示的,它包括CPU寄存器的值和内存管理信息等。当发
生上下文切换时,内核会将旧进程的关联状态保存在其PCB中,然后装入经调度要执行的新进程的已保存的关联状态。 3.4 如下所示的程序,说明LINE A可能会输出什么? #include
pid_t pid;
B. 1
C. 2
D. 3
/* fork a child process */ pid = fork(); if (pid == 0) { /* child process */
value +=15;
}
else { /* parent process */ /* parent will wait for the child to complete */ wait(NULL);
printf(\ exit(0); }
}
答:Parent :value=8。
4.4在多线程程序中,以下哪些程序状态组成是被线程共享的? a.寄存值 b.堆内存 c.全局变量 d.答:一个线程程序的线程共享堆内存和全局变量,但每个线程都有属于自己的一组寄存值和栈内存。
4.7由图4.11给出的程序使用了Pthread的应用程序编程接口(API),在程序的第c行和第p行分别会输出什么?#include
void *runner(void *param); /* the thread */ int main(int argc, char *argv[]) { int pid; pthread_t tid; pthread_attr_t attr; pid = fork();
if (pid == 0) {/* child process */ pthread_attr_init(&attr);
pthread_create(&tid, &attr, runner, NULL); pthread_join(tid, NULL);
printf(“CHILD: value = %d”, value); /* LINE C*/ }
else if (pid > 0) {/* parent process */ wait(NULL);
printf(“PARENT: value = %d”, value); /* LINE P */ } }
void *runner(void *param) { value=10; pthread_exit(0); }
答:c行会输出10,p行会输出0.
5.4考虑下列进程集,进程占用的CPU区间长度以毫秒来计算:
栈内存
共分享92篇相关文档