
进程
西门仙忍
从事数据库领域8年
展开
-
Pipe实现分析
一个大型的应用系统,往往需要众多进程协作,进程(Linux进程概念见附1)间通信的重要性显而易见。本系列文章阐述了Linux环境下的几种主要进程间通信手段,并针对每个通信手段关键技术环节给出详细实例。为达到阐明问题的目的,本文还对某些通信手段的内部实现机制进行了分析。 序 linux下的进程通信手段基本上是从Unix平台上的进程通信手段继承而来的。而对Unix发展做出重大贡献转载 2014-11-17 10:00:27 · 1728 阅读 · 0 评论 -
mmap && shm
系统调用mmap()通过映射一个普通文件实现共享内存。系统V则是通过映射特殊文件系统shm中的文件实现进程间的共享内存通信。也就是说,每个共享内存区域对应特殊文件系统shm中的一个文件(这是通过shmid_kernel结构联系起来的),后面还将阐述。 1、系统V共享内存原理 进程间需要共享的数据被放在一个叫做IPC共享内存区域的地方,所有需要访问该共享区域的进程都要把该共享区域映射到本转载 2014-11-17 10:11:09 · 494 阅读 · 0 评论 -
FIFO文件实现分析
FIFO文件的操作方法只有open方法(具体实现在fs/fifo.c)。但是,这并不是fifo文件真正的操作方法,其真正的读写方法是根据不同的打开方式而决定的。 FIFO文件的打开操作 第一次打开fifo文件的进程调用fifo_open时,该命名管道的缓冲页面还没有分配, 因此43行中alloc_pipe_info()函数会被执行原创 2014-11-17 09:53:25 · 1508 阅读 · 0 评论 -
Linux 进程通信(System V)管道
1、管道概述及相关API应用 1.1 管道相关的关键概念 管道是Linux支持的最初Unix IPC形式之一,具有以下特点: 管道是半双工的,数据只能向一个方向流动;需要双方通信时,需要建立起两个管道; 单独构成一种独立的文件系统:管道对于管道两端的进程而言,就是一个文件,但它不是普通的文件,它不属于某种文件系统,而是自立门户,单独构成一种文件系统,并且只存在与内存中。转载 2014-11-17 09:54:22 · 560 阅读 · 0 评论 -
Linux 进程通信(System V)消息队列
目前主要有两种类型的消息队列:POSIX消息队列以及系统V消息队列, 系统V消息队列目前被大量使用。考虑到程序的可移植性,新开发的应用程序应尽量使用POSIX消息队列。 消息队列是内核创建的一个数据结构,是有标识的! 对于有读写权限的进程来说哦,所以可以通过对共享的消息进程的读写实现不同进程之间的通信! 关于消息队列的数据结构: #include struct msqid_d转载 2014-11-17 09:55:36 · 518 阅读 · 0 评论 -
Linux 进程通信(System V)共享内存区
一:简介 前面已经学过:pipe,FIFO,msg queue, 今天要学的是“共享内存区” 1.共享内存区是进程通信中最快的方式,而且传递的信息量是很大的! 2.是通过内存区间映射到进程空间来实现的!因此这种进程间的通信不再涉及到内核! (即进程不是通过执行任何的进入内核的系统调用来传递数据的。这样内核就必须建立允许各个进程之间的共享内存区的映射关系,然后一直管理该内存区!同时也转载 2014-11-17 09:56:34 · 479 阅读 · 0 评论 -
关于子进程继承父进程属性的小问题总结
今天看书,看到用fork创建子进程的一段样例代码: [cpp] view plaincopy #include #include #include int main(void) { pid_t pid; char* msg; int k; pri转载 2015-08-17 15:05:16 · 1512 阅读 · 0 评论 -
Linux写时拷贝技术(copy-on-write)
COW技术初窥: 在Linux程序中,fork()会产生一个和父进程完全相同的子进程,但子进程在此后多会exec系统调用,出于效率考虑,linux中引入了“写时复制“技术,也就是只有进程空间的各段的内容要发生变化时,才会将父进程的内容复制一份给子进程。 那么子进程的物理空间没有代码,怎么去取指令执行exec系统调用呢? 在fork之后exec之转载 2015-08-17 15:05:51 · 392 阅读 · 0 评论