
简介
该用户还未填写简介
擅长的技术栈
可提供的服务
暂无可提供的服务
接着上篇CFS学习总结,下面对很久前看的一些Linux内核的主要模块写了个简单的总结,本总结个人针对某个模块的回忆,并不针对源码,主要目的是一方面加强自己的记忆,另一方面提炼出一些东西与大家分享(有时候代码看多了,对某个模块反而没有了一个整体的概念)。一、Linux 启动过程分析Linux的启动过程可以分为四个阶段:系统上电阶段, BIOS阶段,引导程序阶段,Linux内核
<br /><br />几乎每一种外设都是通过读写设备上的寄存器来进行的,通常包括控制寄存器、状态寄存器和数据寄存器三大类,外设的寄存器通常被连续地编址。根据CPU体系结构的不同,CPU对IO端口的编址方式有两种:<br /><br /> (1)I/O映射方式(I/O-mapped)<br /><br /> 典型地,如X86处理器为外设专门实现了一个单独的地址空间,称为"I/O地址空间"或者"
<br /><br />上面的代码在内核中经常使用到,其中“__attribute__”、“__section__”等就是GCC编译器的关键字。 上面这段程序提供了一种初始化模块的方法:<br />1、如果一个内核模块需要在系统启动的时候初始化,只需在模块的源程序中调用“module_init( function)”这样的代码,GCC编译器在编译代码时,就会将这个函数的指针放到一个特定的代码段中(
AT&T汇编语言的相关知识 在Linux源代码中,以.S为扩展名的文件是“纯”汇编语言的文件。这里,我们结合具体的例子再介绍一些AT&T汇编语言的相关知识。 1.GNU汇编程序GAS(GNU Assembly和连接程序当你编写了一个程序后,就需要对其进行汇编(assembly)和连接。在
内核开发者一直在试图寻找一种快捷高效的内核调试手段,用于内核开发之中。高效的调试技术有利于提高内核开发效率,缩短内核开发周期。 本文研究了一种新型的内核调试技术―Kprobes, Kprobes是一个轻量级的内核调试工具,利用Kprobes技术可以在运行的内核中动态的插入探测点,在探测点处执行用户预定义的操作。本文首先根据Kprobes在Linux内核中的源码实现,针对L
1构建泛型宏 (./linux/include/linux/kernel.h)#define min(x, y) ({/typeof(x) _min1 = (x);/typeof(y) _min2 = (y);/(void) (&_min1 == &_min2);/_min1 大家看了就明白是什么意思了。但是我还有几点疑问:(1)(void) (&_min1 =
1. lsmod 列出已经加载的内核模块lsmod 是列出目前系统中已加载的模块的名称及大小等;另外我们还可以查看 /proc/modules ,我们一样可以知道系统已经加载的模块。 2.modinfo 查看模块信息modinfo 可以查看模块的信息,通过查看模块信息来判定这个模块的用途。 3.modprobe 挂载新模块以及新模块相依赖的模块
linux内核进程切换最重要的一个部分就是宏定义switch_to,下面从几个方面来详细讲解一下:(1)内嵌汇编(2)memory 破坏描述符(编译器优化)(3)进程切换的标志是什么?(4)堆栈切换的标志是什么?(5)为什么switch_to 提供了三个参数?(6)汇编参数的传递? 带着这几个问题,先来大体浏览一下代码 #define switch_to(p







