05 2020 档案
摘要:信号量通常用于进程并发控制,此处并发有两个含义:进程共享资源的互斥,进程时序关系控制。这两种方式也是信号量最常见的应用。互斥量作为共享资源互斥最常用的方式,只能用于单一进程(要实现多进程,可以采用共享内存映射某个互斥量,但一般不这么做)。在Linux操作系统中,有两种类型的信号量:XSI信号量和PO
阅读全文
摘要:消息队列是消息的链接表,存储在内核中,用队列标识符标识(XSI的标识符)。消息队列的每个消息对象至少两个对象:消息类型(长整型表示)和消息主体。结构体定义如下: struct msg { long type; char data[50]; };//此消息结构体由用户定义,开头一定是消息类型 每个消息
阅读全文
摘要:1. 共享内存简介 在Linux系统中,进程可以通过共享内存实现进程间通信。共享内存主要有两种实现方法:XSI共享存储(通过shmget,shmat,shmdt等函数实现)和内存映射(mmap实现)。两者的主要区别是前者没有相关的文件,共享的是内存匿名段;而后者通常需要指定一个文件路径,调用open
阅读全文
摘要:popen和pclose调用后实现的操作是:创建一个管道,fork一个子进程,关闭未使用的管道端,在子进程执行shell命令。函数原型如下: #include <stdio.h> FILE* popen(const char* cmdstring,const char* type) cmdstrin
阅读全文
摘要:注:看到一篇讲解epoll原理的文章,写得非常详细,建议阅读:epoll实现原理 之前分别记录了epoll(并发程序设计3:多路IO复用技术(2)),select和poll(并发程序设计2:多路IO复用技术(1))的用法,本节比较一下它们各自的特点。 1. select和poll的不同 (1) se
阅读全文
摘要:1. 基本概念及相关术语 1.1 基本概念 虚拟内存使得应用程序认为它拥有连续的可用的内存(一个连续完整的地址空间),而实际上,它通常是被分隔成多个物理内存碎片,还有部分暂时存储在外部磁盘存储器上,在需要时进行数据交换。即将不完整,不连续的物理内存映射为连续的虚拟内存。虚拟内存主要有以下三个作用:
阅读全文

浙公网安备 33010602011771号