- 1、本文档共16页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
浅谈进的程同步和互斥
简介??? 进程同步是一个操作系统级别的概念,是在多道程序的环境下,存在着不同的制约关系,为了协调这种互相制约的关系,实现资源共享和进程协作,从而避免进程之间的冲突,引入了进程同步。?临界资源??? 在操作系统中,进程是占有资源的最小单位(线程可以访问其所在进程内的所有资源,但线程本身并不占有资源或仅仅占有一点必须资源)。但对于某些资源来说,其在同一时间只能被一个进程所占用。这些一次只能被一个进程所占用的资源就是所谓的临界资源。典型的临界资源比如物理上的打印机,或是存在硬盘或内存中被多个进程所共享的一些变量和数据等(如果这类资源不被看成临界资源加以保护,那么很有可能造成丢数据的问题)。??? 对于临界资源的访问,必须是互诉进行。也就是当临界资源被占用时,另一个申请临界资源的进程会被阻塞,直到其所申请的临界资源被释放。而进程内访问临界资源的代码被成为临界区。??? 对于临界区的访问过程分为四个部分:??? 1.进入区:查看临界区是否可访问,如果可以访问,则转到步骤二,否则进程会被阻塞??? 2.临界区:在临界区做操作??? 3.退出区:清除临界区被占用的标志??? 4.剩余区:进程与临界区不相关部分的代码?进程间同步和互诉的概念?进程同步??? 进程同步也是进程之间直接的制约关系,是为完成某种任务而建立的两个或多个线程,这个线程需要在某些位置上协调他们的工作次序而等待、传递信息所产生的制约关系。进程间的直接制约关系来源于他们之间的合作。??? 比如说进程A需要从缓冲区读取进程B产生的信息,当缓冲区为空时,进程B因为读取不到信息而被阻塞。而当进程A产生信息放入缓冲区时,进程B才会被唤醒。概念如图1所示。???????? 图1.进程之间的同步????? 用C#代码模拟进程之间的同步如代码1所示。 class ProcessSyn { private static Mutex mut = new Mutex(); static void Main() { Console.WriteLine(进程1执行完了进程2才能执行.......); Thread Thread1 = new Thread(new ThreadStart(Proc1)); Thread Thread2 = new Thread(new ThreadStart(Proc2)); Thread1.Start(); Thread2.Start(); Console.ReadKey(); } private static void Proc1() { mut.WaitOne(); Console.WriteLine(线程1执行操作....); Thread.Sleep(3000); mut.ReleaseMutex();//V操作 } private static void Proc2() { mut.WaitOne();//P操作 Console.WriteLine(线程2执行操作....); mut.WaitOne(); } }??? 代码1.C#模拟进程之间的同步???? 运行结果如图2所示。??????? 图2.运行结果?进程互斥??? 进程互斥是进程之间的间接制约关系。当一个进程进入临界区使用临界资源时,另一个进程必须等待。只有当使用临界资源的进程退出临界区后,这个进程才会解除阻塞状态。??? 比如进程B需要访问打印机,但此时进程A占有了打印机,进程B会被阻塞,直到进程A释放了打印机资源,进程B才可以继续执行。概念如图3所示。???????? 图3.进程之间的互斥????? 用C#模拟进程之间的互斥,这里我启动了5个线程,但同一时间内只有一个线程能对临界资源进行访问。如代码2所示。class ProcessMutex {privatestatic Mutex mut = new Mutex();privateconstint numThreads = 5;staticvoid Main() {for (int i = 0; i = numThreads; i++) { Thread myThread = new Thread(new ThreadStart(
您可能关注的文档
- 注册安全工程师案例的分析.pdf
- 注册的安全工程师——安全管理知识点汇总.pdf
- 注册的会计师全国统一考试大纲——专业阶段考试(2017年).pdf
- 注册的核安全工程师核技术应用案例分析.ppt
- 注的塑工艺调试技巧.ppt
- 洗手的日宣传幻灯片.pptx
- 洁净室的人员卫生与个人职责.ppt
- 活动的4轻松输入中文.ppt
- 活性自由基的聚合.ppt
- 流媒体技术的原的理、应用及发展.ppt
- 六年级数学下册教学课件《解比例》.pptx
- 8.21.5 鸟类的生殖与发育(课件)八年级生物下册课件(苏教版).pptx
- 钠离子电池项目智能制造方案(范文参考).docx
- 2023-2024学年吉林省吉林市舒兰市七年级(上)期末语文试卷.docx
- 2024年吉林省吉林市丰满区亚桥实验学校中考数学三模试卷.docx
- 2023-2024学年吉林省辽源市东辽县七年级(上)期末英语试卷.docx
- 2023-2024学年吉林四平九年级数学第一学期期末水平检测试卷.docx
- 2023-2024学年吉林市蛟河市三校联考九年级(上)期末英语试卷.docx
- 2023-2024学年吉林松原九年级英语上册考场实战试卷.docx
- 电解液新材料项目智能制造方案.docx
文档评论(0)