欢迎来到冰豆网! | 帮助中心 分享价值,成长自我!
冰豆网
全部分类
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • 党团工作>
  • ImageVerifierCode 换一换
    首页 冰豆网 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

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

    • 资源ID:4855769       资源大小:138.44KB        全文页数:15页
    • 资源格式: DOCX        下载积分:12金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要12金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

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

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

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

    3、统常用进程管理命令(1)at命令:定时运行命令 让系统在两天后的17:30执行文件data中指定的作业,使用命令: at f data 15:30 +2 days(2)bg命令后台运行命令 如果要将一个大目录的文件进行排序后,将结果输入到一个文件中,可以使用命令: du -a / | sort -rn /tmp/du.sorted (3)Fg挂起程序 使用fg命令时,要加入后台任务号码,如果不加任何号码,则所变动的均是当前任 务。 du -a / | sort -rn /tmp/du.sorted &1 237 #fg 1 (4) Jobs显示后台程序 先把两个进程放在系统后台运行,然后使用j

    4、obs命令查看后台任务的执行情况:du -a /etc user.data &1 233# find / -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 (5)kill命令杀掉进程 命令执行过程如果出错,用户可用kill来结束任务。对于在后台运行的进程, 可以使用kill命令终止: du -a / | sort -rn /tmp/du.sorted & 1 237 #

    5、kill 237 (6)nice命令改变权限优先级 将ls命令的优先序加1并执行,将结果输入文件1.txt: nice -n 1 ls 1.txt (7)renice命令修改优先级 将进程PID为987及32的进程与进程拥有者为daemon及root的优先级别号加1: renice +1 987 -u daemon root -p 32 (8)sleep命令暂停进程 下面的命令使进程先暂停60秒,然后查看哪个用户登录到系统中: sleep 60; who2、进程同步与互斥控制(数据同步),原理如下: (1)、设置全局变量:int ticket=100;互斥量:HANDLE hMutex; (2

    6、)、创建互斥信号量ticket:hMutex=CreateMutex(NULL,TRUE,ticket); (3)、用WaitForSingleObject(hMutex,INFINITE);捕获互斥信号量hMutex (4)、用ReleaseMutex(hMutex);释放互斥量的使用权3、通过邮件槽实现简单进程通信,原理如下: (1)、油槽服务器: 1)hMailslot=CreateMailslot(.mailslotMyMailslot,0, MAILSLOT_WAIT_FOREVER,NULL);/创建一个邮路。 2)ReadFile(hMailslot,buf,100,&dwRea

    7、d,NULL);/读取邮路数据 3)CloseHandle(hMailslot);/关闭油槽 (2)、油槽客户端: 1)hMailslot=CreateFile(.mailslotMyMailslot,GENERIC_WRITE, FILE_SHARE_READ,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL); /创建油槽文件 2)WriteFile(hMailslot,buf,strlen(buf)+1,&dwWrite,NULL);/写入数据 3)CloseHandle(hMailslot);/关闭油槽实验源代码如下:1、进程同步与互斥控制(数

    8、据同步):#include stdafx.h#include#includeiostreamusing namespace std;int index =0;int ticket=100;HANDLE hMutex;DWORD WINAPI Fun1Proc(LPVOID lpParameter) while(TRUE) WaitForSingleObject(hMutex,INFINITE); if(ticket0) coutthread1 sell ticket :ticket-0) coutthread2 sell ticket :ticket-endl; else break; Rel

    9、easeMutex(hMutex); return 0;int _tmain(int argc, _TCHAR* argv) HANDLE hTread1; HANDLE hTread2; hTread1=CreateThread(NULL,0,Fun1Proc,NULL,0,NULL); hTread2=CreateThread(NULL,0,Fun2Proc,NULL,0,NULL); CloseHandle(hTread1); CloseHandle(hTread2); hMutex=CreateMutex(NULL,TRUE,ticket); if(hMutex) if(ERROR_A

    10、LREADY_EXISTS=GetLastError() coutOnly one instance can run!endl; return 0; ReleaseMutex(hMutex); ReleaseMutex(hMutex); Sleep(10000); return 0;2、邮件槽进程通信:1)油槽服务器:(关键代码段)void C油槽客户端Dlg:OnSend() / TODO: 在此添加控件通知处理程序代码 HANDLE hMailslot; hMailslot=CreateFile(.mailslotMyMailslot,GENERIC_WRITE,FILE_SHARE_RE

    11、AD,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL); if(INVALID_HANDLE_VALUE=hMailslot) MessageBox(打开油槽失败!); return; CString str; char buf100; m_edit.GetWindowText(str); strcpy_s(buf,str); DWORD dwWrite; if(!WriteFile(hMailslot,buf,strlen(buf)+1,&dwWrite,NULL) MessageBox(写入数据失败!); CloseHandle(hMailslo

    12、t); return; CloseHandle(hMailslot);2)油槽客户端:(关键代码段)void C油槽客户端Dlg:OnSend() / TODO: 在此添加控件通知处理程序代码 HANDLE hMailslot; hMailslot=CreateFile(.mailslotMyMailslot,GENERIC_WRITE,FILE_SHARE_READ,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL); if(INVALID_HANDLE_VALUE=hMailslot) MessageBox(打开油槽失败!); return; CS

    13、tring str; char buf100; m_edit.GetWindowText(str); strcpy_s(buf,str); DWORD dwWrite; if(!WriteFile(hMailslot,buf,strlen(buf)+1,&dwWrite,NULL) MessageBox(写入数据失败!); CloseHandle(hMailslot); return; CloseHandle(hMailslot);(写不完时,可另加附页。)实验结果及分析三、实验结果:1、实验截图:2-1进程控制达到数据同步处理截图2-2 油槽通信控制面板截图2-3 油槽-服务器截图2-4 油

    14、槽-客户端截图2-5 发送-接受效果截图2、结果分析: 1)、ls 命令列出了指定目录下的文件名和目录名,参数-l要求显示文件或目录的详 细信息,例如类型、访问权限、连接数、拥有者等。 在Linux中,用户通过利用fork创建的进程来与原进程运行相同的程序代码,为了 使新进程运行新的程序,用户可以使用系统调用exec来装入一个新的程序到当前进 程的地址空间,如果exec调用成功,系统开始执行新程序,永远不会返回原来的程 序。 2)、进程同步与互斥控制,能有效的控制全局变量在某一进程执行过程中唯一被访 问。在多线程程序中容易出现共享资源因时间片到期而终止访问,这样就很容易出 现数据的错乱。假如全

    15、局变量未火车票;对于线程函数(FunProc1、FunProc2),在 访问全局变量ticket时,ticket自减一。如果在线程函数1(FunProc1)访问ticket, 还没有来得及自减一就因时间片到期而被线程函数2(FunProc2)抢占访问,然后 自减一。这样就造成了资源数据不一致,从而产生很危险的后果。 本实验通过设置互斥信号量从而达到线程之间对共享资源的同步访问,以此还可以 实现进程同步中的读者/写者问题。 3)、由于油槽是单向通信机制,所以只能通过创建油槽服务器进程读取数据,打开 油槽客户端进程写入数据。如果只打开油槽服务器,创建读取数据进程而没有打开 客户端就会导致服务器进入

    16、无限等代状态,造成程序崩溃。 在创建进程句柄后要记得释放句柄,不然会产生不良后果。心得体会 在了解了操作系统中进程间的通信的方式我们使用了邮槽实现了简单的进程间的通信,在实际的应用中,进程间的通信往往是十分重要的,我们可以使用其它的应用程序提供的信息,使我们自己的程序开发更为完善,在进程间的通信中,我们还可以使用管道技术,管道技术又分为命名管道和匿名管道,匿名管道是实现本机之见的进程通信,命名管道很好的解决了,客户端和服务器之间的通信,另一种实现服务器和客户端之间的通信是邮槽,通过该实验更加深入理解了操作系统的通信方式邮槽通信以及信息通信。真正体会从课本上学到的东西是有限了,要提高自己的技术水平,还是得实践去努力。 (注:可编辑下载,若有不当之处,请指正,谢谢!)


    注意事项

    本文(实验2进程控制与通信管理.docx)为本站会员主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2022 冰点文档网站版权所有

    经营许可证编号:鄂ICP备2022015515号-1

    收起
    展开