unp2
文章平均质量分 80
TT_love9527
聪与敏,可恃而不可恃也,自恃其聪与敏而不学者,自败者也;
昏也庸,可限而不可限也,不自限其昏与庸而力学不倦者,自力者也。
展开
-
UNP卷二 chapter4 管道和FIFO
1、概述和一个简单的客户-服务器例子管道是最初的Unix IPC的形式,其局限性在于没有名字,从而只能由有亲缘关系的进程使用。FIFO有时又称有名管道,其最大好处可用于无亲缘关系的进程间通信。利用客户与服务器利用IPC通道通信样例2、管道(一般指半双工模式)a、pipe函数及实现方式#include<unistd.h>int pipe(int fd[2]);...原创 2018-07-03 23:43:35 · 182 阅读 · 0 评论 -
UNP卷二 chapter11 System V信号量
1、System V信号量概述system V信号量增加了另外一级复杂度:计数信号量集:一个或多个信号量(构成一个集合),其中每个都是计数信号量。每个集合的信号量数存在一个限制。一般在25个数量以上。于是谈及system V信号量时,均指是计数信号量集。而谈及Posix信号量时,均指单个计数信号量。(说实话真搞不懂system V为什么要这么定义信号量,还是Posix信号量好理解多了)...原创 2018-07-31 15:23:07 · 141 阅读 · 0 评论 -
UNP卷二 chapter2 Posix IPC
刚开始翻开UNPv2时,看此章节,有点不知所云。内容看似简单,但却是后续多个章节的总领的简单介绍。当学完后续章节再回过头来看看,其实是非常有用的。可以起到一个快速复习的效果。所以一直都没及时打笔记直至将书本知识都过了一遍。现在再看看,知识点都非常亲切,尤其是创建或打开一个IPC对象的逻辑图,真心佩服作者只用一幅图便可以高度概括相应一个模块知识的能力。接下来好好回顾一下,enjoying!1、P...原创 2018-08-05 17:37:07 · 214 阅读 · 0 评论 -
UNP卷二 chapter3 System V IPC
1、System V IPCSystem V IPC包含消息队列、信号量和共享内存。其主要是利用key_t键创建相应的IPC。可利用ipcs或ipcrm命令对System V消息队列、信号量和共享内存进行查询或删除。下表是所有System V IPC函数: 消息队列 信号量 共享内存区 头文件 <sys/msg.h> <sys/se...原创 2018-08-08 16:13:18 · 198 阅读 · 0 评论 -
UNP卷二 chapter12 共享内存区介绍
1、共享内存区是可用IPC形式中最快的一旦某个某个内存区映射到相应进程的地直空间,则这些进程间数据的传递就不再涉及内核(即进程不再通过执行任何进入内核的系统调用来彼此传递数据)。但是往该共享内存区存放信息或从中取走信息的进程间通常需要某种形式的同步(如,互斥锁、条件变量、读写锁、记录锁、信号量)。以下通过管道、FIFO或消息队列的IPC通道方式进行消息传递,产生的文件复制情况:上图...原创 2018-08-01 22:34:14 · 237 阅读 · 0 评论 -
UNP卷二 chapter14 System V共享内存区
1、System V共享内存区System V共享内存区的学习类比Posix共享内存区,与调用shm_open后,再调用mmap相类似的是,System V先调用shmget,再调用shmat。对每个共享内存区,内核维护如下的信息的结构,且定义在<bits/shm.h>头文件中。struct shmid_ds { struct ipc_perm shm_perm;/*...原创 2018-08-03 17:26:31 · 242 阅读 · 0 评论 -
UNP卷二 chapter13 Posix共享内存区
1、Posix共享内存区第十二章,在父子进程间使用内存映射文件提供共享内存。其实共享内存还可应用在无亲缘关系进程间。以下有两种无亲缘关系进程间共享内存的方法。i、内存映射文件:由open函数打开,由mmap函数把得到的描述符映射到当前进程地址空间中的一个文件。ii、共享内存区对象:由shm_open打开一个Posix.1IPC名字(也许中在文件系统中的一个路径名,貌似行不通),所返回的...原创 2018-08-03 17:25:33 · 183 阅读 · 0 评论 -
仅使用互斥锁实现读写锁
清楚认识到读写锁分为共享锁(读锁)和独占锁(写锁),可能通过设置标志位记录读锁调用的次数结合互斥锁实现共享锁。但需要注意的是,以下的实现在多个写锁被阻塞时非常消耗计算机资源。因为线程阻塞在写锁中而没有被投入睡眠,导致轮询策略。避免轮询可通过互斥锁+条件变量实现读写锁,具体实现见上一篇博文。以下是代码实现:#include<pthread.h>pthread_mutex_t...原创 2018-08-27 09:46:46 · 2858 阅读 · 2 评论 -
UNP卷二 chapter8 读写锁
1、读写锁被锁锁住的临界区域通常涉及由多个线程共享一个或多个数据的访问或更新。而有时候可以在读某个数据与修改某个数据之间区别。读写锁将在获取读写锁用于读和获取读写锁用于写之间作区分。i、只在没有线程持有某个给定的读写锁用于写,那么任意数目的线程可以持有该读写锁用于读;ii、仅当没有线程持有某个给定的读写锁用于读或用于写时,才能分配该读写锁用于写。通俗的话来讲,读写锁没有写时,无所谓多少个读;读写锁...原创 2018-07-16 13:49:32 · 176 阅读 · 0 评论 -
UNP卷二 chapter6 System V 消息队列
1、System V 消息队列既然是消息队列,就与管道有所区别,队列可以先写入,再读取消息。而管道必须是先有读取的等待,再对管道进行写入。对于系统中的每个消息队列,内核维护一个定义在<sys/msg.h>头文件中的信息结构,如下所示:struct ipc_perm { uid_t uid; gid_t gid; uid_t cuid; gid_t cgid; mode_t m...原创 2018-07-10 15:22:13 · 172 阅读 · 0 评论 -
UNP卷二 chapter7 互斥锁和条件变量
为允许在线程或进程间共享数据,同步通常是必需的。互斥锁和条件变量是同步的基本组成部分。1、互斥锁:上锁与解锁此处小标题内容已在UNPv1第26章线程讲解中有所记录。互斥锁指代相互排斥,是最基本的同步形式。互斥锁用于保护临界区,以保证任何时刻只有一个线程在执行其中的代码,或只有一个进程在执行其中的代码。Posix互斥锁被声明为具有pthread_mutex_t数据类型的变量。有两种分...原创 2018-07-11 22:41:55 · 216 阅读 · 0 评论 -
Unix网络编程v2 源代码编译环境构建
OS:Ubuntu16.04 所需源码压缩文件资料unpv22e.tar.gz1. 源码解压(unpv22.tar.gz就在主目录下):tar -zxvf unpv22e.tar.gz2. 编译库文件(进入unpv22e目录)cd unpv22e./configure编辑生成config.h文件,注释以下几行vim config.h56 //#define uint8_t unsigned ...转载 2018-07-03 19:15:30 · 351 阅读 · 0 评论 -
UNP卷二 chapter5 Posix消息队列
1、Posix消息队列消息队列可认为是一个消息链表,含三个消息的某个Posix消息队列的可能布局如下,队列与管道和FIFO的区别在于,管道和FIFO是先有读出者,后有写入者(意思是有进程在管道一端进行读取操作,此时在管道另一端进行写入操作才是有意义的。可以将管道看作是一个通道,没有缓存效果),而队列可以实现某个进程往一个队列写入消息之前,并不需要另外某个进程在该队列上等待消息的到达(也...原创 2018-07-07 23:46:51 · 155 阅读 · 0 评论 -
UNP卷二 chapter10 Posix信号量
1、信号量概述信号量(semaphore)是一种用于提供不同进程间或一个给定进程的不同线程间同步手段的原语。i、Posix有名信号量:使用Posix IPC名字标识,可用于进程或线程间的同步;ii、Posix基于内存的信号量:存放在共享内存区中,可用于进程或线程间的同步;iii、System V信号量:在内核中维护,可用于进程或线程间的同步。Posix信号量不必在内核中维护。其...原创 2018-07-29 15:36:40 · 217 阅读 · 0 评论 -
UNP卷二 chapter9 记录上锁
此处讲述的锁是读写锁的一种扩展类型,可用于亲缘关系或无亲缘关系的进程之间共享某个文件的读或写。被锁住的文件通过其描述符访问,执行上锁操作的函数是fcntl。此类型的锁通常在内核中维护,其属主是由属主的进程ID标识的。意味着此锁用于不同进程间的上锁,而不是用于同一进程内不同线程间的上锁。1、一个例子讲明一个进程记录上锁利用打印机假脱机处理系统使用的技巧,即给每台打印机准备一个文件,此文件只有...原创 2018-07-15 16:56:13 · 196 阅读 · 0 评论 -
使用互斥锁和条件变量实现读写锁
只使用互斥锁和条件变量实现读写锁,此读写锁的实现优先考虑等待着的写入者。1、pthread_rwlock_t数据类型给出一个pthread_rwlock.h头文件,其中pthread_rwlock_t数据结构由一个互斥锁、一个读条件变量、一个写条件变量、一个标志位及三个计数量(读条件变量等候计数器、写条件变量等候计数器、读写锁引用计数器)构成。/* include rwlockh *...原创 2018-08-23 20:58:18 · 696 阅读 · 0 评论