logo
publist
写文章

简介

该用户还未填写简介

擅长的技术栈

可提供的服务

暂无可提供的服务

Linux内核调试方法总结

内核开发比用户空间开发更难的一个因素就是内核调试艰难。内核错误往往会导致系统宕机,很难保留出错时的现场。调试内核的关键在于你的对内核的深刻理解。 一  调试前的准备在调试一个bug之前,我们所要做的准备工作有: 有一个被确认的bug。包含这个bug的内核版本号,需要分析出这个bug在哪一个版本被引入,这个对于解决问题有极大的帮助。

linux内核 address_space 结构

在阅读Linux2.6的内核内存管理这一部分时,我看到page结构中的一个mapping成员,我感到很迷惑,这个成员的属性太复杂了,我们来看看:struct address_space *mapping;表示该页所在地址空间描述结构指针,用于内容为文件的页帧(1)       如果page->mapping等于0,说明该页属于交换告诉缓存swap cache(2)  

linux内核系统调用hook

我以前利用0x80中断程序找到system_call然后找到 sys_call_table的方法,现在试下hook系统调用sys_mkdir来阻止创建目录小试牛刀。#include#include#include#include#include#includeMODULE_LICENSE("Dual BSD/GPL");#define _DEBU

Linux内核通过inline hook实现隐藏进程

这是我们操作系统的大作业。原理就是inline hook 那个 proc 文件系统,根目录下的 readdir 的函数。替换掉第三个参数,filldir。代码爆短,60来行。Ubuntu 10.04 测试可用。#include #include #include #include #include int register_kprobe(stru

linux内核编译选项详解(三):Processor type and features

<br />[*] Tickless System (Dynamic Ticks)  ---><br />非固定频率系统,这项技术能让新内核运行的更有效率,并且更省电。 <br />[*] High Resolution Timer Support不选<br />支持高频率时间发生器,如果硬件不兼容,则这个选项只会增大内核(大多数个人PC并没有这个)<br />[*] Symmetric mult

#x86#服务器
linux内核编译选项详解(二):Loadable Module and Block Layer Support

<br />[*] Enable loadable module support  ---><br />打开可加载模块支持,如果打开它则必须通过"makemodules_install"把内核模块安装在/lib/modules/中这个选项可以让你的内核支持模块,模块是什么呢?模块是一小段代码,编译后可在系统内核运行时动态的加入内核,从而为内核增加一些特性或是对某种硬件进行支持。一般一些不常用到的驱

linux内核编译选项详解(一):General setup

<br />[*]Prompt for development and/or incomplete code/drivers<br />显示尚在开发中或尚未完成的代码与驱动.你应该选择它,因为有许多设备可能必需选择这个选项才能进行配置,实际上它是安全的。这个选项同样会让一些老的驱动的可用。如果你选了Y,你将会得到更多的阿尔法版本的驱动和代码的配置菜单。<br /><br />()Local ver

简单认识自旋锁和信号量

为了避免多个进程对同一资源进行访问或多处理器并发产生竞争,内核采用锁机制来实现对共享数据的保护。首先简单分析一下操作系统之分类: 一 操作系统分类实时操作系统和分时操作系统。它们的共同特点是都是多任务的,但是主要区别在于应用场合,举个不恰当的例子实时操作系统应用于导弹发射、卫星发

#linux
到底了