操作系统课程设计63775new

上传人:xins****2008 文档编号:110923091 上传时间:2019-11-01 格式:DOC 页数:13 大小:361.50KB
返回 下载 相关 举报
操作系统课程设计63775new_第1页
第1页 / 共13页
操作系统课程设计63775new_第2页
第2页 / 共13页
操作系统课程设计63775new_第3页
第3页 / 共13页
操作系统课程设计63775new_第4页
第4页 / 共13页
操作系统课程设计63775new_第5页
第5页 / 共13页
点击查看更多>>
资源描述

《操作系统课程设计63775new》由会员分享,可在线阅读,更多相关《操作系统课程设计63775new(13页珍藏版)》请在金锄头文库上搜索。

1、一、 课设题目 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得名于计算机业余爱

2、好者Linus Torvalds。理解Linux文件系统标准/:根目录,系统中所有的目录都是从根目录开始 /bin: 存放常用命令 /boot: 引导核心的程序目录 /dev: 外部设备名 /etc: (etcetera)系统管理所要的配置文件和子目录 /home:存放用户主目录的地方,一般是/home/用户名。其他目录有ftp、httpd、samba等 /lib:(library)系统基本的动态链接库 /lost+found /opt :optional(可以选择的) /proc:虚拟系统,是由系统初起时在内存中产生的 /root:超级用户默认的主目录; /sbin:系统管理员使用的系统管理

3、程序 /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 lcd /mntmkdir *mount

4、/dev/sdb1 /mnt/*cd /mnt/*ls umount /mnt/*五、 程序设计思想这个程序要实现两个生产者和两个消费者共享一个存储区,且存储区的大小为5,所以首先要建立一个共享存储区,还要设置一个互斥信号量,一个消费者同步信号量,一个生产者同步信号量。建立了共享存储区和信号量后,我们还需要写P、V操作的两个函数。最后在生产者和消费者的程序中实现对共享存储区的访问,生产或者消费一件产品的具体过程。六、 程序流程control程序:开始N开辟存储区并判断是否已经存在YN是否需要删除该缓冲区Y删除已经存在的缓冲区和相关的信号量创建三个信号量给信号量赋初值结束生产者的程序流程:开始取

5、共享缓冲区地址,连接共享缓冲区生产者生产一个产品P(&semid_producer)P(&semid_mutex)将产品放入共享存储区P(&semid_consumer)P(&semid_mutex)结束消费者的程序流程:开始取共享缓冲区地址,连接共享缓冲区P(&semid_consumer)P(&semid_mutex)将产品取出共享存储区P(&semid_producer)P(&semid_mutex)消费者消费一个产品结束七、 数据结构该程序用了结构体来设置信号量八、 源代码Control程序:#include #include #include #include #include #i

6、nclude #define SHMKEY 9075 /*共享存储区的键*/#define SEMKEY_PRODUCER 9085 #define SEMKEY_CONSUMER 9086 #define SEMKEY_MUTEX 9087 /*信号量数组的键*/*注意:上面的键在系统中必须唯一*/#define BUFF_LEN 5 /*缓冲区可以存放5个产品*/#define PRODUCT_LEN 32 /*每个产品是一个字符串:sem_num=semnum; sem-sem_op=semop; sem-sem_flg=semflg; main() char *addr, end; i

7、nt shmid; int semid_producer, semid_consumer, semid_mutex;/*信号量id*/ struct sembuf sem_tmp; /*开辟共享存储区*/ if (shmid = shmget(SHMKEY, BUFF_LEN * PRODUCT_LEN+2, 0777|IPC_CREAT|IPC_EXCL) = -1) if (errno = EEXIST) printf(The Buffer Has Existed!n); printf(Do You Want To Delete The Buffer(Y = yes)?n=:); scan

8、f(%c, &end); if(end = y | end = Y) /* 共享存储区、信号量并不随程序的结束而被删除,如果我们没删除的话, 可以用ipcs命令查看,用ipcrm删除 */ /*释放缓冲区*/ shmid = shmget(SHMKEY, BUFF_LEN * PRODUCT_LEN+2, 0777); if (shmctl(shmid,IPC_RMID,0) 0) perror(shmctl:); /*同时释放信号量*/ semid_mutex = semget(SEMKEY_MUTEX,1, 0777); semid_consumer = semget(SEMKEY_CON

9、SUMER,1, 0777); semid_producer = semget(SEMKEY_PRODUCER,1, 0777); semctl(semid_mutex,0,IPC_RMID); semctl(semid_consumer,0,IPC_RMID); semctl(semid_producer,0,IPC_RMID); else printf(Fail To Create Buffer!n); return -1; addr = (char*)shmat(shmid, 0, 0);/*连接缓冲区*/ memset(addr, 0, BUFF_LEN * PRODUCT_LEN+2

10、); shmdt(addr); /*离开缓冲区*/ /*创建3个信号量:1个用于对缓冲区互斥,2个用于生产者、消费者同步*/ if(semid_mutex = semget(SEMKEY_MUTEX,1, 0777|IPC_CREAT|IPC_EXCL)=-1) if (errno = EEXIST) printf(The SEMKEY_MUTEX Has Existed!n); else printf(Fail To Create SEMKEY_MUTEX!n); return -1; if(semid_consumer = semget(SEMKEY_CONSUMER,1, 0777|IP

11、C_CREAT|IPC_EXCL)=-1) if (errno = EEXIST) printf(The SEMKEY_CONSUMER Has Existed!n); else printf(Fail To Create SEMKEY_CONSUMER!n); return -1; if(semid_producer = semget(SEMKEY_PRODUCER,1, 0777|IPC_CREAT|IPC_EXCL)=-1) if (errno = EEXIST) printf(The SEM_PRODUCER Has Existed!n); else printf(Fail To Cr

12、eate SEM_PRODUCER!n); return -1; /*给信号量赋初值*/ set_sembuf_struct(&sem_tmp, 0, BUFF_LEN, 0);/*BUFF_LEN*/ semop(semid_producer, &sem_tmp,1); set_sembuf_struct(&sem_tmp, 0, 0, 0);/*0*/ semop(semid_consumer, &sem_tmp,1); set_sembuf_struct(&sem_tmp, 0, 1, 0);/*1*/ semop(semid_mutex, &sem_tmp,1); return 0;/*生产者:producer.c*/#include #include #include #include #include #include #define SHMKEY 9075 /*共

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 大杂烩/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号