LINUX内核学习
_银叶先生
这个作者很懒,什么都没留下…
展开
-
LINUX内核之中断(3)--中断下半部2
4. 工作队列工作队列(work queue)可以把工作推后,交由一个内核线程去执行,这个下半部总是会在进程上下文中执行。最重要的是工作队列允许重新调度甚至是睡眠。如果你需要一个可以重新调度的实体来执行你的下半部处理,你应该使用工作队列。如果推后执行的任务需要睡眠,那么就选择工作队列。 4.1. 工作队列的实现工作队列子系统是一个用于创建内核线程的接口,通过它创建的进程负责执行转载 2012-08-02 09:55:44 · 516 阅读 · 0 评论 -
linux 下IO过程--linux IO堆栈
http://www.thomas-krenn.com/en/oss/linux-io-stack-diagram/linux-io-stack-diagram_v1.0.pdf原创 2013-06-08 20:01:49 · 2522 阅读 · 0 评论 -
linux内核 64位 X86_64 地址空间
地址映射64位地址采用4层地址映射,如下图:pgd、pud、pmd、pte各占了9位,加上12位的页内index,共用了48位。即可管理的地址空间为2^48=256T。而在32位地址模式时,该值仅为2^32=4G。另外64位地址时支持的物理内存最大为64T,见e820.c中MAX_ARCH_PFN的定义:# define MAX_ARCH_PFN M转载 2013-12-03 10:26:37 · 14843 阅读 · 1 评论 -
linux内核开发总结----内核同步与异步
linux内核开发总结杂项:gcc编译器内置宏变量:__FILE__ :当前文件名__FUNCTION__ :当前函数名;__LINE__ :的文件中的行数__DATA__ :编译时的日期__TIME__ :编译时间gcc -E 预处理 -S 汇编-c 编译属性声名:指定一个属性只需在其声明后添加__attribute__((原创 2013-11-30 14:31:56 · 2151 阅读 · 0 评论 -
LINUX发行版开源镜像服务站点整理
网易开源镜像站(联通) http://mirrors.163.com/搜狐开源镜像站 http://mirrors.sohu.com/台湾镜像站 http://www.mirror.tw/pub/大连理工大学镜像站原创 2012-08-03 14:53:47 · 962 阅读 · 0 评论 -
block device ---块设备IO
块设备与卷管理:block device 层:linux块设备层非常灵活,支持的特性有:可插拨的IO调度(Pluggable I/O schedulers)I/O优先级(需IO调度器支持)磁盘请求重映射(device Mapper)RAID各种技巧(multipath多路径,fault injection故障注入)I/O跟踪(blktrace)struct原创 2014-01-23 10:33:23 · 6956 阅读 · 0 评论 -
slab内存分配------内存池mempool
一:概述采用伙伴算法分配内存时,每次至少分配一个页面。但当请求分配的内存大小为几十个字节或几百个字节时应该如何处理?如何在一个页面中分配小的内存区,小内存区的分配所产生的内碎片又如何解决?Linux采用Slab。Linux 所使用的 slab 分配器的基础是 Jeff Bonwick 为 SunOS 操作系统首次引入的一种算法。Jeff 的分配器是围绕对象缓存进行的。在内核中,会为转载 2014-04-03 17:19:15 · 6752 阅读 · 0 评论 -
文件系统mount过程
SYSCALL_DEFINE5(mount, char __user *, dev_name, char __user *, dir_name,char __user *, type, unsigned long, flags, void __user *, data)dev_name:设备名dir_name:挂载的目录type:文件系统内型flags:挂载标志data:文原创 2014-07-21 14:13:52 · 1486 阅读 · 0 评论 -
linux原子/位操作
1、基本概念原子操作可以保证指令以原子的方式执行,执行过程不被打断。它通过把读取和修改变量的行为包含在一个单步中执行,从而防止了竞争的发生,保证操作结果总是一致的。例如:int i=9;线程1:i++i=9 OR i=8线程2i–;i=9 OR i=8两个线程并发的执行,导致结果不确定性。原子操作的作用转载 2015-11-19 18:49:15 · 2179 阅读 · 0 评论 -
Linux TCP队列相关参数的总结
作者:阿里技术保障锋寒原文:https://yq.aliyun.com/articles/4252在Linux上做网络应用的性能优化时,一般都会对TCP相关的内核参数进行调节,特别是和缓冲、队列有关的参数。网上搜到的文章会告诉你需要修改哪些参数,但我们经常是知其然而不知其所以然,每次照抄过来后,可能很快就忘记或混淆了它们的含义。本文尝试总结TCP队列缓冲相关的内核参数,转载 2016-06-14 09:34:00 · 959 阅读 · 0 评论 -
SCSI设备IO过程:磁盘上线与IO过程
一,SCSI设备上报过程:硬盘上线过程SATA盘AHCI控制器初始化过程:ahci_init() ->pci_module_init(&ahci_pci_driver);static struct pci_driver ahci_pci_driver = {.name = DRV_NAME,.id_table = ahci_pci_tbl,.probe =原创 2016-10-31 00:40:05 · 6112 阅读 · 1 评论 -
CPU负载计数load average
gchen:/home/gchen # cat /proc/loadavg 0.01 0.03 0.05 1/199 23410最近1分钟可运行进程数,R+D最近5分钟可运行进程数,R+D最近15分钟可运行进程数,R+D当前可运行的进程数R当前总的进程和线程数nr_threads,在copy_progress里增加最近使用的PID号,(进程个数最大限制为3276原创 2016-11-13 02:32:34 · 938 阅读 · 0 评论 -
LINUX内核DMA机制
目录[隐藏]12 DMA控制器硬件结构2.1 DMA通道使用的地址2.2 DMA操作函数2.3 DMA映射2.3.1 (1)建立一致 DMA 映射2.3.2 (2)建立流式 DMA 映射2.3.3 (3)分散/集中映射2.4 DMA池2.5 一个简单的使用DMA 例子转载 2013-11-27 12:20:57 · 966 阅读 · 0 评论 -
linux设备文件 简介
Linux设备文件简介作者:金步国版权声明本文作者是一位自由软件爱好者,所以本文虽然不是软件,但是本着 GPL 的精神发布。任何人都可以自由使用、转载、复制和再分发,但必须保留作者署名,亦不得对声明中的任何条款作任何形式的修改,也不得附加任何其它条件。您可以自由链接、下载、传播此文档,但前提是必须保证全文完整转载,包括完整的版权信息和作译者声明。其他作品本文作者十分愿意转载 2013-11-13 10:11:52 · 930 阅读 · 0 评论 -
centos 下centos源码下载安装
I Need the Kernel SourceCreated by JohnnyHughes. Currently maintained byAlanBartlett andAkemiYagi. Contents Maybe you do not need the full kernel sourceIf you really need the full翻译 2012-08-03 14:15:05 · 1442 阅读 · 0 评论 -
进程地址空间
1. 进程地址空间其实内核除了管理本身的内存外,还必须管理进程的地址空间。Linux操作系统采用虚拟内存技术,因此系统中的所有进程之间以虚拟方式共享内存。进程地址空间由每个进程中的线性地址区组成,而且内核允许进程使用该空间中的地址。进程之间可以选择共享地址空间,我们称为这样的进程为线程。内存地址是一个给定的值,它要在地址空间范围之内的,这些可被访问的合法地址区间被称为内存区域,通过内核转载 2012-08-02 09:47:05 · 684 阅读 · 0 评论 -
LINUX内核之中断(5)--定时器与延迟执行
1. 定时器定时器有时也称为动态定时器或内核定时器,是管理内核时间的基础。定时器的使用很简单。你只需要执行一些初始化工作,设置一个超时时间,指定超时发生后执行的函数,然后激活定时器就可以了。注意,定时器并不是周期运行,它在超时后就自行销毁。 1.1. 使用定时器定时器由结构timer_list表示,在中:struct timer_list{转载 2012-08-02 10:00:12 · 2778 阅读 · 0 评论 -
INUX内核之中断(2)--中断下半部
1. 下半部下半部的任务就是执行与中断处理密切相关但中断处理程序本身不执行的工作。比如,如果上半部把数据从硬件拷贝到内存,那么当然应该在下半部中处理它们。如何决定什么任务在哪部分完成取决于驱动程序开发者自己的判断。注意,中断处理程序会异步执行,并且在最好的情况下它会锁定当前的中断线。这里有些建议:1) 如果一个任务队时间非常敏感,将其放在中断处理程序中执行2) 如果一个任务和硬件相关,转载 2012-08-02 09:52:06 · 490 阅读 · 0 评论 -
LINUX内核之中断(4)--时间管理
1. 内核中的时间概念时间管理在内核占有非常重要的地位。相对于事件驱动而言,内核中有大量函数都是基于时间驱动的。注意相对时间和绝对时间之间的区别。周期性产生的事件与推迟执行的事件之间的差别。周期性产生的事件都是由系统定时器驱动的。系统定时器是一种可编程硬件芯片,它以固定频率产生中断,也称定时器中断。而动态定时器是一种用来推迟执行程序的工具。系统定时器以某种频率自行触发时钟中断、该频转载 2012-08-02 09:58:02 · 1203 阅读 · 0 评论 -
LINUX内核之中断(1)
1. 中断 Linux内核要对连接到计算机上的所有硬件设备进行管理,首先要能和它们互相通信。从所周知,处理器的速度跟外围硬件设备的速度往往不在一个数量级上。所以,需要一种机制,如果轮询(polling)是一种解决办法,可以让内核定期对设备的状态进行查询,然后做出相应的处理,但这让内核做了不少无用功。 更好的办法是由我们来提供一种机制,让硬件在需要的时候再向内核发出信号。转载 2012-08-02 09:49:53 · 700 阅读 · 0 评论 -
详解Linux中断处理中的hardirq与softirq机制
今天在ChinaUnix论坛内核源码版上与linuxfellow网友讨论到hardirq和softirq的问题,虽 然在《深入Linux设备驱动程序内核机制》(以下简称“ILDD”)第5章“中断处理”对此已有详细的解读,但是我觉得还是有必要再花点时间深入探讨一 下这两者的区别。因为此前关于ARM上的中断处理我已经在另一篇帖子解密ARM based Linux内核中断处理框架 中讨论过,所以下面转载 2013-01-31 13:48:35 · 1376 阅读 · 0 评论 -
mmap学习
用户态与核态共享内存kmmap.h#define PAGE_SHIFT_4K 12#define KMMAP_MEM_MB_SHIFT 20#define KMMAP_MEM_GB_SHIFT 30#define KMMAP_MEM_MB_MASK 0xFFFFF#define KMMAP_MEM_TOTAL_SZIE (((unsigned long)4)原创 2013-06-01 10:26:37 · 1324 阅读 · 0 评论 -
Linux内核引导参数简介
一,概述内核引导参数大体上可以分为两类:一类与设备无关、另一类与设备有关。内核源码树下的 Documentation/kernel-parameters.txt 文件列出了所有可用的引导参数,并指明了处理每个参数的具体文件。注意:对于模块而言,引导参数只能用于直接编译到核心里的模块,格式是使用"模块名.参数=值"模式指定,比如:usbcore.blinkenlights=1 。动态加载的模块可转载 2013-07-25 13:42:47 · 1163 阅读 · 0 评论 -
KVM虚拟化系列之virio -------virtio scsi host driver
简介: Linux 内核支持多种虚拟化模式,并且支持的数量随着虚拟化的进步和新模式的出现(例如 lguest)而增加。但是,让这些虚拟化模式能够在 Linux 之上运行之后,又如何让它们能够在 I/O 虚拟化方面利用底层内核呢?答案是使用 virtio,它为 hypervisor 和一组通用的 I/O 虚拟化驱动程序提供高效的抽象。探索 virtio 并了解为什么 Linux 将成为最佳的 h转载 2013-08-14 14:36:39 · 5775 阅读 · 0 评论 -
LINUX 系统调用 表
本文内容包括:(man syscalls)一、进程控制:二、文件系统控制三、系统控制四、内存管理五、网络管理六、socket控制七、用户管理八、进程间通信一、进程控制:fork 创建一个新进程clone 按指定条件创建子进程execve 运行可执行文件exit 中止进程_exit 立即中止当前进程getdtablesize 进程所转载 2013-11-13 10:51:28 · 770 阅读 · 0 评论 -
MCA机制:硬件错误检测架构
一,MCA 硬件检测机制1,Intel MCA硬件机制 Intel引入了MACHINE-CHECK ARCHITECTURE(MCA) 和 machine-check exception(#MC)机制用来对服务器硬件进行自检,并在发现硬件错误的时候发出中断或异常。系统软件收到中断或异常后,会对其进行响应,进行相应的修复、告警或其他策略等动作。通过Intel的这个RAS特性,保...原创 2016-11-02 00:54:51 · 25879 阅读 · 4 评论