linux
文章平均质量分 94
林睿
这个作者很懒,什么都没留下…
展开
-
Linux 环境进程间通信(六) 套接字
一个套接口可以看作是进程间通信的端点(endpoint),每个套接口的名字都是唯一的(唯一的含义是不言而喻的),其他进程可以发现、连接并且与之通信。通信域用来说明套接口通信的协议,不同的通信域有不同的通信协议以及套接口的地址结构等等,因此,创建一个套接口时,要指明它的通信域。比较常见的是unix域套接口(采用套接口机制实现单机内的进程间通信)及网际通信域。 1、背景知识 linux目前转载 2017-02-15 11:04:23 · 356 阅读 · 0 评论 -
Linux系统结构 详解
Linux系统一般有4个主要部分: 内核、shell、文件系统和应用程序。内核、shell和文件系统一起形成了基本的操作系统结构,它们使得用户可以运行程序、管理文件并使用系统。部分层次结构如图1-1所示。 1. linux内核 内核是操作系统的核心,具有很多最基本功能,它负责管理系统的进程、内存、设备驱动程序、转载 2017-02-15 11:24:56 · 152 阅读 · 0 评论 -
LINUX内核经典面试题
1) Linux中主要有哪几种内核锁? 2) Linux中的用户模式和内核模式是什么含意? 3) 怎样申请大块内核内存? 4) 用户进程间通信主要哪几种方式? 5) 通过伙伴系统申请内核内存的函数有哪些? 6) 通过slab分配器申请内核内存的函数有? 7) Linux的内核空间和用户空间是如何划分的(以32位系统为例)? 8) vmalloc()申请的内存有什么特点?转载 2017-02-13 15:01:00 · 287 阅读 · 0 评论 -
LINUX内核经典面试题
1) Linux中主要有哪几种内核锁? 2) Linux中的用户模式和内核模式是什么含意? 3) 怎样申请大块内核内存? 4) 用户进程间通信主要哪几种方式? 5) 通过伙伴系统申请内核内存的函数有哪些? 6) 通过slab分配器申请内核内存的函数有? 7) Linux的内核空间和用户空间是如何划分的(以32位系统为例)? 8) vmalloc()申请的内存有什么特点?转载 2017-02-14 20:23:13 · 1002 阅读 · 0 评论 -
inux 轻量级进程与普通进程的区别
轻量级进程和普通进程的区别在于: 前者没有独立的用户空间(内核态线程无用户空间,用户态线程共享用户空间),而普通进程有独立的内存空间; 表现在数据结构上:线程的mm=null或者与其他线程共享,而进程有独立的mm_struct。 内核线程 内核线程只运行在内核态,不受用户态上下文的拖累。 Ø 处理器竞争:可以在全系统范围内竞争处理器资源; Ø转载 2017-02-14 20:23:36 · 292 阅读 · 0 评论 -
linux静态链接库和动态链接库简单使用 2
如果你编写过线程或者与POSIX通信方式相关的程序的时候,你可能在编译链接的时候出现编译错误的情况,这个时候你会在gcc后面加一个参数,-lpthread(对于线程相关的程序而言),其实这个就是一个静态链接库libpthread.a。 链接库有两种:静态链接库和动态链接库。动态链接库的后缀名一般为.so,静态链接库的后缀名一般为.a。 静态链接库: 对于静态的链接转载 2017-02-14 20:23:56 · 219 阅读 · 0 评论 -
深刻理解Linux进程间通信(IPC)
序 linux下的进程通信手段基本上是从Unix平台上的进程通信手段继承而来的。而对Unix发展做出重大贡献的两大主力AT&T的贝尔实验室及BSD(加州大学伯克利分校的伯克利软件发布中心)在进程间通信方面的侧重点有所不同。前者对Unix早期的进程间通信手段进行了系统的改进和扩充,形成了“system V IPC”,通信进程局限在单个计算机内;后者则跳过了该限制,形成了基于套接口(socket转载 2017-02-15 10:57:37 · 164 阅读 · 0 评论 -
Linux环境进程间通信(一) 管道
1、 管道概述及相关API应用 1.1 管道相关的关键概念 管道是Linux支持的最初Unix IPC形式之一,具有以下特点: 管道是半双工的,数据只能向一个方向流动;需要双方通信时,需要建立起两个管道; 只能用于父子进程或者兄弟进程之间(具有亲缘关系的进程); 单独构成一种独立的文件系统:管道对于管道两端的进程而言,就是一个文件,但它不是普通的文件,它不属于某种文件系统转载 2017-02-15 10:59:32 · 501 阅读 · 0 评论 -
Linux环境进程间通信(二): 信号(下)
一、信号生命周期 从信号发送到信号处理函数的执行完毕 对于一个完整的信号生命周期(从信号发送到相应的处理函数执行完毕)来说,可以分为三个重要的阶段,这三个阶段由四个重要事件来刻画:信号诞生;信号在进程中注册完毕;信号在进程中的注销完毕;信号处理函数执行完毕。相邻两个事件的时间间隔构成信号生命周期的一个阶段。 下面阐述四个事件的实际意义: 信号"诞生"。信号的诞生指的是触发信号的事件转载 2017-02-15 11:00:11 · 299 阅读 · 0 评论 -
Linux环境进程间通信(二): 信号(上)
一、信号及信号来源 信号本质 信号是在软件层次上对中断机制的一种模拟,在原理上,一个进程收到一个信号与处理器收到一个中断请求可以说是一样的。信号是异步的,一个进程不必通过任何操作来等待信号的到达,事实上,进程也不知道信号到底什么时候到达。 信号是进程间通信机制中唯一的异步通信机制,可以看作是异步通知,通知接收信号的进程有哪些事情发生了。信号机制经过POSIX实时扩展后,功能更加强转载 2017-02-15 11:00:53 · 203 阅读 · 0 评论 -
Linux环境进程间通信(四)信号灯
一、信号灯概述 信号灯与其他进程间通信方式不大相同,它主要提供对进程间共享资源访问控制机制。相当于内存中的标志,进程可以根据它判定是否能够访问某些共享资源,同时,进程也可以修改该标志。除了用于访问控制外,还可用于进程同步。信号灯有以下两种类型: 二值信号灯:最简单的信号灯形式,信号灯的值只能取0或1,类似于互斥锁。 注:二值信号灯能够实现互斥锁的功能,但两者的关注内容不同。信号转载 2017-02-15 11:01:29 · 3197 阅读 · 0 评论 -
Linux环境进程间通信(五): 共享内存(上)
采用共享内存通信的一个显而易见的好处是效率高,因为进程可以直接读写内存,而不需要任何数据的拷贝。对于像管道和消息队列等通信方式,则需要在内核和用户空间进行四次的数据拷贝,而共享内存则只拷贝两次数据[1]:一次从输入文件到共享内存区,另一次从共享内存区到输出文件。实际上,进程之间在共享内存时,并不总是读写少量数据后就解除映射,有新的通信时,再重新建立共享内存区域。而是保持共享区域,直到通信完毕为止,转载 2017-02-15 11:02:15 · 302 阅读 · 0 评论 -
Linux环境进程间通信(五): 共享内存(下)
系统调用mmap()通过映射一个普通文件实现共享内存。系统V则是通过映射特殊文件系统shm中的文件实现进程间的共享内存通信。也就是说,每个共享内存区域对应特殊文件系统shm中的一个文件(这是通过shmid_kernel结构联系起来的),后面还将阐述。 1、系统V共享内存原理 进程间需要共享的数据被放在一个叫做IPC共享内存区域的地方,所有需要访问该共享区域的进程都要把该共享区域映射到本转载 2017-02-15 11:02:54 · 376 阅读 · 0 评论 -
Linux环境进程间通信(三)消息队列
消息队列(也叫做报文队列)能够克服早期unix通信机制的一些缺点。作为早期unix通信机制之一的信号能够传送的信息量有限,后来虽然POSIX 1003.1b在信号的实时性方面作了拓广,使得信号在传递信息量方面有了相当程度的改进,但是信号这种通信方式更像"即时"的通信方式,它要求接受信号的进程在某个时间范围内对信号做出反应,因此该信号最多在接受信号进程的生命周期内才有意义,信号所传递的信息是接近于随转载 2017-02-15 11:03:48 · 369 阅读 · 0 评论 -
了解Linux 内存使用
1. 用户进程内存结构 top 命令了解进程信息,其中包括内存方面的信息。 正在运行的程序,叫进程。每个进程都有完全属于自己的,独立的,不被干扰的内存空间。此空间,被分成几个段(Segment),分别是Text, Data, BSS, Heap, Stack。用户进程内存空间,也是系统内核分配给该进程的VM(虚拟内存),但并不表示这个进程占用了这么多的RAM(物理内转载 2017-02-15 11:46:42 · 267 阅读 · 0 评论