简单介绍进程间有哪几种通信机制(揭开进程的概念)

预备知识前驱图

简单介绍进程间有哪几种通信机制(揭开进程的概念)(1)

程序顺序执行的特征
  • 顺序性顺序执行
  • 封闭性独占资源
  • 可再现性只要程序执行环境和初始条件相同,重复执行时结果都相同
程序并发执行的特征
  • 间断性
  • 失去封闭性
  • 不可再现性因为程序并发执行时,是多个程序共享系统中的各种资源,因而这些资源的状态是由多个程序来改变,致使程序的运行失去了封闭性。而程序一旦失去了封闭性也会导致其再失去可再现性。执行结果与并发程序的执行速度相关
进程的概念

非正式地说,进程是执行的程序。进程不只是程序代码,程序代码又称为文本段或代码段。进程还包括当前活动(程序计数器的值、处理器寄存器的内容)。通常还包括进程堆栈(临时数据)、数据段(全部变量)。还可能包括堆(进程运行时动态分配的内存)。

进程的特征
  • 动态性进程有生命周期,最基本特征。
  • 并发性可并发执行;引入进程的目的是为了使其进程实体能和其他进程实体并发执行
  • 独立性进程实体是一个能独立运行、独立获得资源和独立接受调度的基本单位
  • 制约性进程间对资源的争用而相互制约
  • 异步性进程按照各自独立的、不可预知的速度向前推进
  • 结构特征进程=程序 数据 PCB
进程和程序的比较

进程是程序的一次运行过程,是一个动态实体,而程序是一个指令的集合,是静态实体。进程具有生命周期,具有创建、执行和撤销的过程,而程序一旦创建,可以永远存在 。进程实体由程序段、数据段及进程控制块组成。进程与程序之间不存在一一对应的关系,不同的进程可以对应相同的程序,一个进程中还可以同时调用多个程序。进程实体是一个能独立运行的基本单位,可独立获得资源和独立调度;而程序不能作为独立的单位参加运行。进程可按异步方式运行,程序不是运行实体,所以不可以异步执行。

进程的状态

就绪、运行、等待是三个基本状态。

  • 提交状态
  • 后备状态
  • 就绪状态
  • 运行状态
  • 等待状态
  • 结束状态

简单介绍进程间有哪几种通信机制(揭开进程的概念)(2)

进程的挂起/解挂
  • 设置挂起/解挂的原因用户需要:中间结果与预期不符。操作系统需要:系统某些功能故障。系统负荷过重 。父进程请求:修改或协调子进程 。对换的需要。

简单介绍进程间有哪几种通信机制(揭开进程的概念)(3)

进程控制块(PCB)

PCB是用以记录与进程相关信息的主存区,是进程存在的唯一标志

简单介绍进程间有哪几种通信机制(揭开进程的概念)(4)

具有相同状态进程的PCB分别通过PCB中的链接字链接成一个队列。

简单介绍进程间有哪几种通信机制(揭开进程的概念)(5)

C/C Linux服务器开发高级架构师学习文档电子书籍 点击 正在跳转 获取,内容知识点包括Linux,Nginx,ZeroMQ,MySQL,Redis,线程池,MongoDB,ZK,Linux内核,CDN,P2P,epoll,Docker,TCP/IP,协程,DPDK等等。视频学习链接点击:C/C Linux服务器开发/后台架构师【零声教育】-学习视频教程-腾讯课堂

简单介绍进程间有哪几种通信机制(揭开进程的概念)(6)

索引方式

系统根据所有进程状态的不同,建立几张索引表,并把索引表的首地址记录在内存的专用单元中。

简单介绍进程间有哪几种通信机制(揭开进程的概念)(7)

Linux PCB的例子

简单介绍进程间有哪几种通信机制(揭开进程的概念)(8)

进程切换/上下文切换

切换CPU到另一个进程需要保存当前进程状态和恢复另一个进程的状态,内核会将旧进程状态保存在PCB中,并加载调度新的进程。上下文切换的时间是纯粹的开销。有的处理器提供多个寄存器组,上下文切换只需简单改变当前寄存器组的指针(如果活动进程数量超过寄存器组的组数,系统仍要在寄存器和内存之间复制数据)。

简单介绍进程间有哪几种通信机制(揭开进程的概念)(9)

进程的创建进程图

进程图(有向树)与前趋图(有向无环图)的2个区别:1、表示的含义不同;2、执行时处理不同:可并发执行

进程创建原语Creat()
  • 申请空白PCB
  • 为新进程分配资源
  • 初始化PCB
  • 新进程插入就绪队列
父进程创建子进程

当一个进程创建子进程时,子进程会需要一定的资源。子进程可以直接从操作系统那获得资源,也可以只从父进程那里获得资源子集。父进程可能要在子进程之间分配资源或共享资源。限制父进程只能使用父进程的资源,可以防止创建过多进程,导致系统超载。

  • 父与子进程的执行可能父进程和子进程并发执行父进程等待,直到某个或某些子进程执行完毕
  • 新进程的地址空间的情况子进程完全复制父进程,拥有同样的程序和数据子进程加载另一个新程序
Unix举例
  • fork()通过系统调用fork()创建新进程,新进程的地址空间复制了原来进程的地址空间。子进程和父进程都继续执行fork()调用后的指令。但对于父进程,fork()返回子进程的进程标识。对于子进程,fork()返回0。
  • exec()在调用fork()后,可以有个进程调用exec(),用新程序取代进程的地址空间(加载二进制文件到内存),并开始执行。
  • wait()父进程创建子进程后,如果无事可做,就调用wait()把自己移除就绪队列,直到子进程结束,wait()返回(可以获得子进程的标识符、退出状态等信息),父进程从wait()的下一条指令开始继续执行。
进程的终止级联终止

如果一个进程终止,那么它的所有子进程也相应终止,称为级联终止。

僵尸进程

当一个进程终止时,操作系统会释放它的资源,但是位与进程表中的条目还在,直到它的父进程调用wait()。因为进程表中包含了进程的退出状态,当进程已经终止,但它的父进程还没有调用wait()时,这样的进程称为僵尸进程。一旦父进程调用wait(),僵尸进程的进程标识符和进程表中的条目就会被释放。

孤儿进程

如果父进程没有调用wait()就终止,它的子进程称为孤儿进程。Linux和Unix的做法是,将init进程作为孤儿进程的父进程。init进程定期调用wait(),以便收集孤儿进程的退出状态,释放孤儿进程的标识符和进程表条目。

进程间通信

操作系统内的并发执行程序可以是独立的,也可以是协作的,若是协作的,那么就需要有一种进程间通信(IPC)的机制。

生产者-消费者问题

简单介绍进程间有哪几种通信机制(揭开进程的概念)(10)

进程通信的类型

消息传递对于较小数量的数据交换很有用,因为无需避免冲突。对于分布式系统,消息传递也比共享内存更易实现。共享内存可能快于消息传递,因为消息传递的实现经常采用系统调用,需要消耗更多时间使内核介入。共享内存仅在建立共享内存区域使需要系统调用,建立后所有访问都可作为常规内存访问,无需借助内核。

  • 共享存储器

简单介绍进程间有哪几种通信机制(揭开进程的概念)(11)

  • 消息传递

由操作系统提供机制,利用系统提供的通信原语,以消息或报文为单位进行信息交换。

  • 命名

简单介绍进程间有哪几种通信机制(揭开进程的概念)(12)

  • 间接通信

简单介绍进程间有哪几种通信机制(揭开进程的概念)(13)

  • 同步

简单介绍进程间有哪几种通信机制(揭开进程的概念)(14)

  • 缓存

简单介绍进程间有哪几种通信机制(揭开进程的概念)(15)

  • 管道通信

简单介绍进程间有哪几种通信机制(揭开进程的概念)(16)

,

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页