随笔分类 - Linux
摘要:声明:以下内容来自维基百科,但是融入个人思想,使其更加形象易懂:读写锁 读写锁实际是一种特殊的自旋锁,它把对共享资源的访问者划分成读者和写者,读者只对共享资源进行读访问,写者则需要对共享资源进行写操作。这种锁相对于自旋锁而言,能提高并发性,因为在多处理器...
阅读全文
摘要:同步和互斥:前言:线程的最大特点是资源的共享性,但资源共享中的同步问题是多线程编程的难点也是重点。 linux下提供了多种方式来处理线程同步,最常用的是互斥量(mutex)、条件变量(Conditoin Variable)和信号量(Semaphore)。如果能看到这里...
阅读全文
摘要:Linux kernel 的 sendfile 是如何提高性能的现在流行的 web 服务器里面都提供 sendfile 选项用来提高服务器性能,那到底 sendfile 是什么,怎么影响性能的呢?sendfile 实际上是 Linux 2.0+ 以后的推出的一个系统调...
阅读全文
摘要:共享内存:一、概念: 共享内存可以说是最有用的进程间通信方式,也是最快的IPC形式。两个不同进程A、B共享内存的意思是,同一块物理内存被映射到进程A、B各自的进程地址空间。进程A可以即时看到进程B对共享内存中数据的更新,反之亦然。由于多个进程共享同一块内...
阅读全文
摘要:epoll关于Linux下I/O多路转接之epoll函数,什么返回值,什么参数,我不想再多的解释,您不想移驾,我给你移来:http://blog.csdn.net/colder2008/article/details/5812487 返回值,参数说明等;最后...
阅读全文
摘要:poll一、poll()函数:这个函数是某些Unix系统提供的用于执行与select()函数同等功能的函数,自认为poll和select大同小异,下面是这个函数的声明:#include int poll(struct pollfd *fds, nfds_t nfds,...
阅读全文
摘要:fd_set你终于还是来了,能看到这个标题进来的,我想,你一定是和我遇到了一样的问题,一样的疑惑,接下来几个小时,我一定竭尽全力,写出我想说的,希望也正是你所需要的:关于Linux下I/O多路转接之select,我不想太多的解释,用较少的文章引出今天我要说的问题:fd...
阅读全文
摘要:关于线程控制,主要就是几个模块,我们一个一个消灭、消化:一、线程创建:1.先来看看在Linux环境下的线程创建函数:分析:意思很明显:1.函数名是 pthread_create ;2.功能:就是创建一个线程;3.函数原型:#include //头文件int pt...
阅读全文
摘要:消息队列的定义遍地都是,不想移驾,请看下文:一、定义: 消息队列提供了一种从一个进程向另一个进程发送一个数据块的方法。 每个数据块都被认 为是有一个类型,接收者进程接收的数据块可以有不同的类型值。我们可以通过发送消息来避免命名管道的同步和阻塞问题。消息队列...
阅读全文
摘要:Linux下socketpair介绍: socketpair创建了一对无名的套接字描述符(只能在AF_UNIX域中使用),描述符存储于一个二元数组,例如sv[2] .这对套接字可以进行双工通信,每一个描述符既可以读也可以写。这个在同一个进程中也可以进行通信,向sv...
阅读全文
摘要:信号量绝对不同于信号,一定要分清,关于信号,上一篇博客中已经说过,如有疑问,请移驾!信号量一、是什么 信号量的本质是一种数据操作锁,它本身不具有数据交换的功能,而是通过控制其他的通信资源(文件,外部设备)来实现进程间通信,它本身只是一种外部资源的标识。信号量在此过程...
阅读全文
摘要:signal一、初步理解信号为了理解信号 ,先从我们最熟悉的场景说起:1.用户输入命令,在Shell下启动一个前台进程。 2.用户按下Ctrl-C,这个键盘输入产生一个硬件中断。 3.如果CPU当前正在执行这个进程的代码,则该进程的用户...
阅读全文
摘要:linux下进程间通信的几种主要手段: 1.管道(Pipe)及有名管道(named pipe):管道可用于具有亲缘关系进程间的通信,有名管道克服了管道没有名字的限制,因此,除具有管道所具有的功能外,它还允许无亲缘关系进程间的通信; 2.信号(S...
阅读全文
摘要:IPC前面总结了匿名管道,现在来看命名管道:由于匿名管道的一个限制就是:只能是有血缘关系的进程间才可以通信,比如:有两个同祖先的子进程,父子进程等;为了突破这一个限制,想让没有任何关系的两个进程间也能正常通信,所以就就有了命名管道这样的一个通信机制,一起来看看:命名管...
阅读全文
摘要:关于进程间通信: IPC 每个进程各自有不同的用户地址空间,任何一个进程的全局变量在另一个进程中都看不到所以进程之间要交换数据必须通过内核,在内核中开辟一块缓冲区,进程1把数据从用户空间拷到内核缓冲区,进程2再从内核缓冲区把数据读走,内核...
阅读全文
摘要:线程我们知道 ,进程在各自独立的地址空间中运行,进程之间共享数据需要用mmap或者进程间通信机制,本节我们学习如何在一个进程的地址空间中执行多个线程。有些情况需要在一个进程中同时执行多个控制流程,这时候线程就派上了用场,比如实现一个图形界面的下载软件, 一方面需要和用...
阅读全文
摘要:进程创建在Linux系统下,自己可以创建进程: 当进程执行时,它会被装载进虚拟内存,为程序变量分配空间,并把相关信息添到 task_struct里。进程内存布局分为四个不同的段: • 文本段,包含程序的源指令。 • 数据段,包含了静态变量。 • 堆,动态内存分区区...
阅读全文
摘要:>>进程说进程,感觉好空洞,来一张图,Linux下的进程: ps -eo pid,comm,cmd说明:-e表示列出全部进程,-o pid,comm,cmd表示我们需要PID,COMMAND,CMD信息下面:我们好好说说,Linux下的进程的含义:1》.程序的一个执行...
阅读全文
摘要:原文:http://blog.csdn.net/dadalan/article/details/3758025用GDB调试程序 GDB是一个强大的命令行调试工具。大家知道命令行的强大就是在于,其可以形成执行序列,形成脚本。UNIX下的软件全是命令行的,这给程序开发提代...
阅读全文
摘要:原文:http://www.2cto.com/os/201112/113229.html操作系统要实现多进程,进程调度必不可少。有人说,进程调度是操作系统中最为重要的一个部分。我觉得这种说法说得太绝对了一点,就像很多人动辄就说"某某函数比某某函数效率高XX倍"一样,脱...
阅读全文

浙公网安备 33010602011771号