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

顺序程序特征

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

并发程序特征

共享性
并发性
随机性

二、进程互斥

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消息队列、共享内存、信号量如果是使用映射文件来实现)

即POSIX消息队列、共享内存、信号量 至少是随内核持续的,如果是用映射文件来实现,则是随文件系统持续。

转载于:https://www.cnblogs.com/hehehaha/p/6332477.html

UNIX网络编程——进程间通信概述相关推荐

  1. Unix网络编程--进程间通信--管道通信

          所有式样的Unix都提供管道,它由 pipe 函数创建,提供一个单路(单向)数据流.       原型如下: #include <unistd.h> int pipe(int ...

  2. 《UNIX网络编程 卷1:套接字联网API(第3版)》——第2章 传输层:TCP、UDP和SCTP 2.1概述...

    本节书摘来自异步社区<UNIX网络编程 卷1:套接字联网API(第3版)>一书中的第2章,第2.1节,作者:[美]W. Richard Stevens , Bill Fenner , An ...

  3. 《UNIX网络编程 卷2:进程间通信(第2版)》——1.4 名字空间

    本节书摘来自异步社区<UNIX网络编程 卷2:进程间通信(第2版)>一书中的第1章,第1.4节,作者:[美]W. Richard Stevens著,更多章节内容可以访问云栖社区" ...

  4. UNIX网络编程卷2:进程间通信(第2版)PDF——带完整书签

    微信搜索[书为屋],获取更多免费学习资源和小工具,一起学习,一起进步! 下载地址:UNIX网络编程卷2:进程间通信(第2版) 带完整书签: 微信搜索[书为屋],获取更多免费学习资源和小工具,一起学习, ...

  5. 网编编程必看书籍:unix网络编程

    unix网络编程被誉为圣经,该书主要讲socket套接字相关,socket API,从底层剖析网络编程.网络编程中需要用到的一些经典函数,多路复用函数,这些都值得去反复学习研究. 目录: 录 Part ...

  6. 【LINUX/UNIX网络编程】之使用消息队列,信号量和命名管道实现的多进程服务器(多人群聊系统)...

    RT,使用消息队列,信号量和命名管道实现的多人群聊系统. 本学期Linux.unix网络编程的第三个作业. 先上实验要求: 实验三  多进程服务器 [实验目的] 1.熟练掌握进程的创建与终止方法: 2 ...

  7. UNIX网络编程---套接字编程简介(三)

    UNIX网络编程---套接字编程简介 一.概述 从这里开始正式开始网络编程之旅,所有的函数都是基本的库函数.这些都是网络编程的基础.Come on!!!! 二.套接字地址结构 大多数套接字函数都需要一 ...

  8. UNIX网络编程.卷1,套接字联网API(第3版)(中文版)(Stevens经典著作,两位顶级网络编程专家应邀执笔修订)...

    UNIX网络编程.卷1,套接字联网API(第3版)(中文版)(Stevens经典著作,两位顶级网络编程专家应邀执笔修订) 基本信息 原书名: Unix Network Programming, Vol ...

  9. 《Unix网络编程卷1-套接字联网API》第一个例子编译 不通过问题解决

    <Unix网络编程卷1-套接字联网API>是本好书. 但是第一个例子不是很好编译. 需要如下步骤: 本人机器CentOS 5.4 1.下载源码 unpv13e解压到任意目录 然后按其rea ...

最新文章

  1. 来看看几篇Nature上的GNN吧~
  2. golang中的bufio
  3. 构建优质的推荐系统服务
  4. 机器学习Sklearn实战——线性回归
  5. spring boot api文档_精讲RestTemplate第1篇-在Spring或非Spring环境下如何使用
  6. 2017.4.23 一元三次方程求解 思考记录
  7. BZOJ1588: [HNOI2002]营业额统计
  8. 软件测试算是后端吗,软件测试--前后端数据交互
  9. 城市轨道交通运营票务管理论文_城市轨道交通运营管理浅析
  10. svn代码统计工具使用说明
  11. XTU1340Wave
  12. 计算几何专项:UVa 12307
  13. Cocos Creator 微信小游戏排行榜
  14. Java版Word开发工具Aspose.Words功能解析:将Word文档(DOC / DOCX)转换为HTML
  15. 教程--免费为小程序接入客服机器人
  16. 陀螺产业区块链第十五季 | 博雅正链RegChain
  17. c语言数字的写法田字格,数字100田字格怎么写
  18. vue项目使用高德地图
  19. idea java新建项目详细步骤
  20. 多线程爬虫爬取电影天堂资源

热门文章

  1. nginx只能访问80端口_nginx 访问不了非80端口
  2. 奔腾双核linux服务器,Dell推出双核心奔腾服务器
  3. 学python编脚本_python 学习写脚本
  4. java 调用dll 方法 postmessage实现后台模拟按键_VB实现模拟键盘及模拟鼠标(后台操作)...
  5. C++Primer学习之一引用和指针
  6. 支付系统设计:对账处理(二)
  7. 互联网日报 | 7月31日 星期六 | 小米手机销量晋升全球第二;苏宁易购上半年亏损31.9亿元;亚马逊被欧盟罚款8.88亿美元...
  8. 动态分配方式计算学生成绩
  9. python监听键盘的库的名称_python实时监控键盘鼠标,pynput库的详细用法
  10. 【Servlet】getInitParameter()发生空指针导致HTTP500的解决方案