1、进程替换

一个进程在执行过程中,可以通过exec将进程的代码段等内容进行替换,但是进程的pid以及优先级不变。

2、进程通信

Linux下进程通信目前常用信号,共享内存,信号量以及套接字。

如果采用管道,管道为一个进程往管道一头写,另一个进程从管道另一头读。如下图所示:

信号通信类似于中断,是一种异步方式。用户进程对信号有三种响应方式:

  1. 忽略信号:对信号不做任何处理,但是对信号9和信号19不能忽略
  2. 捕捉信息:自定义信号处理函数进行处理
  3. 执行缺省操作:linux对信号都进行了缺省操作,例如ctrl+c为信号2,缺省是退出。信号9和信号19只能执行缺省操作。

Linux中所有信号如下:

也可以查看信号的状态

其中每一位展开为16进制,全部展开正好对应64个信号中的每一种信号。信号pending状态表示信号到了但是未得到响应,解屏蔽后响应信号。

信号捕捉可以采用signal(n,handle)函数,从而将缺省操作替换为自己的操作。

3、共享内存

共享内存用于需要将大面积数据共享给其他进程,共享内存是一种同步机制。进程1的虚拟地址指向一块内存,进程2的虚拟地址也指向该片内存。

通过ipcs可以看出共享内存信息

可以看到共享内存一般较大,50多k起步

4、POSIX

在POSIX shm共享内存

mmap是将磁盘上文件映射到用户空间

ftruncate改变内存中文件大小,该文件和磁盘上文件大小不同,类似于内存的lazy allocation

POSIX sem对信号量的一组操作

Sem_init, sem_post,sem_wait类似于操作系统中的PV操作

5、socket通信

这种socket通信在本机进程间通信,不可能丢包

采用netstat进行协议栈监视

宋宝华Linux培训笔记-Linux多进程相关推荐

  1. 宋宝华Linux培训笔记-Linux进程管理

    1.cpu进程状态 linux中进程状态如下图: 浅度睡眠为进程等待资源或中断响应,即使资源没有拿到也可以被唤醒:深度睡眠为进程等待资源,拿到资源后进入就绪状态. 僵死状态为进程死亡,但还没有被父进程 ...

  2. 宋宝华Linux培训笔记-Linux多线程

    1.POSIX标准多线程 发送给进程下一组线程的信号将被共享,被其中任意一个线程处理.同一进程创建的线程同生死,如果收到一个kill信号,这一组task_struce都会退出. 2.NPTL模型 内核 ...

  3. 宋宝华:评Linux 5.13内核

    目录 Misc cgroup Landlock安全模块 系统调用的堆栈随机化 printk无锁ringbuffer的进一步优化 BPF可调用内核函数 公共的IO PAGE Fault支持 Linux ...

  4. linux 没有windows.h头文件_宋宝华: Linux内核编程广泛使用的前向声明(Forward Declaration)...

    本文系转载,著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 作者:宋宝华 来源: 微信公众号linux阅码场(id: linuxdev) 前向声明 编程定律 先强调一点:在一切可 ...

  5. 宋宝华_2010年11-12月Linux驱动和内核讲座PPT下载

        12月29日,宋宝华老师在线讲座(按键和LCD驱动) cloudquan 2010-12-20 2/146 heyan0208 3 天前 00:37     宋宝华_2010年12月11日_& ...

  6. 宋宝华:LEP(Linux易用剖析器) 是什么,为什么以及怎么办(2)

    LEP(LINUX EASY PROFILING) 是Linuxer之LEP项目组(Barry Song,Mac Xu,陈松等以及陈莉君教授/西邮Linux 3+1实验室)正在致力于打造的一个开源项目 ...

  7. linux pdf 宋宝华,51CTO博客-专业IT技术博客创作平台-技术成就梦想

    原创 宋宝华 Linux阅码场 2018-04-10 前言 网上关于BIO和块设备读写流程的文章何止千万,但是能够让你彻底读懂读明白的文章实在难找,可以说是越读越糊涂! 我曾经跨过山和大海 也穿过人山 ...

  8. 宋宝华: 用off-cpu火焰图进行Linux性能分析

    在<宋宝华:火焰图:全局视野的Linux性能剖析>一文中,我们主要看了on-cpu火焰图,理解了系统的CPU的走向的分析.但是,很多时候,单纯地看on-cpu的情况(什么代码在耗费CPU) ...

  9. 宋宝华:论一切都是文件之匿名inode

    01 唯有文件得人心 当一个女生让你替她抓100只萤火虫,她一定不是为了折磨你,而是因为她爱上了你.当你们之间经历了无数的恩恩怨怨和彼此伤害,她再次让你替她抓100只萤火虫,那一定是因为她还爱着你. ...

  10. 宋宝华: 关于DMA ZONE和dma alloc coherent若干误解的彻底澄清

    原创 宋宝华 Linux阅码场 2018-01-22 作者简介 宋宝华,他有10几年的Linux开发经验.他长期在大型企业担任一线工程师和系统架构师,编写大量的Linux代码,并负责在gerrit上r ...

最新文章

  1. UVA1660 电视网络 Cable TV Network(网络流,最小割)
  2. C++中转换构造函数:将其它类型转换为当前类的类型
  3. Android依赖注入的实践——Dagger2
  4. 存储过程学习三(创建存储过程实例)
  5. github ssh密钥_如何使用SSH密钥在一台机器上管理多个GitHub帐户
  6. 罗永浩:当年签了 “流氓协议” 将公布这个恶劣投资者
  7. 转:完全卸载Oracle方法
  8. 3.Linux 高性能服务器编程 --- TCP 协议详解
  9. Head First Design Patterns(深入浅出设计模式)-设计模式介绍
  10. 视觉目标跟踪算法收集-实时更新
  11. 滴滴开源 ​DoraemonKit:一款像哆啦A梦般全能的App研发工具
  12. 一个微信账号只能开发一个微信小程序吗?
  13. 单片机开发,推荐开源跨平台的SDCC编译器
  14. ui设计需要做android和苹果版本,安卓和IOS系统对于UI设计来说一样吗
  15. 华为手机的视频剪辑功能居然这么强大,太实用啦
  16. 微信支付 APP端 后端 第四-五弹 退款定时任务 账单下载
  17. JS setTimeout和setInterval的区别
  18. 广东计算机二级考试大纲,全国计算机等级考试大纲(二级)
  19. JavaWeb开发_Web前端_Ajax
  20. 经纬度定义、经纬度格式、GDAL中地理坐标转换及地理坐标屏幕显示

热门文章

  1. 改变PDF阅读器、CAJViewer的背景颜色
  2. 浅谈防勒索病毒方案之主机加固
  3. 解除 网课失去焦点/离开页面 就自动暂停 的限制
  4. Consul删除服务
  5. 不能注册DLL/OCX:RegSvr32失败 0x5
  6. A very hard mathematic problem(二分)
  7. Windows(11)下JDK安装与环境变量配置
  8. TOGAF9中文版(二)
  9. asp.net购物商城系统
  10. C语言职工工资管理系统