
简介
该用户还未填写简介
擅长的技术栈
可提供的服务
暂无可提供的服务
内核开发比用户空间开发更难的一个因素就是内核调试艰难。内核错误往往会导致系统宕机,很难保留出错时的现场。调试内核的关键在于你的对内核的深刻理解。 一 调试前的准备在调试一个bug之前,我们所要做的准备工作有: 有一个被确认的bug。包含这个bug的内核版本号,需要分析出这个bug在哪一个版本被引入,这个对于解决问题有极大的帮助。
在阅读Linux2.6的内核内存管理这一部分时,我看到page结构中的一个mapping成员,我感到很迷惑,这个成员的属性太复杂了,我们来看看:struct address_space *mapping;表示该页所在地址空间描述结构指针,用于内容为文件的页帧(1) 如果page->mapping等于0,说明该页属于交换告诉缓存swap cache(2)
我以前利用0x80中断程序找到system_call然后找到 sys_call_table的方法,现在试下hook系统调用sys_mkdir来阻止创建目录小试牛刀。#include#include#include#include#include#includeMODULE_LICENSE("Dual BSD/GPL");#define _DEBU
这是我们操作系统的大作业。原理就是inline hook 那个 proc 文件系统,根目录下的 readdir 的函数。替换掉第三个参数,filldir。代码爆短,60来行。Ubuntu 10.04 测试可用。#include #include #include #include #include int register_kprobe(stru
<br />[*] Tickless System (Dynamic Ticks) ---><br />非固定频率系统,这项技术能让新内核运行的更有效率,并且更省电。 <br />[*] High Resolution Timer Support不选<br />支持高频率时间发生器,如果硬件不兼容,则这个选项只会增大内核(大多数个人PC并没有这个)<br />[*] Symmetric mult
<br />[*] Enable loadable module support ---><br />打开可加载模块支持,如果打开它则必须通过"makemodules_install"把内核模块安装在/lib/modules/中这个选项可以让你的内核支持模块,模块是什么呢?模块是一小段代码,编译后可在系统内核运行时动态的加入内核,从而为内核增加一些特性或是对某种硬件进行支持。一般一些不常用到的驱
<br />[*]Prompt for development and/or incomplete code/drivers<br />显示尚在开发中或尚未完成的代码与驱动.你应该选择它,因为有许多设备可能必需选择这个选项才能进行配置,实际上它是安全的。这个选项同样会让一些老的驱动的可用。如果你选了Y,你将会得到更多的阿尔法版本的驱动和代码的配置菜单。<br /><br />()Local ver
为了避免多个进程对同一资源进行访问或多处理器并发产生竞争,内核采用锁机制来实现对共享数据的保护。首先简单分析一下操作系统之分类: 一 操作系统分类实时操作系统和分时操作系统。它们的共同特点是都是多任务的,但是主要区别在于应用场合,举个不恰当的例子实时操作系统应用于导弹发射、卫星发







