- 博客(12)
- 资源 (6)
- 收藏
- 关注
转载 LINUX内核内存屏障
目录: (*) 内存访问抽象模型. - 操作设备. - 保证. (*) 什么是内存屏障? - 各式各样的内存屏障. - 关于内存屏障,不能假定什么? - 数据依赖屏障. - 控制依赖. - SMP内存屏障的配对使用. - 内存屏障举例. - 读内存屏障与内存预取. (*) 内
2014-03-14 16:37:08 1629
转载 linux内存屏障
内存屏障出现因为编译器或现在的处理器常会自作聪明地对指令序列进行一些处理,比如数据缓存,读写指令乱序执行等等。如果优化对象是普通内存,那么一般会提升性能而且不会产生逻辑错误。但如果对 I/O操作进行类似优化很可能造成致命错误。所以要使用内存屏障,以强制该语句前后的指令以正确的次序完成。其实在指令序列中放一个wmb的效果是使得指令执行到该处时,把所有缓存的数据写到该写的地方,同时使得wmb前面的写指
2014-03-14 15:50:53 1893 1
转载 preempt_enable 和 preempt_disable
允许抢占和禁止抢占。例如:内核态程序 和 中断处理程序的互斥因为中断是异步的(不只要何时发生中断,也即随时可能发生中断),因此如果内核态的程序使用了和中断处理程序中相同的数据结构,那么必须进行互斥访问。load %r0, counteradd %r0,1 //发生中断store %r0,conter如果在第二条指令执行
2014-03-14 14:38:36 1131
转载 内核同步
内核的各个部分并不是严格按照顺序依次执行的,而是采用交错执行的方式。因此这些请求可能引起竞态条件,而我们必须采用适当的同步机制对这种情况进行控制。一、内核如何为不同的请求提供服务 把内核看作必须满足两种请求的侍者:一种请求来自顾客,另一种请求来自数量有限的几个不同的老板。对不同的请求,侍者采用如下的策略: 1、老板提出请求时,如果侍者正空闲,则侍者开始为老板
2014-03-12 11:00:13 1529
转载 内核中断,异常,抢占总结
内核中断,异常,抢占总结篇一、基本概念中断分为同步中断和异步中断。同步中断是由CPU控制单元产生的,“同步”是指只有在一条指令执行完毕后,CPU才会发出中断,而不是发生在代码指令执行期间,比如系统调用。而异步中断是由其他硬件设备依照CPU时钟信号产生的,即意味着中断能够在指令之间发生,例如键盘中断。按照Intel的微处理器手册,同步中断和异步中断也分别称为异常(或者软件中断)和中断。中
2014-03-12 10:16:26 1840 2
转载 内核中的互斥
从严格意义上说,semaphore和spinlock_XXX属于不同层次的互斥手段,前者的 实现有赖于后者,这有点象HTTP和TCP的关系,都是协议,但层次是不同的。 先说semaphore,它是进程级的,用于多个进程之间对资源的互斥,虽然也是在 内核中,但是该内核执行路径是以进程的身份,代表进程来争夺资源的。如果 竞争不上,会有context switch,进程可以去sleep,但CP
2014-03-12 10:00:29 1116
转载 向量中断和非向量中断
向量中断与非向量中断的区别 推荐向量中断就是不同的中断有不同的入口地址,非向量中断就只有一个入口地址,进去了再判断中断标志来识别具体是哪个中断。向量中断实时性好,非向量中断简单 向量中断控制器VIC具有32个中断请求输入,可将其编程分为3类,FIQ,向量IRQ和非向量IRQ。 FIQ(fast interrpt request)快速中断请求要求具有最高优先级
2014-03-04 14:47:24 6985 1
转载 linux mmap 详解
一.前言mmap的具体实现以前在学习内核时学习过,但是对于其中的很多函数是一知半解的,有些只能根据其函数名来猜测其具体的功能,在本文中,一起来重新深入理解其具体的实现。二.mmap的用户层应用void *mmap(void *start,size_t length,int prot,int flags,int fd,off_t offsize); 具体参数含义start :
2014-03-04 11:16:36 1211
转载 linux高端内存映射
1 内核空间和用户空间 用户空间:在Linux中,每个用户进程都可以访问4GB的线性虚拟内存空间。其中从0到3GB的虚存地址是用户空间,通过每个进程自己的页目录、页表,用户进程可以直接访问。内核空间:从3GB到4GB的虚存地址为内核态空间,存放供内核访问的代码和数据,用户态进程不能访问,只有内核态进程才能寻址。所有进程从3GB到4GB的虚拟空间都是一样的,linux以此方式让内核态
2014-03-03 16:23:08 5115
转载 Linux中断研究
众所周知,Linux中断被分为上半部分和下半部分中断上半部分的处理流程如下:1.硬件中断-->2.do_IRQ-->3.handle_IRQ_event-->4.handler步骤1至步骤3之间(未进入步骤3),中断是被关闭的,系统无法响应中断,这段时间会造成中断丢失步骤3至步骤4,其内部处理流程如下:3.1.如果该中断申请时没有设定 IRQF_DISABLED,则打开中断loca
2014-03-03 15:56:49 2084
转载 linux tasklet和workqueue的应用情景
当前的2.6版内核中,有三种可能的选择:softirq、tasklet和work queue。 tasklet基于softirq实现,所以两者很相近。work queue与它们完全不同,它靠内核线程实现。1、softirq 软中断支持SMP,同一个softirq可以在不同的CPU上同时运行,softirq必须是可重入的。软中断是在编译期间静态分配的,它不像tasklet那样能被
2014-03-03 14:56:35 776
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人