28. 银行家算法是死锁预防算法。( )
27. 能将信号发送给消息队列。( )
26. 信号处理程序能在用户态下运行。( )
24. 为了实现计算进程和打印进程之间的相互同步,就需要设置一个信号量S。( )
25. 读者和写者问题是进程间的同步与互斥问题。( )
22. 在分配磁盘等共享设备时,可能会引起死锁。( )
23. 锁有三个状态值:-1,0,1。( )
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状态变化*/
21. 编一个UNIX平台上的C程序。在程序的开始部分设置信号SIGUSR1的处理方式为执行delete程序。在创建子进程后,父进程向子进程发送信号SIGUSR1,并在子进程终止后显示子进程传来的返回参数。子进程发现已收到信号,就执行信号SIGUSR1所对应的处理程序delete,该程序删除当前目录下的core文件,如删除失败,终止本进程,传给父进程的参数为1,否则从delete程序返回后,子进程显示Success,传给父进程的参数为0。
20. 假如一个阅览室最多可容纳n个人,读者进入和离开阅览室时,都必须在每次只允许一个人写的登记表上做进入登记和离开登记,系统对读者进入和离开两个过程各建立一个控制进程,试用semWait、semSignal操作实现读者进入与读者离开间的协调关系。
2018年4月电子商务全国自考(电子
2017年10月电子商务全国自考(电
2017年4月电子商务全国自考(电子
2016年10月电子商务全国自考(电
2016年4月电子商务全国自考(电子
2015年10月电子商务全国自考(电
2015年4月电子商务全国自考(电子
2014年10月电子商务全国自考(电
2014年4月电子商务全国自考(电子
2013年10月电子商务全国自考(电