进程的创建
进程本身是一个动态的实体,所以它本身在运行期间也通过创建进程系统调用,并且可以创建多个新进程,对于这句话我同样使用图解的方式来做个简单说明:
当一个进程创建一个新进程时,会存在两种可能的方式执行:
1. 父进程(继续执行)和子进程并行的执行;
2. 父进程等待部分或者全部子进程终止执行;
而新进程的地址空间也存在两种可能:
1. 子进程是父进程的一个COPY了;
2. 载入一个程序来运行;
到这里就有点感觉Erlang的进程思想端倪了(开始我咋看感觉有点象,但是越深入后就觉得确实就是到这个思想才形成了Erlang程序语言的意义本质,个人揣度啊,哈哈)既然有那么点思想的感觉,那我们就开始进入探讨阶段了。也正是下面即将要讲到的问题才印证一句话:技术的本质还存留在简单事物之上(个人总结,哈哈)。
进程间通信
进程间通信有两种本质的方式:
1. 共享缓冲区提供通信;
2. 消息传递;
大家有没有认真看到上面的四个字“消息传递”,对没错就是消息传递!那这里我就感觉是否就是这里和Erlang的语言所谈到的消息传递呢?尽管一个处于操作系统级别,而另一处于语言级别,但是初看给我的感觉是原理是否一致呢?呵呵,那就让我们来看看OS级别的进程间通信本质起了。
消息传递系统
消息系统的功能是允许进程与其他进程之间通讯不必借助共享数据,他们各自独立。而这里要说到一个概念,什么是IPC?
如果我们先不看它定义,而了解具体做法,看是一个什么效果。
到这里为止是不是感觉又和我们说的Erlang非常类似呢?真的没错。。。那就继续往下看看它到底如何而做了。有以下几种方法实现和Send/Receive操作的方法:
u 直接或者间接通信
u 对称或不对称通信
u 自动或手动缓冲
u 发送copy或者引用
u 定长消息或者变长消息
为了更好的说明上面各自的特征是如何引入和体现的,使用两个典型的进程p,q作为两个进程之间的通讯来加以演示。
直接通信:
这里就是两个非常赤裸的而且是非常利索的通信了:
u send(P,message) P发送一个消息给进程Q;
u receive(Q,message) 从进程Q中接收一个消息
特点:
1. 每对需要通信的进程之间自动建立一条链路,进程只需要知道彼此的进程标识符(Pid);
2. 一个连接就只连接到这两个进程;
因此这种机制在寻址上是对称的;发送者与接收者进程都必须要指明通信一方。不过这里要谈到它的一种特例:发送者需要知道接收者,但是接收者不需要知道发送者,其原语定义为:
Send(P,Message) 发送一个消息给P;
Receive(id,Message)从任意进程中接受一个消息;
由于通信是一种交互行为,所以一般情况来说我们有发送自然希望存在一个回复的交互动作,而像这种特例就无法知道它的这种情形,因此这种情况也是我们不希望所见的。
间接通信
间接通信中消息发送和接收则是通过邮箱(实际中更多的是端口方式,这里为了更好理解我们比作邮箱方式)进行的。若把邮箱看成一个对象,进程就可以把消息邮寄(放置)在其中,显而易见既然能够放入自然也就可以从邮箱中取出了。而每一个邮箱都有一个唯一的地址(标识符),进程可以通过不同的邮箱和其它进程通信了。两个进程只有共享一个邮箱才可以进程通信。因此基本构建和原语定义图示如下:
Send(A,M):发送消息(Message)给邮箱A;
Receive(A,M):从邮箱A接收到消息(M);
特点:
1. 只有在两个进程间有一个共享邮件箱下才能两者建立一个连接;
2. 一条链路可以连接两个或者更多的进程;
3. 每对通信进程之间可以同时存在多个不同的链路,而且每条链路对应一个邮箱;
那我们来看看直接通信和间接通信最大的区别是什么?没错,其实间接通信存在中间一个共享的邮箱,而正是这种方式才在以后的应用中得到广泛利用。这里就联想到Erlang语法的:Pid!M是否感觉很相似(注:M消息通知标示符为Pid的进程操作事件,而且具体在接受中也存在得到一个receive来获取消化了),在我看来它就是典型使用到了这个原理机制。这里来看一道例题:假如有两个进程P1,P2和P3都存在共享邮箱A,而且P2与P3正是从A中接收。那么谁 接收到P1发送来的消息呢?图示:
这里我们就需要具体讨论问题的实质了:
对照上面说讲到的间接通信特点,我们知道一条链路最多连接两个进程,同时最多允许任意选择进程来接收消息(现在这个例子中只存在P2,P3),所以他们两者只允许单独接收消息而不是同时接收消息。至于消息会发送给谁,这就需要系统本身来确定接收者了。因此,一个邮箱可能为一个进程或者操作系统所有,不难看出这个例子存在以下情况:
一旦拥有邮箱A的进程终止时,邮箱也就同时要消失,随后向该邮箱发送消息的进程就会被告知邮箱不存在。这里需要强调的是作为操作系统本身来说拥有一个邮箱是独立的不依赖于任何进程。所以操作系统有必要提供一种机制允许一个进程来专门做这个工作了,那是什么工作呢?具体有以下特征:
u 创建一个新邮箱;
u 通过这个邮箱发送和接收信息;
u 删除一个邮箱;
接下来就开始单独讨论所谓的这个“邮箱”的单独机制能够引发的一些线索了。
进程同步
通过消息传送来进程通信,这个是它本质所在。但是消息传送可能有阻塞或者无阻塞——同步和异步。所以这里就存在对于发送者和接收者的阻塞或无阻塞现象的讨论了,对于他们有一下特点:
1. 发送进程阻塞:发送进程被阻塞,直到接收进程接收消息;
2. 发送进程无阻塞:发送进程发送消息并且立刻恢复执行;
3. 接收进程阻塞:接收进程被阻塞,知道一个消息为有效;
4. 接收进程无阻塞:接收进程获取一个有效或空消息;
以上的方式还可以组合形成。
既然有阻塞和无阻塞现象,那立刻可以联想到我们的邮箱扩展成一种管道方式呢?没错这里就需要讲解下面的定义形成。
缓冲
这里只想对于三个定义了解:
u 零长度:无缓冲消息系统;
u 限定长度:
自动缓冲
u 无限长度:
这里单独把限定长度和无限长度提取出来定义:
限定长度:消息队列中存在N个消息,发送者在发送未满的队列中无阻塞。一旦队列满则阻塞直到出现空闲空间。
无线长度:消息队列有无限个消息,也不会阻塞发送者。
下面我们就要通过这些概念扩展到程序开发中经常会遇到的实例。
(待续。。。。。。)
分享到:
相关推荐
在Windows操作系统中,"进程守护"是一个重要的概念,它涉及到系统稳定性、程序可靠性和服务持续性。...对于开发者和系统管理员来说,理解并掌握这一技术对于优化和维护Windows环境下的服务具有重要意义。
### 进程调度模拟设计——优先级法、最高响应比优先调度算法 #### 1. 课程设计目的与功能描述 ...通过实践,我学会了如何将理论知识应用于实际问题中,这对于未来的学术研究和技术开发都有着重要的意义。
在IT领域,管理和优化CPU资源是至关重要的,特别是在多任务并行运行...综上所述,"单进程占用CPU限制程序"是通过监控和控制进程资源使用来实现系统优化的工具,对于理解和管理多任务环境下的CPU资源分配具有重要意义。
### Windows进程提取与监测软件的设计与实现 #### 一、项目背景与意义 ...同时,考虑将软件移植到其他操作系统平台上,扩大适用范围。此外,还可以探索与其他进程管理工具的集成,提供更多样化的功能和服务。
### Oracle Server Process 进程内存消耗分析 ...总之,理解Oracle Server Process 进程的内存消耗机制对于提高数据库性能、合理规划资源分配具有重要意义。希望本文能够为相关领域的技术人员提供有价值的参考和帮助。
5. 合作创新战略:企业与其他企业、科研机构合作,共享资源,共同进行技术研发,降低风险,加速创新进程。 三、技术创新战略的制定 制定技术创新战略需要考虑以下因素: 1. 市场分析:了解市场需求、竞争态势,...
#### 二、现代化进程中的大众文化 - **世俗化趋势**:现代化进程中,随着科技的发展和教育水平的提高,人们的生活方式和思想观念越来越趋向于世俗化。大众文化作为世俗化的一种表现形式,在现代社会中占据了重要...
这种观点往往将信息技术课程等同于单纯的技能训练,如打字课,而忽视了如何利用信息技术来支持学习,帮助学生理解数字文化的意义,促进他们的全面发展。信息技术教育的真正目标应该是培养学生的信息化素养和能力,使...
标题和描述中提到的是计算机网络技术在小学数学教学中的应用,这一主题着重探讨了如何将现代信息技术融入到基础教育中,...在未来的教育实践中,计算机网络技术的应用将更加广泛,对于推动教育现代化进程具有重要意义。
总的来说,CGI技术是Web服务动态化的重要里程碑,虽然现在已被更多高效的技术所取代,但了解CGI的工作原理和应用仍然对理解Web服务器和动态网站的运作有着重要的意义。通过学习"CGI技术全面接触(PDG)"这份资料,你...
随着社会的进步,提升水稻种植技术以增加产量,对于支持国家经济发展和现代化建设具有重要意义。本文主要探讨了优化水稻种植技术的策略和提高种植效益的方法。 1. 优化水稻种植技术的方法途径 1.1 水稻检查技术 ...
ChatGPT技术是OpenAI开发的一种先进的自然语言处理模型,其核心在于利用深度学习技术对大量语料库进行训练,从而使机器人具备理解并生成人类语言的能力。这项技术的出现极大地提升了机器人对话交互的质量,使机器人...
- 能源革命:从煤炭到石油、电能,再到核能,能源类型不断更新,但也带来了能源利用过度、环境污染等问题。 5. **中国与科技革命的关系** - 中国在前三次科技革命中错失机遇,如闭关锁国的清朝未能抓住第一次工业...
3. 科学技术现代化的重要性:科学技术现代化在国家现代化进程中扮演关键角色,能推动经济增长、提升产业竞争力、改善生活质量,并促进社会进步。 4. 海德格尔的技术哲学观:海德格尔认为技术不仅是工具和手段,更是...
根据提供的文件信息和要求,尽管【标签】处为空,【部分内容】的信息看起来是通过OCR扫描技术从实体文档中提取...这些知识点都是该专业领域内重要的组成部分,对于理解和把握计算机科学与技术专业的发展具有重要意义。
综上所述,智能电网技术在电力技术及电力系统规划中的应用对于实现可持续发展、提高电力系统的效率和可靠性具有重要意义。未来,随着技术的不断进步和创新,智能电网将发挥更大的作用,推动电力行业的现代化进程。...
【物流信息技术】是现代物流行业中不可或缺的关键组成部分,它涵盖了信息的收集、处理、传输以及应用,旨在提高物流效率、降低成本,...通过深化理解并应用这些技术,可以推动物流行业的现代化进程,促进企业的竞争力。