• Linux环境进程间通信(五): 共享内存(上)(mmap)

    日期:

    采用共享内存通信的一个显而易见的好处是效率高,因为进程可以直接读写内存,而不需要任何数据的拷贝。 对于像管道和消息队列等通信方式,则需要在内核和用户空间进行四次的数据拷贝,而共享内存则只拷贝两次数据[1]:一次从输入文件到共享内存区,另一次从...

  • Linux环境进程间通信(五): 共享内存(下)(系统V)

    日期:

    系统调用mmap()通过映射一个普通文件实现共享内存。系统V则是通过映射特殊文件系统shm中的文件实现进程间的共享内存通信。 也就是说,每个共享内存区域对应特殊文件系统shm中的一个文件(这是通过shmid_kernel结构联系起来的),后面还将阐述。 1、系统V共享...

  • read 系统调用剖析

    日期:

    Read 系统调用在用户空间中的处理过程 Linux 系统调用(SCI,system call interface)的实现机制实际上是一个多路汇聚以及分解的过程,该汇聚点就是 0x80 中断这个入口点(X86 系统结构)。也就是说,所有系统调用都从用户空间中汇聚到 0x80 中断点,同时保...

  • 深入分析 Linux 内核链表

    日期:

    一、 链表数据结构简介 链表是一种常用的组织有序数据的数据结构,它通过指针将一系列数据节点连接成一条数据链,是线性表的一种重要实现方式。相对于数组,链表具有更好的动态性,建立链表时无需预先知道数据总量,可以随机分配空间,可以高效地在链表中的...

  • Linux 内核的同步机制,第 1 部分

    日期:

    一、 引言 在现代操作系统里,同一时间可能有多个内核执行流在执行,因此内核其实象多进程多线程编程一样也需要一些同步机制来同步各执行单元对共享数据的访问。尤其是在多处理器系统上,更需要一些同步机制来同步不同处理器上的执行单元对共享的数据的访问...

  • Linux 内核的同步机制,第 2 部分

    日期:

    六、大内核锁(BKL--Big Kernel Lock) 大内核锁本质上也是自旋锁,但是它又不同于自旋锁,自旋锁是不可以递归获得锁的,因为那样会导致死锁。但大内核锁可以递归获得锁。大内核锁用于保护整个内核,而自旋锁用于保护非常特定的某一共享资源。进程保持大内核...

  • 11个技巧让那些程序员对你刮目相看

    日期:

    大家都知道, 在所有的上班族当中,软件工程师是一群最有特点,智商最高,最自命不凡的人。我非常确信这一点因为我就要嫁给这样一个人了。但是,为了让这群自命不凡的人能拜倒在自己的石榴裙下,你不必像我一样把一生的幸福搭进去。我这里有11个非常巧妙的技...

  • 如果学习编程可以重来

    日期:

    在过去的几个月里,我一直在学习用Objective-C编写iOS app,最后我开始理清思绪。这比我想象中要难很多,也花了太长时间。 我经常遇到困难、感到沮丧,修复bug比实际写代码要花太多时间。但是,在我的手机上把玩我从头开发的app有一种让人惊奇的感觉。 用这...

  • linux 数组使用

    日期:

    1.数组定义 1.1.可以整体定义数组: ARRAY_NAME=(value0 value1 value2 value3 ...) 1.2.或者这样: ARRAY_NAME=( value0 value1 value2 value3 ... ) 此时数组的下标默认是从0开始的 1.3.还可以单独定义数组的各个分量: ARRAY_NAME[0]=value0 ARRAY_NAME[1...

  • 模拟 shell 写日志

    日期:

    1.writeLog.sh for i in $(seq 1 10000) do d=$(date +%Y%m%d%H%M) echo $d--------$i/home/test/test.txt done...