http://blog.csdn.net/u013686019/article/details/78002491
多角度看待进程:
1、从操作系统的角度:
进程是一段正在运行的程序,包括:
一个进程就是一个新的进程描述符,由结构体struct task_struct表示,该结构包含了内核管理一个进程需要的所有信息。
虽然带来了通信的问题,但进程间这种隔绝式的设计确是必然的:隔绝意味着互不干扰,意味着安全,意味着去耦合等等。
这系列的内容就是用来描述各个通信方式的原理及使用实例。
参考资料:
1、Linux内核设计与实现
Linux Kernel Development, Robert Love
2、深入Linux内核架构
Professional Linux Kernel Architecture, Wolfgang Mauerer
一、进程
在涉及进程间通信之前,我们需要稍叙下进程的概念。多角度看待进程:
1、从操作系统的角度:
进程是一段正在运行的程序,包括:
- 一段可执行的代码
- 一些必需的资源,如堆栈空间、文件、信号、内存等等
2、从用户的角度:
对用户来说是不存在进程概念的,用户看到就是一个个独立运行的应用程序,如浏览器、播放器等。
执行一次系统调用fork()就创建了一个子进程,不过此时子进程完全copy了原进程的所有资源,只是PID不一样。
之后如果调用exec系的某个函数,就可以加载另一个新程序。
一个进程就是一个新的进程描述符,由结构体struct task_struct表示,该结构包含了内核管理一个进程需要的所有信息。
二、进程间通信问题的来源
创建进程的时候,操作系统为其分配专有的地址空间并建立众多的数据表用于维护每个进程。
在系统中,每一个进程都是一个个独立的个体,彼此之间互相隔绝、不知道对方的存在。
这种情况下,进程之间如果需要交换信息,就需要操作系统提供相应的通信措施供进程使用,我们最常接触但不会想到"进程间通信"的场景就是访问存储器上的文件。虽然带来了通信的问题,但进程间这种隔绝式的设计确是必然的:隔绝意味着互不干扰,意味着安全,意味着去耦合等等。
这系列的内容就是用来描述各个通信方式的原理及使用实例。
参考资料:
1、Linux内核设计与实现
Linux Kernel Development, Robert Love
2、深入Linux内核架构
Professional Linux Kernel Architecture, Wolfgang Mauerer