- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
操作系统进程通信共享内存课程设计精选资料
河南城建学院
《操作系统》课程设计说明书
设计题目: 进程通信
专 业: 计算机科学与技术
指导教师: 邵国金、郭猛、薛冰
班 级:
学 号:
姓 名:
同 组 人:
计算机科学与工程系
2013年1 月 10 日
前 言
本设计是基于课程中学到的UNIX系统调用,使用操作系统环境是Red Hat Linux 9,言语开发环境是Linux的GNU C或C++。Linux操作系统是一个向用户开放源码的免费的类UNIX操作系统。它为在校学生学习操作系统课程提供了一个看得见摸得着的范例。对于学生正确理解,掌握操作系统的基本知识具有重要意义。鉴于此,本操作系统课程涉及的实验均在Linux环境下进行。
这就要求大家:
(1)熟悉Linux的操作和开发环境;
(2)具有C语言知识(Linux操作系统大约90%的源码是用C语言编写)。
我们的设计和实验将在Windows xp环境下,基于虚拟机软件VMWare软件进行安装。
学习计算机软件技术,,,?除了听课和读书之外,,,,目录
一、系统开发环境 - 4 -
二、设计目的 - 5 -
三、设计题目及要求 - 6 -
四、总体设计 - 7 -
1、服务器功能 - 7 -
2、客户端功能 - 7 -
3、文件读取功能 - 8 -
4、界面显示函数 - 8 -
5、组成框图: - 9 -
6.共享内存分配 - 9 -
7.总体流程图 - 10 -
五、详细设计 - 11 -
1.主函数 - 11 -
2.菜单显示 - 11 -
3.服务器端: - 12 -
4.客户端程序: - 14 -
5、部分函数介绍 - 15 -
六、调试与测试 - 17 -
七、执行结果及分析 - 18 -
八、源程序清单 - 20 -
九、心得体会 - 25 -
十、参考文献 - 26 -
一、系统开发环境
Windows Xp系统、虚拟机上运行的Red Hat Linux 9系统运行环境。
二、设计目的
1、进一步了解什么是进程,以及创建进程的方式。
2、实现UNIX/LINUX系统环境下的进程通信方式。
3、熟练掌握C/S中的共享内存通信机制。
4、开辟一个共享区,实现进程共享资源,互相通信。
三、设计题目及要求
利用UNIX系统提供的进程通信机制实现通信以及共享内存区的实现
(1) 共享存储区的创建,shmget(),smat(),msgdt(),shmctl(),1K的消息发送和接收的程序。
1)为了便于操作和观察结果,,fork()两个子进程,SERVERCLIENT,SERVER端建立一个Key为375的共享区,1,作为数据空的标志,等待其他进程发来的消息。当该字节的值发生变化时,,1。如果遇到的值为0,,,SERVER。SERVER每接收到一次数据后显示“(server)received”。
3)CLIENT端建立一个Key为375的共享区,1时,SERVER,CLIENT随即填入9到0。期间等待Server端的再次空闲。进行完这些操作后,CLIENTCLIENT每发送一次数据后显示“(client)sent”。
4)父进程在SERVER和CLIENT均退出后结束。
(2)功能扩展:在sever端创建一个服务函数,从而形成C/S通讯模式
要求SERVER每接收到一次数据后不仅仅显示“(server)received”,而是做一些其它事情,比如读取或查询某个文件等。此功能可由设计者自己定义。
四、总体设计
1.服务器功能
服务器共有四块共享内存,分别用addr1,addr2,addr3,addr4接收,其中addr1为整形指针,addr1,addr2,addr3为结构体型指针,结构体的定义如下:
Typedef strcut address
{
Int mark;
Char ch[20];
}address;
其中的mark成员用来作为标记为标示共享内存块的状态,-1表示该内存块空闲,服务端可以发送服务请求,1,2,3这分别表示服务器正在处理不同的服务请求,客户端需等待。而字符数组成员ch则用来将各个客户端的文件中的数据放入对应的共享内存块中,与服务器交换数据。
而内存块之所以既能实现客户端与服务器的通信,又能相互之间交换数据,在于shmat函数的返回值为void*,可以将其转化为任意类型的指针变量,该函数调用如下:
Addr1=(address*)shmat(shmid1,1024,0);
Addr2=(address*)shmat(shmid2,1024,0);
Addr3=(address*)shmat(shmi
原创力文档


文档评论(0)