- 1、本文档共13页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
操作系统课程设计63775.doc
课设题目
Linux系统管理实践与进程通信实现
课设内容
1、Linux系统的熟悉与常用操作命令的掌握。
2、Linux环境下进程通信的实现。(实现m个生产者n个消费者的同步互斥问题,缓冲区大小k=5,m=2,n=2)
三、 Linux环境介绍
Linux是一类Unix计算机操作系统的统称。Linux操作系统的内核的名字也是“Linux”。Linux操作系统也是自由软件和开放源代码发展中最著名的例子。严格来讲,Linux这个词本身只表示Linux内核,但在实际上人们已经习惯了用Linux来形容整个基于Linux内核,并且使用GNU 工程各种工具和数据库的操作系统。Linux得名于计算机业余爱好者Linus Torvalds。
理解Linux文件系统标准
/:根目录,系统中所有的目录都是从根目录开始 /bin: 存放常用命令 /boot: 引导核心的程序目录 /dev: 外部设备名 /etc: (etcetera)系统管理所要的配置文件和子目录 /home:存放用户主目录的地方,一般是/home/用户名。其他目录有ftp、httpd、samba等 /lib:(library)系统基本的动态链接库 /lost+found /opt :optional(可以选择的) /proc::虚拟系统,是由系统初起时在内存中产生的 /root:超级用户默认的主目录; /sbin:系统管理员使用的系统管理程序 /tmp:存放各程序执行时所产生的临时文件 /usr:占空间最大的目录,用户的很多应用程序和文件几乎全在这个目录中 /var:存放一些系统记录文件和配置文件
四、 常用命令介绍
(1)显示目录文件 ls
(2)建新目录 mkdir
(3)删除目录 rmdir
(4) 改变工作目录位置 cd
(5)显示当前所在目录pwd
(6)查看文件(可以是二进制的)内容 cat
(7)删除文件 rm
(8)复制文件 cp
(9)移动或更改文件、目录名称mv
(10)编译文件gcc [options] [filenames]
(11)执行文件 ./可执行文件名
(12)挂载U盘及删除
f-disk –l
cd /mnt
mkdir **
mount /dev/sdb1 /mnt/**
cd /mnt/**
ls
umount /mnt/**
五、 程序设计思想
这个程序要实现两个生产者和两个消费者共享一个存储区,且存储区的大小为5,所以首先要建立一个共享存储区,还要设置一个互斥信号量,一个消费者同步信号量,一个生产者同步信号量。建立了共享存储区和信号量后,我们还需要写P、V操作的两个函数。最后在生产者和消费者的程序中实现对共享存储区的访问,生产或者消费一件产品的具体过程。
六、 程序流程
control程序:
生产者的程序流程:
消费者的程序流程:
七、 数据结构
该程序用了结构体来设置信号量
八、 源代码
Control程序:
#include sys/types.h
#include sys/ipc.h
#include sys/shm.h
#include sys/sem.h
#include errno.h
#include string.h
#define SHMKEY 9075 /*共享存储区的键*/
#define SEMKEY_PRODUCER 9085
#define SEMKEY_CONSUMER 9086
#define SEMKEY_MUTEX 9087 /*信号量数组的键*//*注意:上面的键在系统中必须唯一*/
#define BUFF_LEN 5 /*缓冲区可以存放5个产品*/
#define PRODUCT_LEN 32 /*每个产品是一个字符串:=32字符*/
void set_sembuf_struct(struct sembuf *sem,int semnum, int semop,int semflg)
{
/* 设置信号量结构 */
sem-sem_num=semnum;
sem-sem_op=semop;
sem-sem_flg=semflg;
}
main()
{
char *addr, end;
int shmid;
int semid_produc
文档评论(0)