概括 树是一种数据结构,它是由n(n>=1)个有限结点组成一个具有层次关系的集合。把它叫做“树”是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。 它具有以下的特点:每个结点有零个或多个子结点;没有父结点的结点称为根结点;每一个非根结点有且只有一个父结点;除了根结点外,每个子结点可…
命令 SET key value [NX] [XX] [EX <seconds>] [PX [millseconds]] 必选参数说明 SET:命令 key:待设置的key value: 设置的key的value 可选参数说明 NX:表示key不存在才设置,如果存在则返回NULL XX:…
局部性原理 CPU访问存储器时,无论是存取指令还是存取数据,所访问的存储单元都趋于聚集在一个较小的连续空间。 计算机读取数据层次 寄存器 64位 一级缓存L1 4×64KB 二级缓存L2 4×256KB 三级缓存L3 8MB 内存 4GB 磁盘 1TB 可以发现这些层次一个比一个更大。 寄存器,既是…
概括 UNIX域套接字用于在同一台机器上运行的进程之间的通信。虽然因特网域套接字可用于同一目的,但UNIX域套接字的效率更高。UNIX域套接字仅仅复制数据;它们并不执行协议处理,不需要添加或删除网络报头,无需计算检验和,不要产生顺序号,无需发送确认报文。 套接字的属性 套接字的特性由3个属性确定,它…
概括 共享内存,顾名思义就是允许两个不相关的进程访问同一个逻辑内存,共享内存是两个正在运行的进程之间共享和传递数据的一种非常有效的方式。不同进程之间共享的内存通常为同一段物理内存。进程可以将同一段物理内存连接到他们自己的地址空间中,所有的进程都可以访问共享内存中的地址。如果某个进程向共享内存写入数据…
概括 信号量本质上是一个计数器,用于多进程对共享数据对象的读取,它和管道有所不同,它不以传送数据为主要目的,它主要是用来保护共享资源(信号量也属于临界资源),使得资源在一个时刻只有一个进程独享。 信号量是一个特殊的变量,值可以改变,但只能取正整数值,并且对它的加1和减1操作是原子操作。如果信号量值为…
概括 linux既支持POSIX标准的消息队列,也支持System V的消息队列。 先看几个基本的概念,这些概念在Syste V通信方式中的信号量和共享内存当中同样也是适用的。 标识符(id) 每个System V的进程通信机制中的对象都和唯一的一个引用标识符相联系,如果进程要访问此IPC对象,则需…
概括 管道是Linux支持的最初Unix IPC形式之一,管道的实质是一个内核缓冲区,管道的作用正如其名,需要通信的两个进程在管道的两端,进程利用管道传递信息。管道对于管道两端的进程而言,就是一个文件,但是这个文件比较特殊,它不属于文件系统并且只存在于内存中。 [root@VM-0-13-cento…
Semaphore 函数 ftok 将路径名和项目标识符转换为System V IPC KEY。 ftok(string $filename, string $project_id): int #project_id 项目标识符。这必须是一个字符串。 消息队列 常量 #MSG_IPC_NOWAIT …
什么是守护进程? 守护进程(Daemon Process),也就是通常说的 Daemon 进程(精灵进程),是 Linux 中的后台服务进程。它是一个生存期较长的进程,通常独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件。 守护进程是个特殊的孤儿进程,这种进程脱离终端,为什么要脱离终端…