13.Linux 高性能服务器编程 --- 多进程编程
1.fork()每次调用返回两次,在父进程中返回的是子进程的PID,在子进程中返回的是0.fork 函数复制当前进程,在内核进程表中创建一个新的进程表项。子进程的代码与父进程完全相同,同时它还会复制父进程的数据(堆,栈,静态数据),采用写时复制。只有任一进程(父进程或子进程)对数据进行了写操作时,复制才会发送(先是缺页中断,然后操作系统给子进程分配内存并复制父进程的数据)。创建子进程后,父进程中打开的文件描述符默认在子进程中也是打开的,且文件描述符的引用技术加1.不仅如此,父进程的用户根目录,当前工作目录等变量的引用技术均会加1.2.exec系统调用exec 函数不会关闭原程序打开的文件描述符,除非该文件描述符被设置了类似 SOCK_CLOEXEC 的属性3.僵尸进程对于多进程而言,父进程一般需要跟踪子进程的退出状态。因此,当子进程结束运行时,内核不会立即释放该进程的进程表项,以满足父进程后续对该子进程退出信息的查询。在子进程结束之后,父进程读取其退出状态之前,我们称该子进程处于僵尸状态。父进程结束或者异常终止,而子进程继续运行。此时子进程的PPID被设置为1,即init进程。init进程接管了该子进程,并等待它结束。在父进程退出之后,子进程退出之前,该子进程处于僵尸态。4.管道管道能在父,子进程间传递数据,利用的是 fork 调用之后两个管道文件描述符(fd[0],fd[1])都保持打开。socketpair 全双工管道5.信号量semget();semop();semctl();6.共享内存是最高效的 IPC 机制,因为它不涉及进程之间的任何数据传输。必须使用其他辅助手段来同步进程对共享内存的访问。shmget();shmat();shmdt();shmctl();共享内存的 POSIX 方法:shm_open();shm_unlink();7.消息队列消息队列是在两个进程之间传递二进制块数据的一种简单有效方式。每个数据块都有一个特定的类型。msgget();msgsnd();msgrcv();msgctl();8.IPC 命令9.在进程间传递文件描述法传递一个文件描述符,并不是传递一个文件描述符的值。是需要在接收进程中创建一个新的文件描述符,并且该文件描述符和发送进程中被传递的文件描述符指向内核中的文件表项。父子进程用 fork();不相干的两个进程,unix socket
13.1 fork 系统调用
13.2 exec 系列系统调用
13.3 处理僵尸进程
13.4 管道
13.5 信号量
13.6 共享内存
13.7 消息队列
13.8 IPC 命令
13.9 在进程间传递文件描述符
13.Linux 高性能服务器编程 --- 多进程编程相关推荐
- 《Linux高性能服务器编程》学习笔记
<Linux高性能服务器编程>学习笔记 Linux高性能服务器编程 TCP/IP协议族 TCP/IP协议族体系结构以及主要协议 数据链路层 网络层 传输层 应用层 封装 分用 测试网络 A ...
- Linux高性能服务器编程——书籍阅读笔记
目录 前言 正文 第一章 1. 零拷贝函数 2. TCP/IP协议族 3. OSPF 4. ARP协议 5. RARP 6. ICMP协议 7. TCP协议 8. UDP协议 9. 封装 第四章 TC ...
- Linux 高性能服务器网络编程(一)
Linux 高性能服务器网络编程 Linux网络编程基础API Socket 地址API 通用socket 地址 专用Sokect地址 IP地址转换函数 创建socket(socket) 命名(绑定) ...
- 《Linux高性能服务器编程》——导读
前 言 为什么要写这本书 目前国内计算机书籍的一个明显弊病就是内容宽泛而空洞.很多书籍长篇大论,恨不得囊括所有最新的技术,但连一个最基本的技术细节也无法解释清楚.有些书籍给读者展现的是网络上随处可见的 ...
- Linux 高性能服务器编程——多线程编程
问题聚焦: 在简单地介绍线程的基本知识之后,主要讨论三个方面的内容: 1 创建线程和结束线程: 2 读取和设置线程属性: 3 线程同步方式:POSIX信号量,互斥锁和条 ...
- 【Todo】【读书笔记】Linux高性能服务器编程
在读 /Users/baidu/Documents/Data/Interview/服务器-检索端/<Linux高性能服务器编程.pdf> 其实之前读过,要面试了,需要温习. P260 So ...
- Linux 高性能服务器开发笔记:Reactor 模型定时器 | 网络编程定时器
本文主要根据游双书本 Linux 高性能服务器开发 学习分析 linux 网络编程常用到的定时器模型,配备详细理解和分析,同时分析了 Linux 内核中定时器的低精度时间轮和高精度定时器实现思路还有 ...
- Linux高性能服务器开发——进程篇
本文主要是学习Linux高性能服务器开发需要提前了解的知识,后续还会涉及到虚拟内存方面的内容,各位看官可以多了解了解,看到文章内有将的不清楚或者讲错的地方请各位一定留言,我看到后会第一时间验证并修正的 ...
- linux高性能服务器编程书本总结
目录 目录分析 第一篇从 1-4章节主要是介绍 计算机网络基础知识和 TCP/IP模型 第二篇 核心篇 5 章到 15 章节 5-6章节 主要介绍 套接字编程API的使用和介绍 7章 是linux 服 ...
- 第13次预习课-20180919 多进程编程
多进程编程 进程和线程之间的区别 Linux查看: 1)进程: ps –ef 2)跟python相关的进程 ps –ef|grep python [root@iZ2zejbxp2btn9jh8knip ...
最新文章
- Git基础命令(一)
- 斯坦科维奇洲际篮球冠军杯
- 通过 .NET NativeAOT 实现用户体验升级
- jquery cookie的用法
- 基于theano的keras安装
- elasticsearch 删除满足条件的语句_ElasticSearch的基本概念和集群分布式底层实现
- 全民K歌推荐系统架构、算法及后台设计实践
- Flex样式工作原理
- radio change事件
- SQL Server树型结构数据处理的存储过程
- java普通工程打war包_普通java工程(Java Project)打jar包
- 视频必备资源:免费音效素材下载
- office 利用宏 给全文追加拼音
- 概率论考点之方差及数学期望
- 图解Linux网络包接收过程
- TensorFlow 2.9的零零碎碎(二)-读取MNIST数据集
- Android移动开发-Android设备利用光线传感器监测光照强度的实现
- python reset_HTML DOM reset() 方法
- 这篇文章几乎回答了你对量化对冲的所有疑问
- 计算机起源的数学思想