专栏首页开发与安全linux网络编程之进程间通信基础(一):进程间通信概述

linux网络编程之进程间通信基础(一):进程间通信概述

一、顺序程序与并发程序特征

顺序程序特征

顺序性 封闭性:(运行环境的封闭性) 确定性 可再现性

并发程序特征

共享性 并发性 随机性

二、进程互斥

1、由于各进程要求共享资源,而且有些资源需要互斥使用,因此各进程间竞争使用这些资源,进程的这种关系为进程的互斥 2、系统中某些资源一次只允许一个进程使用,称这样的资源为临界资源或互斥资源。 3、在进程中涉及到互斥资源的程序段叫临界区

举例如下图:

假设x = 1; 当A进程已经判断完毕x>0,此时时间片轮转到了B,B也判断x>0,然后执行x--,即x=0,然后过后又轮转到继续执行A,此时再执行x-- 就明显系统逻辑出现了错误。

三、进程同步

进程同步指的是多个进程需要相互配合共同完成一项任务。举例如下图:

P1和P2进程是互相配合的,只有当P2关门后,P1才能启动车辆;P1正常运行了,P2开始售票;当P1到站停车后,P2才能开门;

即需要互相等待对方完成某个操作,自身才能继续运行下去。

四、进程间通信的目的

1、数据传输:一个进程需要将它的数据发送给另一个进程 2、资源共享:多个进程之间共享同样的资源。 3、通知事件:一个进程需要向另一个或一组进程发送消息,通知它(它们)发生了某种事件(如进程终止时要通知父进程)。 4、进程控制:有些进程希望完全控制另一个进程的执行(如Debug进程),此时控制进程希望能够拦截另一个进程的所有陷入和异常,并能够及时知道它的状态改变。

五、进程间通信的分类

文件 文件锁 管道(pipe)和命名管道(FIFO) 信号(signal) 消息队列 共享内存 信号量 互斥量 条件变量 读写锁 套接字(socket)

需要注意的是,消息队列、共享内存和信号量在System V 和 POSIX 标准中都有定义,而互斥量、条件变量和读写锁只在POSIX标准才有定义。

六、进程间共享信息的三种方式

1、随进程持续:一直存在直到打开的最后一个进程结束。(如pipe和FIFO) 2、随内核持续( kernel persistence):一直存在直到内核自举或显式删除(如System V消息队列、共享内存、信号量) 3、随文件系统持续:一直存在直到显式删除,即使内核自举还存在。(POSIX消息队列、共享内存、信号量使用文件系统tmpfs 来实现)

参考:

《TCP/IP详解 卷一》

《UNP》

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • linux系统编程之进程(一):进程基本概述

    一、什么是进程 从用户的角度来看进程是程序的一次执行过程。 从操作系统的核心来看,进程是操作系统分配的内存、CPU时间片等资源的基本单位。 进程是资源分配的...

    s1mba
  • 时间系统、进程的调度与切换

    注:本分类下文章大多整理自《深入分析linux内核源代码》一书,另有参考其他一些资料如《linux内核完全剖析》、《linux c 编程一站式学习》等,只是为了...

    s1mba
  • linux系统编程之进程(五):终端、作业控制与守护进程

    一、终端的概念 在UNIX系统中,用户通过终端登录系统后得到一个Shell进程,这个终端成为Shell进程的控制终端(Controlling Terminal)...

    s1mba
  • 多进程的组织、交替、合作

    上文中(操作系统之进程管理(1):从CPU如何执行进程说起),我们说过操作系统为每个程序提供了一个叫做PCB(Process Control Block进程控制...

    xujjj
  • 僵尸进程的问题

    1、僵尸进程的产生 在AIX操作系统实施的进程结构中,每一个进程都有一个父进程。当一个进程结束时会通知它的父进程,从而该进程的父进程会收集该进程的状态信息。若...

    李海彬
  • [每天五分钟,备战架构师-2]操作系统基本原理

    操作系统是管理和控制计算机硬件和软件资源的计算机程序,是直接运行在“裸机”上的最基本的系统软件。注意,这里说的裸机可以是物理机,也可以是虚拟机。随着技术的发展,...

    大江小浪
  • Linux笔记(10)| 进程概述

    父进程返回正整数,子进程返回0,在执行fork函数之前,操作系统只有一个进程,fork函数之前的,代码只会被执行一次,在执行fork函数之后,操作系统有两个几乎...

    飞哥
  • linux进程管理

    查看进行使用的指令是 ps ,一般来说使用的参数是 ps -aux,ps -ef,正常与grep连用

    小小咸鱼YwY
  • Linux 进程总结

    进程,是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。它的执行需要系统分配资源创建实体之后,才能进行。...

    杰哥的IT之旅
  • 进程

    以前的计算机一次只能执行一个程序,后来有了多道程序设计的电脑,可以宏观上执行多个程序。由此产生了进程的概念

    用户5426759

扫码关注云+社区

领取腾讯云代金券