进程的共享存储区通信--带答案版
操作系统题库+答案

操作系统题库+答案第⼀部分引⾔⼀、选择题1、下列选择中,哪些不是操作系统关⼼的主要问题。
(浙⼤2003)( 4)(1)管理计算机裸机(2)设计提供⽤户与计算机硬件系统间的界⾯;(3)管理计算机系统资源(4)⾼级程序设计语⾔的编译器。
2、从⽤户⾓度看,操作系统是(C )。
A、计算机资源的管理者;B、计算机⼯作流程的组织者;C、⽤户与计算机之间的接⼝;D、由按层次结构组成的软件模块的集合。
3、引⼊多道程序技术的前提条件之⼀是系统具有(3)(西电00)(1)多个cpu;(2)多个终端;(3)中断功能;(4)分时功能4、操作系统是⼀种A。
A.系统软件B.系统硬件C.应⽤软件D.⽀援软件5、B操作系统允许⼀台主机上同时连接多台终端,多个⽤户可以通过各⾃的终端同时交互地使⽤计算机。
A.实时B.分时C.分布式D.单⽤户6、如果操作系统具有很强的交互性,可同时供多个⽤户使⽤,但时间响应不太及时,则属于分时系统类型;如果操作系统可靠,时间响应及时但仅有简单的交互能⼒则属于实时系统类型。
⼆、判断题1、所谓多道程序设计,即指每⼀时刻有若⼲个进程在执⾏。
(×)(南京⼤学00)2、采⽤多道程序设计的系统中,系统的程序道数越多,系统效率越⾼。
(×)(西电01)3、由于采⽤了分时技术,⽤户可以独占计算机的资源。
(×)4、多道程序设计是利⽤了CPU和通道的并⾏⼯作来提⾼系统利⽤率的。
(×)5、多道程序设计可以缩短系统中作业的执⾏时间。
(×)6、在⼀个兼顾分时操作系统和批处理系统中,通常把终端作业称为前台作业,⽽把批处理型作业称为后台作业。
(√)7、批处理系统不允许⽤户随时⼲预⾃⼰程序的运⾏。
(√)8、Windows操作系统完全继承了分时系统的特点。
(√)9、并发是并⾏的不同表述,其原理相同。
(×)(清华1998)10、在单处理机系统中实现并发技术后,判断:(1)各进程在某⼀时刻并⾏运⾏,cpu与外设间并⾏⼯作;(×)(2)各进程在⼀个时间段内并⾏运⾏,cpu与外设间串⾏⼯作;(×)(3)各进程在⼀个时间段内并⾏运⾏,cpu与外设间并⾏⼯作。
操作系统_复习_选择225题(有答案)

C.进程的调度性D.进程的异步性
A.文件系统B.光盘系统
C.磁盘系统D.存储系统
A
4.(__)是将作业不需要或暂时不需要的部分移到外存,让出内存空间以调入其他所需程序或数据。
A.覆盖技术B.交换技术
C.虚拟技术D.物理扩充
B
5.(__)是解决进程间同步和互斥的一对低级通信原语。
A.lock和unlockB.P原语和V原语
C.W原语和S原语D.Send和Receive
B.在最近的过去用得多的页面在最近的将来也用得多
C.在最近的过去很久未使用的页面在最近的将来会使用
D.在最近的过去很久未使用的页面在最近的将来也不会使用
D
26.MS-DOS采用了(__)存储管理方案。
A.段式B.页式
C.单用户连续D.固定分区
C
27.SPOOLing技术的主要作用是(__)。
A.提高独占设备的利用率B.提高主机效率
D
19.10个并发进程使用同一个共享变量,如果最多允许6个进程同时进入其临界区,则互斥信号量的变化范围应是(__)。
A.6,5,…,1,0B.6,5,…,1,0,-1,…,-4
C.6,5,…,1,0,-1,…,-5D.6,5,…,1,0,-1,…,-3
B
20.CPU输出数据的速度远高于打印机的打印速度,可采用(__)解决这一矛盾。
B
53.操作系统是对(__)进行管理的软件
A.计算机软件B.计算机硬件
C.计算机资源D.应用程序
C
54.操作系统是管理计算机系统的处理机、内存、设备和文件等资源的(__)。
A.控制软件B.工具软件
C.应用软件D.系统软件
操作系统实验报告(进程间的共享存贮区和信号量通信)

case -1:perror("fork()");exit(0);case 0:do_child_loop(sem_set_id,FILE_NAME);exit(0);default:break;}}for(i = 0;i<10;i++){int child_status;wait(&child_status);}printf("main is done");fflush(stdout);return 0;}运行结果:二、共享主存段机制共享主存段为进程提供了直接通过主存进行通信的有效手段,不像消息缓存机制那样需要系统提供缓存,也不像pipe机制那样需要事先建立一个特殊文件,而是有通信双方直接访问某些共享虚拟存储器空间。
在系统V中,系统管理一组共享主存段控制块。
通信进程在使用共享主存段以前,首先提出申请,系统为止分配存储空间并返回共享主存段标识号。
一个共享段建立后,进程把它被附加到自己的虚拟存储空间中。
一个进程可以附加多个共享主存段。
一个主存段一旦被附加到进程的虚拟机空间后,对它的访问以其他虚拟机的访问完全相同。
但为了保证共享主存段数据完整性,通信的进程之间要互斥的进行访问。
当通信进程不再需要该共享主存段时,可使用命令将其与进程分离,从而使其进程的虚空间删除。
为了理解进程通过共享主存段的通信过程,下面举例,一个是进程向共享段写信息的例子:一个是进行从共享段读信息的例子。
代码如下:四、实验过程与分析一、信号量机制在第一个例子的程序中创建了5个并发子进程,互斥地对文件进行写操作,将自己的进程号写到文件中去,信号量的初值为1,当地一个进程执行update_file函数时首先将信号量值-1,(相当于P操作)致使其它进程等待无法操作文件,直到其结束后,将其值变为1后(相当于V操作),其它进程并发竞争对文件的写操作,并将自己的pid 写入文件中。
在linux中信号量机制的执行既步骤如下所示:(1)信号量的定义:struct semaphore {spinlock_t lock;unsigned int count;struct list_head wait_list;};在linux中,信号量用上述结构体表示,我们可以通过该结构体定义一个信号量。
计算机操作系统习题及答案(4)

第4章进程同步与通信1)选择题(1)在操作系统中,P、V操作是一种_D__。
A. 机器指令B. 系统调用命令C. 作业控制命令D. 低级进程通信原语(2)若信号量S的初值为2,当前值为-1,则表示有_B__等待进程。
A. 0个B. l个C. 2个D. 3个(3)在直接通信方式中,系统提供两条通信原语进行发送和接收,其中Send原语中参数应是_C_。
A. sender,messageB. sender,mailboxC. receiver,messageD. receiver,mailbox(4)下述那个选项不是管程的组成部分_A__。
A. 管程外过程调用管程内数据结构的说明B. 管程内对数据结构进行操作的一组过程C. 局部于管程的共享数据说明D. 对局部于管程的数据结构设置初值的语句(5)某通信方式通过共享存储区来实现,其属于_D__。
A. 消息通信B. 低级通信C. 管道通信D. 高级通信(6)用P、V操作管理临界区时,信号量的初值应定义为__C__。
A. -1B. 0C. 1D. 任意值(7)临界区是_B__。
A. 一个缓冲区B. 一段程序C. 一段共享数据区D. 一个互斥资源(8)信箱通信是一种_D__通信方式。
A. 直接通信B. 信号量C. 低级通信D. 间接通信(9)对于两个并发进程,设互斥信号量为mutex,若mutex=0则__A_。
A. 表示有一个进程进入临界区B. 表示没有进程进入临界区C. 表示有一个进程进入临界区,另一个进程等待进入D. 表示有两个进程进入临界区(10)对信号量S执行V操作后,下述选项正确的是_C__。
A. 当S小于等于0时唤醒一个阻塞进程B. 当S小于0时唤醒一个阻塞进程C. 当S小于等于0时唤醒一个就绪进程D. 当S小于0时唤醒一个就绪进程(11)在消息缓冲通信中,消息队列属于_A__资源。
A. 临界B. 共享C. 永久D. 可剥夺(12)在消息缓冲通信机制中,使用的临界资源是_D__。
第2章 进程管理课后习题解答

第题中,如果修改问题中的同步算法,要求 对写进程优先,即一旦写进程到达,后续的读者进程必须等待, 而无论是否有读者进程在读文件。写出相应进程的程序段。 semaphore fmutex=1, rmutex=1, wmutex=1;que=1;
int rcount=0, wcount=0; void main() { parbegin(reader, writer); }
12
void reader { while(1) { wait(que); wait(rmutex); if(0==readcount) wait(fmutex); readcount++; signal(rmutex); signal(que); …. begin to read wait(rmutex); readcount--; if(readcount==0) signal (fmutex); signal(rmutex); } }
读者—写者问题(读优先) 读者 写者问题(读优先) 写者问题 semaphore rmutex=1,wmutex=1; int readcount=0; = void main() { parbegin(reader,writer); }
读者进程: 读者进程: void reader() { while(1) { wait(rmutex); if (readcount==0) wait(wmutex); readcount++; signal(rmutex); … 读操作 wait(rmutex); readcount--; if (readcount==0) signal(wmutex); signal(rmutex); } }
18
chopstick[ ={1 semaphore chopstick[5]={1,1,1,1,1}; viod main() { parbegin(P0(),P1(),P2(),P3(),P4()); parbegin(P0(),P1(),P2(),P3(),P4()); } Pi() /*i=0,1,2,3,4*/ { while(1) { wait(chopstick[i]); [ ] wait(chopstick[(i+1)%5]); [ ] eating; … signal(chopstick[i]); [ ] signal(chopstick[(i+1) %5]); [ ] thinking; } }
第二章 进程管理-答案

第二章进程管理一、单项选择题1、顺序程序和并发程序的执行相比,()。
A.基本相同B. 有点不同C.并发程序执行总体上执行时间快D.顺序程序执行总体上执行时间快2、在单一处理机上,将执行时间有重叠的几个程序称为()。
A.顺序程序B. 多道程序C.并发程序D. 并行程序3、进程和程序的本质区别是()。
A.存储在内存和外存B.顺序和非顺序执行机器指令C.分时使用和独占使用计算机资源D.动态和静态特征4、在下列特性中,不是进程的特性的是()。
A. 异步性B. 并发性C. 静态性D. 动态性5、各进程向前推进的速度是不可预知,体现出“走走停停”的特征,称为进程的()。
A.动态性B.并发性C.调度性D.异步性6、在单处理机系统中,处于运行状态的进程()。
A.只有一个B. 可以有多个C.不能被挂起D. 必须在执行完后才能被撤下7、下列进程状态的转换中,不正确的是()。
A. 就绪→运行B. 运行→就绪C. 就绪→阻塞D. 阻塞→就绪8、已经获得除()以外的所有运行所需资源的进程处于就绪状态。
A.存储器B. 打印机C. CPUD. 磁盘空间9、一个进程被唤醒意味着()。
A.该进程重新占有了CPUB.进程状态变为就绪C.它的优先权变为最大D.其PCB移至就绪队列的队首10、进程从运行状态变为阻塞状态的原因是()。
A.输入或输出事件发生B.时间片到C.输入或输出事件完成D.某个进程被唤醒11、为了描述进程的动态变化过程,采用了一个与进程相联系的(),根据它而感知进程的存在。
A.进程状态字B. 进程优先数C.进程控制块D. 进程起始地址12、操作系统中有一组常称为特殊系统调用的程序,它不能被系统中断,在操作系统中称为()。
A.初始化程序B. 原语C.子程序D. 控制模块13、进程间的基本关系为()。
A.相互独立与相互制约B.同步与互斥C.并行执行与资源共享D. 信息传递与信息缓冲14、两个进程合作完成一个任务,在并发执行中,一个进程要等待其合作伙伴发来信息,或者建立某个条件后再向前执行,这种关系是进程间的()关系。
操作系统实验---进程通信——共享存储区和信号量

实验报告实验题目姓名:学号:课程名称:操作系统实验所在学院:信息科学与工程学院专业班级:计算机任课教师:实验项目名称进程通信——共享存储区和信号量一、实验目的与要求:1、了解和熟悉共享存储机制2、了解和熟悉信号量机制3、熟悉信号量机制中使用的数据结构和信号量机制的操作以及控制。
4、了解共享主存段机制,学会对共享主存段的系统调用。
二、实验设备及软件:1、PC机一台2、Linux操作系统三、实验方法(原理、流程图)一、共享存储区1、共享存储区机制的概念共享存储区(Share Memory)是 UNIX 系统中通信速度最高的一种通信机制。
该机制可使若干进程共享主存中的某一个区域,且使该区域出现(映射)在多个进程的虚地址空间中。
另一方面,一个进程的虚地址空间中又可连接多个共享存储区,每个共享存储区都有自己的名字。
当进程间欲利用共享存储区进行通信时,必须先在主存中建立一共享存储区,然后将它附接到自己的虚地址空间上。
此后,进程对该区的访问操作,与对其虚地址空间的其它部分的操作完全相同。
进程之间便可通过对共享存储区中数据的读、写来进行直接通信。
图示列出二个进程通过共享一个共享存储区来进行通信的例子。
其中,进程 A 将建立的共享存储区附接到自己的 AA’区域,进程 B 将它附接到自己的 BB’区域。
应当指出,共享存储区机制只为进程提供了用于实现通信的共享存储区和对共享存储区进行操作的手段,然而并未提供对该区进行互斥访问及进程同步的措施。
因而当用户需要使用该机制时,必须自己设置同步和互斥措施才能保证实现正确的通信。
二、涉及的系统调用1、shmget( )创建、获得一个共享存储区。
系统调用格式: shmid=shmget(key,size,flag)参数定义: int shmget(key,size,flag);key_t key;int size,flag;其中,key是共享存储区的名字;size是其大小(以字节计);flag是用户设置的标志,如IPC_CREAT。
计算机操作系统(第3版)课后习题答案(完整版)

4
1 1.试说明引起进程创建的主要事件。 答:引起进程创建的主要事件有:用户登录、作业调度、提供服务、应用请求。 1 2.试说明引起进程被撤销的主要事件。 答:引起进程被撤销的主要事件有:正常结束、异常结束(越界错误、保护错、非法指令、 特权指令错、运行超时、等待超时、算术运算错、I/O 故障)、外界干预(操作员或操作 系 统干预、父进程请求、父进程终止)。 1 3.在创建一个进程时所要完成的主要工作是什么? 答: (1)OS 发现请求创建新进程事件后,调用进程创建原语Creat(); (2)申请空白PCB; (3)为新进程分配资源; (4)初始化进程控制块; (5)将新进程插入就绪队列. 1 4.在撤销一个进程时所要完成的主要工作是什么? 答: (1)根据被终止进程标识符,从PCB 集中检索出进程PCB,读出该进程状态。 (2)若被终止进程处于执行状态,立即终止该进程的执行,置调度标志真,指示该进程被 终止后重新调度。 (3)若该进程还有子进程,应将所有子孙进程终止,以防它们成为不可控进程。 (4)将被终止进程拥有的全部资源,归还给父进程,或归还给系统。 (5)将被终止进程PCB 从所在队列或列表中移出,等待其它程序搜集信息。 1 5.试说明引起进程阻塞或被唤醒的主要事件是什么? 答:a. 请求系统服务;b. 启动某种操作;c. 新数据尚未到达;d. 无新工作可做. 1 6.进程在运行时存在哪两种形式的制约?并举例说明之。 答: (1)间接相互制约关系。举例:有两进程A 和B,如果A 提出打印请求,系统已把唯一的 一台打印机分配给了进程B,则进程A 只能阻塞;一旦B 释放打印机,A 才由阻塞改为就 绪。 (2)直接相互制约关系。举例:有输入进程A 通过单缓冲向进程B 提供数据。当缓冲空时, 计算进程因不能获得所需数据而阻塞,当进程A 把数据输入缓冲区后,便唤醒进程B;反 之,当缓冲区已满时,进程A 因没有缓冲区放数据而阻塞,进程B 将缓冲区数据取走后便 唤醒A。 1 7.为什么进程在进入临界区之前应先执行 “进入区”代码?而在退出前又要执行 “退出 区”代码? 答:为了实现多个进程对临界资源的互斥访问,必须在临界区前面增加一段用于检查欲访问 的临界资源是否正被访问的代码,如果未被访问,该进程便可进入临界区对资源进行访问, 并设置正被访问标志,如果正被访问,则本进程不能进入临界区,实现这一功能的代码为" 进入区"代码;在退出临界区后,必须执行" 退出区"代码,用于恢复未被访问标志,使其它 进程能再访问此临界资源。 18. 同步机构应遵循哪些基本准则?为什么? 答:同步机构应遵循的基本准则是:空闲让进、忙则等待、有限等待、让权等待 原因:为实现进程互斥进入自己的临界区。 19. 试从物理概念上说明记录型信号量wait 和signal。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验二进程管理
2.4 进程的共享存储区通信
1.实验目的
(1) 通过编写共享存储区的通信程序,理解Linux共享存储区机制。
(2) 掌握进程共享存储区通信相关系统调用。
(3) 理解系统调用和用户命令的区别。
2.实验类型:验证型
3.实验学时:2
4.实验原理和知识点
(1) 实验原理:并发运行的进程之间,可以通过共享存储机制进行通信。
(2) 知识点:共享存储的创建、附接和断接
5.实验环境(硬件环境、软件环境):
(1)硬件环境:Intel Pentium III 以上CPU,128MB以上内存,2GB以上硬盘
(2)软件环境:linux操作系统。
6. 预备知识
(1) 共享存储区
共享存储区机制直接通过共享虚拟存储空间进行通信。
通信时,进程首先提出申请,系统为之分配存储空间并返回共享区标示符。
这时,进程把它附加到自己的虚拟存储空间中。
通信的进程对共享区的访问要互斥地进行。
(2) shmget()系统调用:
头文件#include <sys/shm.h>
函数原型int shmget(key_t key, int size, int flag);
功能:申请一个共享存储区。
成功返回共享内存标识符,失败则返回-1。
参数:key是共享存储区关键字。
size是存储区大小。
flag访问权限和控制标志。
(3) shmat()系统调用:
头文件#include <sys/shm.h>
函数原型int shmat(int id, char *addr, int flag);
功能:将一个共享存储区附接到进程的虚地址空间。
成功返回起始地址,失败则返回-1。
数:id是共享存储区标识符。
addr是附接的虚地址。
flag访问权限和控制标志。
(4) shmdt()系统调用:
头文件#include <sys/shm.h>
函数原型int shmdt(char *addr);
功能:一个共享存储区与指定进程的断开。
(5) shmctl()系统调用:
头文件#include <sys/shm.h>
函数原型int shmctl(int id, int cmd, struct_ds* buf;
功能:共享存储区的控制操作。
成功返回0,失败则返回-1。
参数:id是共享存储区标识符。
cmd为IPC_STAT共享存储的区的控制信息块读入buf。
cmd为IPC_SET则共享存储区的控制信息块读入buf。
cmd 为IPC_RMID则删除shmid 指示的共享内存。
7.实验内容及步骤:
【任务】
使用系统调用shmget()、shmat()、shmdt()、shmctl(),编写两进程通过共享存储区进行通信的程序。
(1)程序设计
约定共享区关键字75。
创建两个子进程client和server。
Client发送10条消息。
Server接收消息,完毕后删除共享区。
//share.c
#include <sys/types.h>
#include <sys/msg.h>
#include <sys/ipc.h>
#include <stdio.h>
#define SHMKEY 75 /* 定义共享存储区关键词*/
int shmid,i;
int *addr;
void Client()
{ int i;
shmid=shmget(SHMKEY,1024,0777); /* 获取共享区, 长度1024,关键词为SHMKEY */ addr=(int*)shmat(shmid,0,0); /* 共享区的起始地址为addr */
for(i=9;i>=0;i--)
{ while(*addr!=-1); /* 在这里做一个标号A */
printf("(client %d)sent\n",i); /* 打印(client) sent */
*addr=i; /* 把i赋给addr所指向的区域*/
}
exit(0);
}
void Server()
{ shmid=shmget(SHMKEY,1024,0777|IPC_CREAT); /* 创建共享区*/ addr=(int*)shmat(shmid,0,0); /* 共享区的起始地址为addr */
do
{ *addr=-1;
while(*addr==-1); /* 等待发来信息, 转到上面的标号A; */
printf("(server %d)received!\n",*addr); /* 服务进程使用共享区*/ }while(*addr);
shmctl(shmid,IPC_RMID,0);
exit(0);。
}
int main()
{ int i;
while((i=fork())==-1);
if(!i) Server();
else {
while((i=fork())==-1);
if(!i) Client();
}
wait(0);
wait(0);
return 1;
}
(2)上机操作
键入vi share.c
键入i并输入源代码。
按Esc键
存盘:wq
编译gcc –o share share.c。
运行 ./share
观察屏幕,记录结果。
THANKS !!!
致力为企业和个人提供合同协议,策划案计划书,学习课件等
等
打造全网一站式需求
欢迎您的下载,资料仅供参考。