文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>详解Linux进程+进程间通信IPC

详解Linux进程+进程间通信IPC

时间:2010-10-15  来源:joejoe0332

一 Linux进程

  1) 进程的内存映像

  2)解释

  BSS段:在采用段式内存管理的架构中,BSS段(bss segment)通常是指用来存放程序中未初始化的全局变量的一块内存区域。BSS是英文Block Started by Symbol的简称。BSS段属于静态内存分配。

  数据段:在采用段式内存管理的架构中,数据段(data segment)通常是指用来存放程序中已初始化的全局变量的一块内存区域。数据段属于静态内存分配。

  代码段:在采用段式内存管理的架构中,代码段(code segment / text segment)通常是指用来存放程序执行代码的一块内存区域。这部分区域的大小在程序运行前就已经确定,并且内存区域通常属于只读, 某些架构也允许代码段为可写,即允许自修改程序。 在代码段中,也有可能包含一些只读的常数变量,例如字符串常量等。

  栈(stack)在计算机科学中,是一种特殊的链表形式的数据结构,它的特殊之处在于只能允许在链表的一端(称为栈顶,英文为top)进行添加 和删除操作。另外堆栈数据结构的实现也可以通过数组来完成。栈Stack是存放程序中局部变量的内存区,另外栈stack用来保存函数调用的现场。栈 stack由系统自动分配,用户不需要关心其分配和释放。

  堆是指Heap,程序运行时供程序员来支配的一段内存。 用于进程运行时动态分配内存。堆的大小不固定,可根据程序运行动态变化。由程序中的new/delete等控制。

  二 Linux的进程间通信IPC(Inter-process communication)

  1)Linux的IPC

  2)解释

  管道: 管道可以分为普通管道和命名管道。普通管道用于具有亲缘关系的进程(父子进程)间的通信。命名管道则在普通管道提供的功能的基础上,通过给管道命名的方法,使管道变成文件系统中的管道文件, 从而允许无亲缘关系的进程间通过访问管道文件进行通信。

  信号:信号类似windows下的消息,用于通知进程有某种事件发生。只要知道进程的进程号,就可以向进程发送信号。而进程可以自行定义对信号的处理方法。

  消息队列:消息队列是消息的链表。进程可以向消息队列中发送某种类型的消息,也可以从消息队列中读取某种类型的消息。消息内存则可以根据需要自行定义,从而使消息队列克服了信号承载信息量过少的缺点,在实际编程中应用较广。

  共享内存:共享内存是在系统内核分配的一块缓冲区,多个进程都可以访问该缓冲区。由于进程可以直接读写内存,避免了在内核空间与用户空间的切 换,所以共享内存读写效率很高。共享内存类似与windows环境编程中的内存映像文件。在Linux系统中,多用于存储应用程序的配置信息。

  信号量:也成为信号灯,主要用于进程间的同步。

  套接口: 也成为套接字,可以用于跨越主机边界的通信。套接口最初是在BSD版本的UNIX系统上实现的,由于其功能强大,接口友好,现在已经在大多数操作系统中实现,成为事实上的网络编程接口。

相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载