操作系统课程设计:Linux系统管理实践与进程通信实现 - 图文(4)

2019-06-05 11:18

int semid_empty, semid_full1,semid_full2, semid_mutex;/*信号量集合id*/ int rc1,rc2,rc3;

semid_mutex = semget(SEMKEY_MUTEX,1, 0777);/*获取全局信号量id*/ semid_empty = semget(SEMKEY_EMPTY,1, 0777); semid_full1 = semget(SEMKEY_FULL1,1, 0777); semid_full2 = semget(SEMKEY_FULL2,1, 0777); rc2=semctl(semid_full1,0,GETVAL); rc1=semctl(semid_full2,0,GETVAL); if(rc2==0) {

return 1; //不能放 則等待 }

P(semid_full1); P(semid_mutex);

printf(\ printf(\ apples to get \\n\ printf(\ APPLE\\n\ V(semid_empty); V(semid_mutex); return 0; }

int main() {

int pid; int i = 0, x; begin(); pid = fork(); if(fork()==0) { father(); } if(fork()==0) { mother(); } if(fork()==0) { daughter(); } if(fork()==0) { son();

}

return 0; }

八、调试与运行

首先,利用g++ ks.cpp编译一次,若有错误,则根据错误提示对程序进行修改。其次,编译通过后执行./a.out,若原先已有共享缓冲区,则删除原先缓冲区,再创建新的共享缓冲区.,然后再次执行./a.out,观察系统进程调度。

运行结果如下:

九、设计总结

在设计这个题目之前,由于对进程同步的实现方法不是很了解,对于怎样具

体实现进程同步有很大的疑问,所以在网上进行了查找,但几经搜索都没有找到合适的材料。就是在这种虽然有一定基础,但并不能完全依靠的前提下,自己通过查找相关的书籍,了解本次设计中涉及到的数据结构后,成功实现了进程同步的功能。从对进程同步只是一个概念上的认识,到最终将它的功能实现这一过程,我感到非常满意与欣慰,因为这些都是通过自己的努力一步一步实现的。

同时,本次课程设计也存在着不足之处。虽然熟悉和了解了程序中各数据结构的定义和创建,但是在一些细节问题上还没有一个很明确的认识,只是机械的合法的使用它。当然,在以后的课程设计中,我会更加追求完善,将不清晰的地方都弄明白。


操作系统课程设计:Linux系统管理实践与进程通信实现 - 图文(4).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:2016党的基本知识

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: