信号量的实现和应用
难度系数:★★★★☆
实验目的
加深对进程同步与互斥概念的认识;
掌握信号量的使用,并应用它解决生产者——消费者问题;
掌握信号量的实现原理。
实验内容
本次实验的基本内容是:
1. 在Ubuntu下编写程序,用信号量解决生产者——消费者问题;
2. 在0.11中实现信号量,用生产者—消费者程序检验之。
用信号量解决生产者—消费者问题
在Ubuntu上编写应用程序“pc.c”,解决经典的生产者—消费者问题,完成下面的功能:
1. 建立一个生产者进程,N个消费者进程(N>1);
2. 用文件建立一个共享缓冲区;
3. 生产者进程依次向缓冲区写入整数0,1,2,...,M,M>=500;
4. 消费者进程从缓冲区读数,每次读一个,并将读出的数字从缓冲区删除,然后将本进程ID和数字输出到标
准输出;
5. 缓冲区同时最多只能保存10个数。
一种可能的输出效果是:
10: 0
10: 1
10: 2
10: 3
10: 4
11: 5
11: 6
12: 7
10: 8
12: 9
12: 10
12: 11
12: 12
……
11: 498
11: 499
其中ID的顺序会有较大变化,但冒号后的数字一定是从0开始递增加一的。
pc.c中将会用到sem_open()、sem_close()、sem_wait()和sem_post()等信号量相关的系统调用,请查阅相关文档。
《UNIX环境高级编程》是一本关于Unix/Linux系统级编程的相当经典的教程。校园网用户可以
在ftp://run.hit.edu.cn/study/Computer_Science/Linux_Unix/下载,后续实验也用得到。如果你对POSIX编程感兴趣,
建议买一本常备手边。
评论0