一、填空题
1.Linux系统中使用的进程通信机制包括管道通信、 、 、 以及socket通信。
2.管道采用 方式进行通信,其实质是由 管理的一个缓冲区。
3. 与管道相比,消息队列通信方式更为灵活:它提供有格式的_____ ,无须通信双 方额外约定数据传输格式;其中的消息被设定为不同类型,又被分配了不同的优先级;此外 消息队列有效降低了读写进程间的 。
4. 在代码中,临界区是指并发进程中与 资源有关的程序段。
5.在使用P、V操作实现进程互斥时,调用 操作相当于申请一个共享资源,调用 相当于归还共享资源的使用权。
二、判断题
1.匿名管道只能用于父子进程间通信。( )
2.在实现进程互斥时,用一个信号量与一组相关临界资源对应;在实现进程同步时,每 一个消息与一个信号量对应。( )
3.popen()函数若调用成功,则返回一个I/O文件指针。( )
4.消息队歹列的实质是一个存放消息的链表,该链表由内核维护,内核会决定其回收时机,所以进程中的消息队列使用完毕后无须删除。( )
5. 因为共享内存机制的本质是将物理地址与虚拟地址直接进行映射,避免了数据的重 复读写,所以内存共享机制的效率相当高。( )
三、单选题
1.下列对器名管道描述错误的是( )
A. 采用半双工通信方式
B. 只存在于内存中
C.有固定的读端和写端
D.可以使用Iseek()函数修改读写位置
2.下列关于命名管道的说法错误的是( )
A.管道中的内容保存在磁盘上
B. 在文件系统中可以通过操作文件的方式查看
C.可以用于没有亲缘关系的进程间
D. 通过路径名打开
3.下列进程通信方式中不能实现非亲缘关系进程间通信的是( )。
A.消息队列B.匿名管道C. 共享内存 D. socket
4. 对于整型信号量,在执行一次P操作时,信号量的值应( )。
A.不变B.加1 C.减1 D.置0
5.制约关系分为直接制约关系和间接制约关系,选出以下关于制约关系的说法中错误的选项。( )
A.直接相互制约的进程间有同步关系,间接相互制约的进程间有互斥关系
B.产生制约关系的原因是系统中存在临界资源
C.若计算机中的两个进程需要使用同一台打印机,那么这两个进程间存在同步关系
D.若能保证进程间互斥地进入自己的临界区,就能实现进程对临界资源的互斥访问
四、简答题
1.简述使用消息队列实现进程间通信的步骤。
2.列举出Linux系统中常用的进程通信机制,并对每种机制进行简单说明。
3. 某工厂有两个生产车间和一个装配车间,两个生产车间分别生产A.B两种零件,装配车间负责组装零件A、B.两个生产车间每生产一个零件后都要分别将这两个零件送到装配车 间的货架F1、F2上,装配车间每次在组装零件时都要从货架F1.F2上分别取下零件A和零件 B。分析题目,写出实现题目描述问题需要定义的信号量并说明每个信号量的功能。
五、编程题
思考父子进程和无亲缘关系的进程是否可以通过打开一个普通文件实现通信,若可以, 说明原因并尝试实现代码。