全国自考操作系统(进程通信)模拟试卷4

如果您发现本试卷没有包含本套题的全部小题,请尝试在页面顶部本站内搜索框搜索相关题目,一般都能找到。
8

19. 编一个C程序,使用户进程的全局变量作为输入输出的缓冲区,线程1一次读入一个字符串,将其存入缓冲区,线程2从缓冲区取出数据,输出打印,用线程的条件变量实现两个线程间的同步。程序调试成功后用I/O转向再测试程序,标准输入输出都改为文件。

可以用条件变量实现线程之间的同步。条件变量就像是一面旗子,用于通知需要同步的进程。条件变量函数总是和互斥锁在一起使用。与一般的锁变量不同,与条件变量相关锁的常态是锁住的,而在执行了pthread_cond_wait(&flag,&lock)等待条件变量后,互斥锁lock就打开了,然后等待条件变量的变化。如果在调用此函数之前,互斥量没有被锁住,函数执行的结果是不确定的。在该函数返回之前,该函数自动将指定的互斥量重新锁住。

pthread_cond_slgnal函数通过条件变量发消息。若有多个线程都在等待,只唤醒它们中的一个,但一般只用于一个线程等待该条件变量。

有关的函数和操作定义如下:

#include<pthread.h>

#include<ctype.h>

pthread_mutex_tmutex=PTHREAD_MOTEX_INITIALIZER;/*初始化锁*/

pthread_cond_tcond=PTHREAD_COND_INITIALIZER;/*初始化条件变量*/

pthread_cond_wait(pthread_cond_t*cond,pthread_mutex_t*mutex);

/*等待条件变量cond,开互斥锁mutex*/

pthread_cond_signal(pthread_cond_t*cond);/*通知条件变量cond状态变化*/

22

5. 在_______情况下,计算机系统一定出现了死锁。

  • A.系统中所有的进程都处于封锁状态
  • B.进程申请的资源数大大超过资源总数
  • C.计算机硬件或软件系统发生重大故障
  • D.两个进程互相等待对方占有的资源
25

3. 下列机构中不能用于进程间数据通信的是_______。

  • A.消息
  • B.共享存储
  • C.信号量
  • D.管道
28

1. 不能利用_______实现父子进程间的互斥。

  • A.文件
  • B.外部变量
  • C.信号量
  • D.锁