四.消息队列(Message Queue)消息队列就是消息的一个链表,它允许一个或者多个进程向它写消息,一个或多个进程向它读消息。Linux维护了一个消息队列向量表:msgque,来表示系统中所有的消息队列。消息队列克服了信号传递信息少,管道只能支持无格式字节流和缓冲区受限的缺点。消息队列用于运行于...
分类:
系统相关 时间:
2014-11-17 17:22:03
阅读次数:
322
共享内存是Linux下提供的最基本的进程通信方法,它通过mmap或者shmget系统调用在内存中创建了一块连续的线性地址空间,而通过munmap或者shmdt系统调用释放这块内存,使用共享内存的好处是多个进程使用同一块内存时,在任何一个进程修改了共享内存中的内容后,其它进程通过访问这段内存就能够得到内存变化。这里探讨nginx对共享内存的封装。...
分类:
其他好文 时间:
2014-11-14 17:54:49
阅读次数:
361
【版权声明:尊重原创,转载请保留出处:blog.csdn.net/shallnet 或 .../gentleliu,文章仅供学习交流,请勿用于商业用途】
前面讲到socket的进程间通信方式,这种方式在进程间传递数据时首先需要从进程1地址空间中把数据拷贝到内核,内核再将数据拷贝到进程2的地址空间中,也就是数据传递需要经过内核传递。这样在处理较多数据时效率不是很高,而让多个进程共享...
分类:
系统相关 时间:
2014-11-11 09:22:43
阅读次数:
167
【版权声明:尊重原创,转载请保留出处:blog.csdn.net/shallnet 或 .../gentleliu,文章仅供学习交流,请勿用于商业用途】
在一个较大的工程当中,一般都会有多个进程构成,各个功能是一个独立的进程在运行。既然多个进程构成一个工程,那么多个进程之间肯定会存在一些信息交换或共享数据,这就涉及到进程间通信。进程间通道有很多种,比如有最熟悉网络编程中的socket、还...
分类:
系统相关 时间:
2014-11-10 12:02:51
阅读次数:
196
本文讨论如何在多个进程间共享文件,以及所涉及的内核数据结构。然后会介绍dup,dup2,fcntl等函数的使用。1 数据结构内核使用三种数据结构表示打开的文件:(1)每个进程在进程表中都有一个记录项,记录项中有一张打开文件文件描述符表,每项包括: a )文件描述符标志(close_on_exec)....
分类:
其他好文 时间:
2014-11-08 23:26:16
阅读次数:
337
一、Nginx整体架构
正常执行中的nginx会有多个进程,最基本的有master process(监控进程,也叫做主进程)和woker process(工作进程),还可能有cache相关进程。
一个较为完整的整体框架结构如图所示:
二、核心进程模型
启动nginx的主进程将充当监控进程,而由主进程fork()出来的子进程则充当工作进程。
nginx也可以...
分类:
系统相关 时间:
2014-11-08 20:54:21
阅读次数:
220
本文由该问题引入到内核锁的讨论,归纳例如以下为什么须要内核锁?多核处理器下,会存在多个进程处于内核态的情况,而在内核态下,进程是能够訪问全部内核数据的,因此要对共享数据进行保护,即相互排斥处理有哪些内核锁机制?(1)原子操作atomic_t数据类型,atomic_inc(atomic_t *v)将v...
分类:
其他好文 时间:
2014-11-08 18:10:46
阅读次数:
125
共享内存同意两个或多个进程共享一给定的存储区,由于数据不须要来回复制,所以是最快的一种进程间通信机制。共享内存能够通过mmap()映射普通文件(特殊情况下还能够採用匿名映射)机制实现,也能够通过系统V共享内存机制实现。应用接口和原理非常easy,内部机制复杂。为了实现更安全通信,往往还与信号量等同步...
分类:
系统相关 时间:
2014-11-07 18:32:40
阅读次数:
183
??
线程概述
线程是程序运行的基本执行单位,当操作系统执行一个程序时,会创建一个进程,而这个进程至少创建一个线程(主线程)作为这个程序的入口点。所以,在操作系统中运行的程序都至少有一个主线程。
进程和线程是现代操作系统必不可少的运行模型,在操作系统中可以有多个进程,这些进程包括系统进程(系统内部创建的进程)和用户进程(用户程序创建的进程),一个进程可以有多个线程。进程之间不存在...
分类:
编程语言 时间:
2014-11-05 09:17:35
阅读次数:
226
共享内存的工作方式顾名思义,共享内存让一段内存可供多个进程访问。用特殊的系统调用(即对 UNIX 内核的请求)分配和释放内存并设置权限;通过一般的读写操作读写内存段中的数据。共享内存并不是从某一进程拥有的内存中划分出来的;进程的内存总是私有的。共享内存是从系统的空闲内存池中分配的,希望访问它的每个进...
分类:
系统相关 时间:
2014-10-31 11:30:22
阅读次数:
298