实验2进程控制与通信管理

上传人:沈*** 文档编号:99576014 上传时间:2022-06-01 格式:DOC 页数:10 大小:174KB
收藏 版权申诉 举报 下载
实验2进程控制与通信管理_第1页
第1页 / 共10页
实验2进程控制与通信管理_第2页
第2页 / 共10页
实验2进程控制与通信管理_第3页
第3页 / 共10页
资源描述:

《实验2进程控制与通信管理》由会员分享,可在线阅读,更多相关《实验2进程控制与通信管理(10页珍藏版)》请在装配图网上搜索。

1、-年级11级专 业计算机科学与技术班级五班组号 12组实验室9*205日期2021/05/17实验名称实验二、进程控制与通信管理实验内容分项内容实验级别1、Linu* 系统常用进程管理命令的使用操作系统观察级2、Linu* 系统常用进程创立与管理的系统调用原码阅读与系统编程级3、Windows平台常用进线程控制API原码阅读与系统编程级4、进程同步与互斥控制读者写者、一家人吃苹果桔子、哲学家吃饭码阅读与系统编程级5、简单进程通信管道、消息缓冲、槽等原码阅读与系统编程级小 组 成 员*组内分工自我评分教师评分独立完成实验二1 良好独立完成实验二2 良好独立完成实验二3 良好独立完成实验二4 良好

2、独立完成实验二5 良好小组成绩评定教师签名: 年 月 日实验分项11、Linu* 系统常用进程管理命令的使用 2、Linu* 系统常用进程创立与管理的系统调用 3、Windows平台常用进线程控制API 4、进程同步与互斥控制 5、简单进程通信实验目的一、实验目的:l1、加深对进程概念的理解,明确进程和程序的区别。l2、进一步认识并发执行的实质。l3、分析进程争用资源的现象,学习解决进程互斥的方法。实验要求具体题目:进程创立、进程控制系统平台:Linu*/Windows操作系统实验原理步骤算法流程二、 实验原理1 Linu* 系统常用进程管理命令1at命令:定时运行命令让系统在两天后的17:3

3、0执行文件data中指定的作业,使用命令: at f data 15:30 +2 days2bg命令后台运行命令如果要将一个大目录的文件进展排序后,将结果输入到一个文件中,可以使用命令: du -a / | sort -rn /tmp/du.sorted 3Fg挂起程序使用fg命令时,要参加后台任务,如果不加任何,则所变动的均是当前任务。 du -a / | sort -rn /tmp/du.sorted &1 237 *fg 1 4 Jobs显示后台程序先把两个进程放在系统后台运行,然后使用jobs命令查看后台任务的执行情况:du -a /etc user.data &1 233* find

4、 / -name core -type f -ls core.data &2 234*jobs -l1 + 237 Running du -a /etc user.data2 - 238 Running find / -name core -type f -ls core.data 5kill命令杀掉进程 命令执行过程如果出错,用户可用kill来完毕任务。对于在后台运行的进程, 可以使用kill命令终止: du -a / | sort -rn /tmp/du.sorted & 1 237 *kill 237 6nice命令改变权限优先级 将ls命令的优先序加1并执行,将结果输入文件1.t*t:

5、 nice -n 1 ls 1.t*t 7renice命令修改优先级 将进程PID为987及32的进程与进程拥有者为daemon及root的优先级别号加1: renice +1 987 -u daemon root -p 32 8sleep命令暂停进程 下面的命令使进程先暂停60秒,然后查看哪个用户登录到系统中: sleep 60; who2、进程同步与互斥控制数据同步,原理如下: 1、设置全局变量:int ticket=100;互斥量:HANDLE hMute*; 2、创立互斥信号量ticket:hMute*=CreateMute*(NULL,TRUE,ticket); 3、用WaitFor

6、SingleObject(hMute*,INFINITE);捕获互斥信号量hMute* 4、用ReleaseMute*(hMute*);释放互斥量的使用权3、通过槽实现简单进程通信,原理如下: 1、油槽效劳器:1hMailslot=CreateMailslot(.mailslotMyMailslot,0, MAILSLOT_WAIT_FOREVER,NULL);/创立一个邮路。2ReadFile(hMailslot,buf,100,&dwRead,NULL);/读取邮路数据 3CloseHandle(hMailslot);/关闭油槽 2、油槽客户端: 1hMailslot=CreateFile

7、(.mailslotMyMailslot,GENERIC_WRITE, FILE_SHARE_READ,NULL,OPEN_E*ISTING,FILE_ATTRIBUTE_NORMAL,NULL); /创立油槽文件 2WriteFile(hMailslot,buf,strlen(buf)+1,&dwWrite,NULL);/写入数据 3CloseHandle(hMailslot);/关闭油槽实验源代码如下:1、 进程同步与互斥控制数据同步:*include stdaf*.h*include*includeiostreamusing namespace std;int inde* =0;int

8、ticket=100;HANDLE hMute*;DWORD WINAPI Fun1Proc(LPVOID lpParameter)while(TRUE)WaitForSingleObject(hMute*,INFINITE);if(ticket0)coutthread1 sell ticket :ticket-0)coutthread2 sell ticket :ticket-endl;elsebreak;ReleaseMute*(hMute*);return 0;int _tmain(int argc, _TCHAR* argv)HANDLE hTread1;HANDLE hTread2;

9、hTread1=CreateThread(NULL,0,Fun1Proc,NULL,0,NULL);hTread2=CreateThread(NULL,0,Fun2Proc,NULL,0,NULL);CloseHandle(hTread1);CloseHandle(hTread2);hMute*=CreateMute*(NULL,TRUE,ticket);if(hMute*)if(ERROR_ALREADY_E*ISTS=GetLastError()coutOnly one instance can run!endl;return 0;ReleaseMute*(hMute*);ReleaseM

10、ute*(hMute*);Sleep(10000);return 0;2、 槽进程通信:1) 油槽效劳器:关键代码段void C油槽客户端Dlg:OnSend()/ TODO: 在此添加控件通知处理程序代码HANDLE hMailslot;hMailslot=CreateFile(.mailslotMyMailslot,GENERIC_WRITE,FILE_SHARE_READ,NULL,OPEN_E*ISTING,FILE_ATTRIBUTE_NORMAL,NULL);if(INVALID_HANDLE_VALUE=hMailslot)MessageBo*(翻开油槽失败!);return;C

11、String str;char buf100;m_edit.GetWindowTe*t(str);strcpy_s(buf,str);DWORD dwWrite;if(!WriteFile(hMailslot,buf,strlen(buf)+1,&dwWrite,NULL)MessageBo*(写入数据失败!);CloseHandle(hMailslot);return;CloseHandle(hMailslot);2) 油槽客户端:关键代码段void C油槽客户端Dlg:OnSend()/ TODO: 在此添加控件通知处理程序代码HANDLE hMailslot;hMailslot=Crea

12、teFile(.mailslotMyMailslot,GENERIC_WRITE,FILE_SHARE_READ,NULL,OPEN_E*ISTING,FILE_ATTRIBUTE_NORMAL,NULL);if(INVALID_HANDLE_VALUE=hMailslot)MessageBo*(翻开油槽失败!);return;CString str;char buf100;m_edit.GetWindowTe*t(str);strcpy_s(buf,str);DWORD dwWrite;if(!WriteFile(hMailslot,buf,strlen(buf)+1,&dwWrite,NU

13、LL)MessageBo*(写入数据失败!);CloseHandle(hMailslot);return;CloseHandle(hMailslot);写不完时,可另加附页。实验结果及分析三、实验结果:1、实验截图:2-1进程控制到达数据同步处理截图2-2 油槽通信控制面板截图2-3 油槽-效劳器截图2-4 油槽-客户端截图2-5 发送-承受效果截图2、 结果分析: 1、ls 命令列出了指定目录下的文件名和目录名,参数-l要求显示文件或目录的详 细信息,例如类型、权限、连接数、拥有者等。 在Linu*中,用户通过利用fork创立的进程来与原进程运行一样的程序代码,为了 使新进程运行新的程序,用

14、户可以使用系统调用e*ec来装入一个新的程序到当前进 程的地址空间,如果e*ec调用成功,系统开场执行新程序,永远不会返回原来的程 序。 2、进程同步与互斥控制,能有效的控制全局变量在*一进程执行过程中唯一被访 问。在多线程程序中容易出现共享资源因时间片到期而终止,这样就很容易出 现数据的错乱。假设全局变量未火车票;对于线程函数FunProc1、FunProc2,在 全局变量ticket时,ticket自减一。如果在线程函数1FunProc1ticket, 还没有来得及自减一就因时间片到期而被线程函数2FunProc2抢占,然后 自减一。这样就造成了资源数据不一致,从而产生很危险的后果。 本实

15、验通过设置互斥信号量从而到达线程之间对共享资源的同步,以此还可以 实现进程同步中的读者/写者问题。 3、由于油槽是单向通信机制,所以只能通过创立油槽效劳器进程读取数据,翻开 油槽客户端进程写入数据。如果只翻开油槽效劳器,创立读取数据进程而没有翻开 客户端就会导致效劳器进入无限等代状态,造成程序崩溃。 在创立进程句柄后要记得释放句柄,不然会产生不良后果。心得体会 在了解了操作系统中进程间的通信的方式我们使用了邮槽实现了简单的进程间的通信,在实际的应用中,进程间的通信往往是十分重要的,我们可以使用其它的应用程序提供的信息,使我们自己的程序开发更为完善,在进程间的通信中,我们还可以使用管道技术,管道技术又分为命名管道和匿名管道,匿名管道是实现本机之见的进程通信,命名管道很好的解决了,客户端和效劳器之间的通信,另一种实现效劳器和客户端之间的通信是邮槽,通过该实验更加深入理解了操作系统的通信方式邮槽通信以及信息通信。真正体会从课本上学到的东西是有限了,要提高自己的技术水平,还是得实践去努力。. z.

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!