linux内核学习读书笔记
- 格式:pdf
- 大小:126.66 KB
- 文档页数:2
linux内核学习读书笔记
2011-05-21 16:07
hexdump -C filename 将显示对应的十六进制的信息,并显示在终端上
mount -t tmpfs -o
size=1G testmem/ testmem/
mount |grep testmem
dd if=/dev/zero of=testmem/file bs=1M
count=500
这样就完成了占用内存空间的效果
通过上述的学习,发现访问内存的速度为访问磁
盘速度的10倍左右。
rq结构体中的timestamp_last_tick为本CPU上最后一次发生调度的时间。
struct prio_array *active, *expired, arrays[2];
这其中有两个数组链表,分别为过期数
组,活动数组,每个数组都是由140个位图,每个位图对应一个运行队列。
为什么会有等待的
进程,因为该进程如果需要访问某个inode,而该节点并没有在缓冲区里,需要从物理介质中
寻找,这样进程会进入等待状态。
asmlinkage long sys_setscheduler()...
在sched.c文件当
中,你就会看到会有这样的函数那么以sys_开头的函数就是系统调用函数模型,可以被用户使用。
task_struct中的cpus_allowed的作用是记录是哪个CPU 来处理该进程。
#ifdef CONFIG_SMP
#define NR_CPUS CONFIG_SMP
#else
#define NR_CPUS 1说明默认的配置为1
#endif
如果不进行任何配置,内核自己的选择。
linux的写时拷贝技术大大的提高了系统的性能,当需要的时候再拷贝该进程的信息,因为当新的进程产生的时候可能会进行exec族的操作,这样就避免了不必要的复制的信息。当父子进程发生了写入的操作的时候,操作系统在写某一个页面的时候会发生保护性的错误,系统会自动拷贝该页面。compiler.h学习
在该文件中有对GNU的版本的一些说明,如果该版本太
高,将会说版本太高无法编译
#if __GNUC__ > 4
#error no compiler-gcc.h file for this gcc version
#elif __GNUC__ == 4 //这里是Gcc支持的一个内置宏,表示了gcc的版本。
# include
#elif __GNUC__ == 3
# include
#else
# error Sorry, your compiler is too old/not recognized. //否则显示你的编译器太旧,无法编译。
#endif