随笔分类 - Linux
摘要:一.填空题:1. 在Linux系统中,以文件方式访问设备 。2. Linux内核引导时,从文件/etc/fstab中读取要加载的文件系统。3. Linux文件系统中每个文件用i节点来标识。4. 全部磁盘块由四个部分组成,分别为引导块 、专用块 、 i节点表块 和数据存储块。5. 链接分为:硬链接 和...
阅读全文
摘要:前一阵子更换Linux衍生版的频率有点高 -_-|||,各个衍生版的Linux Shell命令还是又一些差异的,例如有的衍生版会有ll,la等等这些命令,其实这些东西基本都是在Shell的初始化脚本中做的。一般来说,Shell的初始化脚本分为2种:一种是全局默认的,一种是用户自己的。全局默认的路径为/etc/profile在profile中,它默认会再加载/etc/bash.bashrc。另一种用户自己的就是$HOME目录下的.profile它默认会载加载.bashrc文件。各中文件也会加载一些其他的脚本,这个具体视脚本而定。理清整个脚本加载过程后,就动手修改,至于要在那个脚本修改,还看个人取
阅读全文
摘要:现在我用的是虚拟机下ubuntu10.10,内核版本已经升级到2.6.38.2,要完成的任务有:TASK 1:在内核的结构体task_struct中添加一个数据成员ctx,记录每个进程切换(被调度)的次数,并编写一个模块显示进程的信息,包括该数据成员的值;TASK 2:在内核中增加一个系统调用,并编写用户态程序调用该系统调用;首先修改内核源码(最好是之前make的源码)FIRST:基于TASK 1的源码修改1. 在task_struct中添加一个数据成员,在源码文件include/linux/sched.h中找到task_struct所在位置,添加一个成员ctx记录每个进程切换(被调度)的次数
阅读全文
摘要:Linux提供了一种动态加载内核的机制,这种机制称为模块(Module),模块具有一下特点:1、模块本身不被编译入内核映像,从而控制了内核的大小。2、模块一旦被加载,它就和内核中的其它部分完全一样。为了方便理解,下面从一个最简单的内核模块“Hello World” 开始。(我的环境是:Ubuntu9.10 , linux-source-2.6.31)1、在/home/china/test中编写hello.c文件如下:#include#includeMODULE_LICENSE("Dual BSD/GPL"); //声明GPL版权static int hello_init(v
阅读全文
摘要:ricky_proc.c源码:#include #include #include #include #include #include #include #define MODULE_VERSION "1.0"#define MODULE_NAME "ricky_proc_info_final"#define P_MAX_LEN 30#define ARRAYMAX 4096static struct proc_dir_entry *ricky_file, *ricky_dir;static char c[ARRAYMAX];static int pr
阅读全文
摘要:我们有时需要得到程序的运行时间,但我们也要知道,根本不可能精确测量某一个程序运行的确切时间[3],文献[4]中说的很明白,现摘录如下。 我们平时常用的测量运行时间的方法并不是那么精确的,换句话说,想精确获取程序运行时间并不是那么容易的。也许你会想,程序不就是一条条指令么,每一条指令序列都有固定执行时间,为什么不好算?真实情况下,我们的计算机并不是只运行一个程序的,进程的切换,各种中断,共享的多用户,网络流量,高速缓存的访问,转移预测等,都会对计时产生影响。 文献[4]中还提到:对于进程调度来讲,花费的时间分为两部分,第一是计时器中断处理的时间,也就是当且仅当这个时间间隔的时候,操作
阅读全文
摘要:linux内核是一个整体是结构。因此向内核添加任何东西。或者删除某些功能 ,都十分困难。为了解决这个问题。引入了内核机制。从而可以动态的想内核中添加或者删除模块。模块不被编译在内核中,因而控制了内核的大小。然而模块一旦被插入内核,他就和内核其他部分一样。这样一来 就会曾家一部分系统开销。同时,如果模块出现问题。,也许会带来系统的崩溃。1、1模块的实现机制:启动时,由函数 void inti_modules() 来初始化模块。因为启动事很多时候没有模块。这个函数往往把内核自 身当作一个虚模块。如由系统需要,则调用一系列以sys 开头的函数,对模块进行操作。如:sys_creat_modules(
阅读全文

浙公网安备 33010602011771号