linux kernel
文章平均质量分 81
_-U-_
混社会,心要软,腰要挺,脚步要坚定。
展开
-
linux等待队列使用步骤
在Linux驱动程序中,可以使用等待队列(wait queue)来实现阻塞进程的唤醒。wait queue很早就作为一种基本的功能单位出现在Linux内核里了,它以队列位基础数据结构,与进程调度机制紧密结合,能够用于实现内核中异步事件通知机制。等待队列可以用来同步对系统资源的访问。(信号量在内核中也依赖等待队列来实现). Linux-2.6提供如下关于等待队列的操作: (1转载 2013-07-17 19:34:46 · 603 阅读 · 0 评论 -
linux block 设备基本总结-来自于linux设备驱动开发详解
块设备是与字符设备并列的概念,这两类设备在Linux中驱动的结构有较大差异,总体而言,块设备驱动比字符设备驱动要复杂得多,在I/O操作上表现出极大的不同,缓冲、I/O调度、请求队列等都是与块设备驱动相关的概念。块设备的I/O操作特点字符设备与块设备I/O操作的不同在于:① 块设备只能以块为单位接受输入和返回输出,而字符设备则以字节为单位。大多数设备是字符设备,因为它们不需要缓冲而且不以转载 2014-10-10 14:14:03 · 1736 阅读 · 0 评论 -
request_queue, request, bio
bio 代表一个IO 请求request 是bio 提交给IO调度器产生的数据,一个request 中放着顺序排列的bio当设备提交bio 给IO调度器时,IO调度器可能会插入bio,或者生成新的request request_queue代表着一个物理设备,顺序的放着request ===========================分割线====转载 2014-10-10 10:29:24 · 881 阅读 · 1 评论 -
e820简介
e820是和BIOS的一个中断相关的,具体说是int 0x15。之所以叫e820是因为在用这个中断时ax必须是0xe820。这个中断的作用是得到系统的内存布局。因为系统内存会有很多段,每段的类型属性也不一样,所以这个查询是“迭代式”的,每次求得一个段。 我们看内核源代码。主要涉及两个文件:arch/x86/boot/memory.c和arch/x86/kernel/e820_32.c转载 2014-09-30 16:41:05 · 1760 阅读 · 0 评论 -
Linux内核中ioremap映射及remap_page_range的透彻理解,实例
几乎每一种外设都是通过读写设备上的寄存器来进行的,通常包括控制寄存器、状态寄存器和数据寄存器三大类,外设的寄存器通常被连续地编址。根据CPU体系结构的不同,CPU对IO端口的编址方式有两种: (1)I/O映射方式(I/O-mapped) 典型地,如X86处理器为外设专门实现了一个单独的地址空间,称为"I/O地址空间"或者"I/O端口空间",CPU通过专门的I/O指令(如转载 2014-10-08 14:36:30 · 4668 阅读 · 0 评论 -
Zero Copy简介
原文出处: http://www.ibm.com/developerworks/library/j-zerocopy/传统的I/O使用传统的I/O程序读取文件内容, 并写入到另一个文件(或Socket), 如下程序:File.read(fileDesc, buf, len);Socket.send(socket, buf, len);会有较大的性能开销, 主要转载 2014-09-25 10:39:20 · 465 阅读 · 0 评论 -
linux内存管理总结之内存分配
1.伙伴系统 伙伴系统规定,无论是已分配内存块和空闲内存块,其大小都是2的k次幂个页面的大小,k的取值范围是0到MAX_ORDER 。当需要分配一个大小为n个页面大小的内存块时,先计算一个i值,使2^i-1 ,然后在空闲内存块页面大小为2^i的链表中查找,若无符合要求的块,则在2^i+1的链表中查找......,这种情况下这样一个大的内存块便被分为了两部分,两部分彼此成为了伙伴,转载 2014-09-26 17:17:36 · 1258 阅读 · 0 评论 -
Linux Page Cache机制
1 、前言 自从诞生以来,Linux 就被不断完善和普及,目前它已经成为主流通用操作系统之一,使用得非常广泛,它与Windows 、UNIX 一起占据了操作系统领域几乎所有的市场份额。特别是在高性能计算领域,Linux 已经成为一个占主导地位的操作系统,在2005年6月全球TOP500 计算机中,有 301 台部署的是 Linux 操作系统。因此,研究和使用 Linux 已经成为开发转载 2014-08-13 16:56:06 · 1737 阅读 · 0 评论 -
slab着色理解
一个L1 DATA CACHE相当于一块小的内存,我们假设它为16K大,它会与一般物理内存交互。 它和内存交互一般一次传输16个字节(32个字节),也就是: CACHE 字节0-15一次写到/读取物理内存 ,字节16-31一次写到/读取物理内存.32-47 ... ... 这些一次被传输的字节被称为cache line。 注意!!!这里的cache line中的ca转载 2014-05-12 14:51:38 · 1168 阅读 · 0 评论 -
linux内存管理(图文)
V1:V2:V3:转载 2013-11-15 14:13:42 · 630 阅读 · 0 评论 -
Linux内存布局
我们来看看内存这座巨大的城市史如何布局的。在系统初始化阶段,内核首先在实模式下建立一个物理地址映射来指定哪些物理地址范围对内核可用而哪些不可用(主要是根据映射硬件设备I/O的共享内存,或者根据相应的页框含有的BIOS数据)。内存的某些部分将永久地分配给BOIS或内核,用来存放BIOS信息、内核代码以及静态内核数据结构。所以内核将下列页框记为保留:• 在不可用的物理地址范围内的页框,一般转载 2013-08-05 17:08:31 · 768 阅读 · 0 评论 -
高性能计算机的Numa、SMP、MPP架构技术特点分析
从系统架构来看,目前的商用服务器大体可以分为三类,即对称多处理器结构(SMP:Symmetric Multi-Processor),非一致存储访问结构(NUMA:Non-Uniform Memory Access),以及海量并行处理结构(MPP:Massive Parallel Processing)。它们的特征分别描述如下: SMP(Symmetric Multi-Processo转载 2013-07-19 16:55:09 · 2917 阅读 · 0 评论 -
linux内核地址空间及用户进程的地址空间
内核空间是由内核负责映射,它并不会跟着进程改变,是固定的。高端内存:物理内存896M以上部分称之为高端内存。内核空间分布:* 直接内存映射去(Direct Memory Region)从3G开始,最大896的线性地址区间,我们称作直接内存映射区,这是因为该区域的 线性地址和物理地址之间存在线性转换关系线性地址=3G+物理地址* 动态内存映射区(Vmalloc转载 2013-07-18 16:21:39 · 1423 阅读 · 0 评论 -
Linux内核定时器
linux kernel 定时器的使用非常方便,只需要执行一些初始化的操作,设置一个超时时间,指定超时发生时执行的函数,然后激活定时器就可以了。它的处理和工作队列还是有点类似的。其实,在Linux内核开发中,很多的操作都是类似的。还有一点需要注意的,内核定时器并不是周期运行,它在超时后自动销毁。因此,如果要实现周期轮询,就需要在定时器执行函数返回前再次激活定时器。下面看看一个实现轮询操作的小例转载 2014-10-21 09:56:57 · 741 阅读 · 0 评论