
linux常用机制
o倚楼听风雨o
人生如逆旅,我亦是行人。
展开
-
linux信号量简介(用户态)
一、说明 用户态进程使用的信号量又分为POSIX信号量和SYSTEM V信号量。POSIX信号量又分为有名信号量和无名信号量。有名信号量,其值保存在文件中, 所以它可以用于线程也可以用于进程间的同步。无名信号量,其值保存在内存中,只能用于线程或者有亲缘关系的进程间同步。 二、POSIX 信号量 对POSIX来说,信号量是个非负整数,常用于线程间同步。 1原创 2016-10-09 09:26:41 · 3780 阅读 · 1 评论 -
linux信号量简介(内核态)
一、什么是信号量 1、概念 内核的信号量在概念和原理上与用户态的信号量是一样的,但是它不能在内核之外使用。 信号量又称为信号灯(semaphore),本质上是一种睡眠锁。如果有一个任务试图获得一个不可用(已经被占用)的信号量时,信号量会将其推进一个等待队列,然后让其睡眠。这时处理器能重获自由,从而去执行其他代码。当持有的信号量可用(被释放后),处于等待原创 2016-10-08 21:21:26 · 2434 阅读 · 1 评论 -
linux互斥锁简介(用户态)
一、引言 互斥锁,是一种信号量,常用来防止两个线程在同一时刻访问相同的共享资源。它有以下三个特性。(a)原子性:把一个互斥量锁定为一个原子操作,这意味着操作系统(或pthread函数库)保证了如果一个线程锁定了一个互斥量,没有其他线程在同一时间可以成功锁定这个互斥量;(b)唯一性:如果一个线程锁定了一个互斥量,在它解除锁定之前,没有其他线程可以锁定这个互斥量;(c)非繁忙等待:如果一个线原创 2016-10-08 21:06:47 · 3874 阅读 · 0 评论 -
linux互斥锁简介(内核态)
一、什么是互斥锁 1、概念 互斥锁(Mutex)是在原子操作API的基础上实现的信号量行为。互斥锁不能进行递归锁定或解锁,能用于交互上下文但是不能用于中断上下文,同一时间只能有一个任务持有互斥锁,而且只有这个任务可以对互斥锁进行解锁。当无法获取锁时,线程进入睡眠等待状态。 互斥锁是信号量的特例。信号量的初始值表示有多少个任务可以同时访问共享资源,如果初原创 2016-10-08 20:52:20 · 6134 阅读 · 0 评论 -
linux自旋锁简介
一、什么是自旋锁 自旋锁最初就是为了SMP系统设计的,实现在多处理器情况下保护临界区。自旋锁实际上是忙等待锁,它有几个重要的特性:被自旋锁保护的临界区代码执行时不能进入睡眠状态;被自旋锁保护的临界区代码执行时,内核不能被抢占。 在单cpu并且不支持内核抢占的系统上,自旋锁实际上是空操作;在单cpu并且支持内核抢占的系统上,自旋锁实际上是对内核抢占功能的打开和关闭;在SMP系统上原创 2016-10-08 20:42:14 · 1662 阅读 · 0 评论 -
中断下半部之工作队列
一、中断的顶半部和底半部 设备的中断会打断内核中进程的正常调度和运行,而系统对更高吞吐率的追求势必要求中断服务程序尽可能地短小精悍。但是,这个良好的愿望往往与现实并不吻合。在大多数真实的系统中,当中断到来时,要完成的工作往往并不会是短小的,它可能要进行较大量的耗时处理,由于中断的优先级最高,这时候就会影响到其他进程的实时性。 为了在中断执行时间尽可能短和中断处理需完成大量工作之原创 2016-09-24 16:03:49 · 2957 阅读 · 1 评论 -
等待队列的简单使用
一、什么是等待队列 1、概念 等待队列是一种实现阻塞和唤醒的内核机制,很早就作为一个基本的功能单位出现在Linux内核中,它以队列为基础数据结构,与进程调度机制紧密结合,能够用于实现内核中的异步事件通知机制。 2、数据结构 a、等待队列头 struct __wait_queue_head {原创 2016-09-20 19:39:15 · 8379 阅读 · 0 评论 -
Linux Netlink基本使用
转载地址:http://blog.chinaunix.net/uid-28541347-id-5578403.html1、什么是Netlink 什么是Netlink?Netlink是linux提供的用于内核和用户态进程之间的通信方式。但是注意虽然Netlink主要用于用户空间和内核空间的通信,但是也能用于用户空间的两个进程通信。只是进程间通信有其他很多方式,一般不用Netlink。除非需要用到N转载 2017-12-15 14:42:49 · 5147 阅读 · 2 评论