
linux内核与算法
linxiaowu66
这个作者很懒,什么都没留下…
展开
-
简析linux内核的执行流程(从bootsect.s到启动结束)
简析linux内核的执行流程----从bootsect.s到main.c(内核版本0.11)Linux启动的第一阶段(从开机到main.c)3个任务:A、启动BIOS,准备实模式下的中断向量表和中断服务程序。B、从启动盘加载操作系统程序到内存。C、为执行32的main函数做过渡准备。内存变化如下:① 、0xFE000到0xFFFFF是BIOS启动块,其中上电后第一条原创 2012-06-06 16:49:44 · 948 阅读 · 0 评论 -
内核中各种出错函数的总结
1、许多的内核函数需要返回一个指针,但是函数的调用可能失败,一般我们处理这样的情形都是返回一个NULL指针,就像malloc或kmalloc在没有获得指定的空间申请时的返回值一样。但是有时我们想知道导致函数失败的原因,但是返回NULL就显得信息不够。因此有些函数返回一个实际的错误编码以便对引起错误的原因做一些处理。很多内核接口通过把错误值编码到一个指针值中来返回错误信息。当处理这样的函数时,判断是原创 2012-06-08 07:46:30 · 939 阅读 · 0 评论 -
内存管理与“三地址”的千丝万缕(2)
内存管理与“三地址”的千丝万缕(2)好,开始正题! cpu的内存管理模式。对于8086,大家很容易知道利用段基址加逻辑地址(偏移地址)来找到物理地址的。而段基址又有分为4种,即DS、CS、SS、ES。每段的起始地址在开始时由操作系统定义了。这就是所谓的段机制。在8086的运行中,物理地址的形成因操作而异,取指令时cpu会用CS和IP的内容相加形成指令所在的单元的20位地址,而进行堆栈时会用原创 2012-06-06 16:27:02 · 503 阅读 · 0 评论 -
内存管理与“三地址”的千丝万缕(1)
内存管理与“三地址”的千丝万缕(1) 前记:我先谈一下一点很深的体会:你有时候会为某个知识点在那绞尽脑汁地想解决,但是我通过这阶段的学习知道,有时候想不通一个问题,也许是自己的知识积累不够造成的,所以这时请你不要急躁,迷茫。请你静下心来好好再把这个问题涉及的知识点看看,多找点书看,当你能够融会贯通的时候,你便能轻而易举地解决掉它了,不管你信不信,反正我是信了!祝有志于在嵌入式方面一展宏图的你原创 2012-06-06 16:25:17 · 611 阅读 · 0 评论 -
threshold for buffer fratricide搜索的关键词而有的结果
如前所述,所有的 Linux文件系统使用共同的缓冲区高速缓存。所有块设备的读取和写入请求通过标准的内核例程调用,以 buffer_head数据结构的形式提交给设备驱动程序(参见本书 12.5.3 小节)。buffer_head中包含了唯一标识块所在设备的设备标识符,以及要读取或写入的块编号。为了加速对物理块设备的访问过程,Linux使用了缓冲区高速缓存。在高速缓存中,任意给定的时间内,存在着来自不转载 2012-06-08 07:47:37 · 723 阅读 · 0 评论 -
Linux内核参数,proc/sys/vm/…
与磁盘IO子系统有关的/proc/sys/vm/dirty_ratio这个参数控制文件系统的文件系统写缓冲区的大小,单位是百分比,表示系统内存的百分比,表示当写缓冲使用到系统内存多少的时候,开始向磁盘写出数据。增大之会使用更多系统内存用于磁盘写缓冲,也可以极大提高系统的写性能。但是,当你需要持续、恒定的写入场合时,应该降低其数值,一般启动上缺省是10。下面是增大的方法: echo '转载 2012-06-08 07:47:10 · 1909 阅读 · 0 评论 -
Linux内核的等待队列
Linux内核的等待队列是以双循环链表为基础数据结构,与进程调度机制紧密结合,能够用于实现核心的异步事件通知机制。在Linux2.4.21中,等待队列在源代码树include/linux/wait.h中,这是一个通过list_head连接的典型双循环链表,如下图所示。 在这个链表中,有两种数据结构:等待队列头(wait_queue_head_t)和等待队列项(wait_qu转载 2012-06-07 08:07:32 · 445 阅读 · 0 评论 -
中断上下文
中断上下文基于源代码分析Linux-2.4、2.6系统中断处理程序下半部王海花杨斌李东亮 (西南交通大学信息科学与技术学院,四川成都610031)摘 要:linux设备驱动中,中断处理程序由于本身的局限性,被分成了上半部分和下半部分。其中下半部分是中断处理程序中上半部分未完成工作的推迟,它有多种实现机制。因此,深入分析和研究这些机制,将会给驱动程序的开发工作提供很大帮助。本文以转载 2012-06-06 17:00:00 · 1414 阅读 · 0 评论 -
关于在linux下编译内核出现的一些问题
今天练习在x86平台上编译内核安装内核以及内核模块,发现了一个比较纠结的问题。我利用的是虚拟机的工具,所以文件大部分存放在windows与linux共享的文件中,结果编译时就出错了,查找原因时因为在windows平台下的文件系统格式不对,因为在D盘式NTFS的,所以出现了如下的错误:““ln:创建符号链接”include/asm”:不支持的操作。”后来复制到home目录下,结果在自己的主目录下新建原创 2012-06-06 16:51:13 · 1358 阅读 · 0 评论 -
浅谈linux内核的一些很妙的算法(1)
浅谈linux内核的一些很妙的算法(1)(内核版本是0.11)阅读linux内核时发现了很多难以理解的程序,查找课外书后才发现这些程序的实现算法相当的精妙,不由佩服linus的编程技巧,下面简单说一些我自己认为很妙的程序供大家参考。对于linux系统的内存规划。大家都知道linux系统以其精简而受到大家的热爱,对于内存规划便是很重要的一件事。Linus考虑好了各部分程序的代码量,从boot原创 2012-06-06 16:28:54 · 1132 阅读 · 0 评论 -
内存屏障的意义!
当你看到“内存屏障”四个字的时候,你的第一反应是什么?寄存器里取出了错误的值?ifence,sfence之类的指令?还是诸如volatile之类的关键字?好吧,我第一次看到这四个字的时候,脑子里浮现出的是魔兽争霸里绿油油的铺满苔藓的岩石屏障- -#,并且,当我搞明白内存屏障具体是什么,而且自认为对其很熟悉之后,我的第一反应依然是那几块绿油油的石头,而且很想上去A一把!言归正传,先解释下什么是内转载 2012-06-23 15:31:38 · 1148 阅读 · 0 评论