
linux内核
Rill
这个作者很懒,什么都没留下…
展开
-
linux内核研究-6-work queue
linux内核研究-6-work queue 1,work queue 与软中断和tasklet的关系 1》work queue是内核线程来执行的,软中断和tasklet是qsoftirqd内核线程来执行的。 2》work queue能休眠,软中断和tasklet不能。 2,work queue工作原理和过程 1》内核有一个默认的工作者线程(worker thread),event(原创 2012-04-09 13:25:16 · 1663 阅读 · 1 评论 -
linux内核研究-9-页高速缓存(cache)
linux内核研究-9-页高速缓存 1,说在前面 1》页高速缓存是内存的一部分,只是用途是用来缓存磁盘块的。 2》页高速缓存存在基于两方面因素,访问内存的速度要远远高于访问磁盘,临时局部原理(tmporal locality) 3》核心结构体:struct address_space。在,可见跟文件系统关系紧密。 2,页高速缓存的原理和过程 1》应用程序调用文件I/O函数,C库封装原创 2012-04-20 13:16:32 · 1922 阅读 · 1 评论 -
linux内核研究-8-块设备I/O层
linux内核研究-8-块设备I/O层 1,说在前面 1》块I/O层介于文件系统层和块设备驱动之间 2》此层的核心是I/O“请求列表” 3》请求链表的节点是bio和HB(header of buffer),描述了扇区和块以及页的关系 4》块,是文件系统的最小操作单元。页,内存管理中的页。扇区,硬件最小操作单元。 5》扇区大小 2,块设备I/O层的原理和工作过程 1》文件系统向请求列原创 2012-04-19 15:40:49 · 2375 阅读 · 1 评论 -
linux内核研究-10-模块
linux内核研究-10-模块 1,说在前面 都说十全十美,这是内核研究的第十篇了,这也是linux内核研究系列的最后一篇。虽然《深入理解linux内核》看了多遍,《linux内核设计与实现》看了多遍,也写过几个内核模块,这次学习还是收获不少。 2,下面就以一个hello world模块结束这次linux内核之旅吧 //=== hello.c: //=== /*原创 2012-04-20 14:23:40 · 1717 阅读 · 2 评论 -
linux内核研究-3-中断
linux内核研究-3-中断 1,还是惯例,本节将用一个小例子来说明中断的工作原理和过程以及如何在驱动中使用中断。 2,说在前面 1》中断和异常是有区别的。异常是一种同步中断。上一节说到的系统调用使用的内核陷入就是异常(软中断)。 2》中断的实现需要硬件的支持,比如要让硬件工程师把设备的某个引脚连接到CPU的跟中断相关的某个引脚。 3》中断比较特殊,不能占用太多时间,所以有必要原创 2012-04-05 09:06:57 · 1817 阅读 · 1 评论 -
linux内核研究-4-软中断
linux内核研究-4-软中断 1,说在前面 1》此“软中断”非彼“软中断”,这里说的不是针对硬件中断的那个,而是中断处理流程的下半部分机制之一。 2》2.6内核有三种下半部机制:软中断,tasklet,work queue。 3》老的内核使用的BH,task queue,现在都已经不用了。 4》tasklet 需要软中断的帮助。 5》软中断不能抢占其它软中断,但是不同CPU上的可以同原创 2012-04-05 17:38:03 · 1782 阅读 · 5 评论 -
linux内核研究-7-内存管理
linux内核研究-7-内存管理 1,说在前面: 1》内存分成一定大小的‘页’ 2》内核以‘页’为最小单位进行管理。也就是说内核管理内存的最小单位是‘页’ 3》每个物理页对应一个页结构体 struct page 2,内存管理函数->kmalloc函数: Void *kmalloc(size_t size,int flags) 1》 内存申请的内核函数之一原创 2012-04-13 11:51:23 · 1862 阅读 · 1 评论 -
linux 内核研究--1--进程调度
linux 内核研究--1--进程调度 内容组织: 一段牢骚+学习内容 1,一段牢骚 我是“半路出家”的。在大学过了两年的“必修课选逃,选修课必逃”的快乐时光后开始考虑未来。 本来打算大学毕业后读研来着,当时幸运,正好赶上金融危机,在把量子物理看了两遍后,感觉没戏 ,于是就着急将来靠什么安身立命,思索再三,感觉网络工程师这个职业前途无量,于是在大三的暑 假来临前,在当当上买了本网络工原创 2012-03-28 17:04:03 · 2320 阅读 · 4 评论 -
linux内核研究-2-系统调用
1,“学习linux最好的方法就是试着修改她”,下面就用一个小例子,说一下,如何添加一个linux的系统调用。 2,步骤: 1》向官方申请分配给咱一个系统调用号,假设为300,咱们的系统调用名称叫long sys_rill(void) 2》在系统调用的表项(一般在对应体系结构的entry.s中)最后添加一行: .long sys_rill 3》定义系统调用号(一般在中): #de原创 2012-04-01 14:48:28 · 1591 阅读 · 1 评论 -
linux内核研究-5-tasklet
linux内核研究-5-tasklet 1,tasklet与软中断 1》tasklet需要软中断的支持,没有软中断,就没有tasklet。 2》tasklet可以认为是软中断的一个子系统。 3》个人认为将来tasklet可以完全替代软中断。 2,tasklet工作原理和过程 1》内核有一个链表,在里面: struct tasklet_struct{};里面有tasklet处理函数和函原创 2012-04-06 17:16:08 · 1434 阅读 · 1 评论