填空题
1、Linux系统中使用的进程通信机制包括管道通信、(信号量)、(消息队列)、(共享内存)以及socket通信
2、管道采用(半双工)方式进行通信,其实质是由(内核)管理的一个缓冲区
3、与管道相比,消息队列通信方式更为灵活;它提供有格式的(字节流),无须通信双方额外约定数据传输格式;其中的消息被设定为不同类型,又被分配了不同的优先级;此外消息队列有效降低了读写进程间的(耦合度)
4、在代码中,临界区是指并发进程中与(共享)资源有关的程序段。
5、在使用PV操作实现进程互斥时,调用(P)操作相当于申请一个共享资源,调用(V)操作相当于归还共享资源的使用权。
判断题
1、匿名管道只能用于父子进程间通信。(错)
匿名管道可以用于有亲缘关系的进程间通信,包括父子进程,兄弟进程等的呢过
2、在实现进程互斥时,用一个信号量与一组相关临界资源对应,在实现进程同步时,每一个消息与一个信号量对应。(对)
3、popen()函数若调用成功,则返回一个I/O文件指针
popen()函数的功能是:调用pipe()函数创建管道,调用fork()函数创建子进程,之后在子进程中通过execve()函数调用shell命令执行相应功能,若整个流程都成功执行,则返回一个I/O文件指针,若PIPE()或FORK()函数调用失败,或因无法分配内存等原因造成popen()函数调用失败,该函数将会返回NULL
4、消息队列的实质是一个存放信息的链表,该链表由内核维护,内核会决定其回收时机,所以进程中的消息队列使用完毕后无须删除。(错)
若没有删除内核中的消息队列,即便所有使用消息队列的进程都已终止,消息队列仍存在内核中,知道内核重新启动、管理命令被执行或调用系统接口删除消息队列,消息队列才会真正被销毁。
5、因为共享内存机制的本质是将物理地址与虚拟地址直接进行映射,避免了数据的重复读写,所以内存共享机制的效率相当高(对)
单选题
1、管道不能使用lseek()函数定位
2、管道内容保存在内存中
3、匿名管道不能实现非亲缘关系进程间的通信
4、P操作使信号量-1,V操作使信号量+1
5、制约关系分为直接制约关系和间接制约关系,等待使用一个打印机的两个进程间存在间接制约关系,是互斥的