全部博文(2759)
发布时间:2013-01-10 12:02:09
前面说过,虚拟文件系统VFS是对各种文件系统的一个抽象层,抽取其共性,以便对外提供统一管理接口,便于内核对不同种类的文件系统进行管理。那么首先我们得看一下对于一个具体的文件系统,我们该关注重点在哪里。 对于存储设备(以硬盘为例)上的数据,可分为两部分: 用户数据:存储用户实际数据的部分; 管理数据:用于管理这些数据的部分,这部分我们通常叫它元数据(metadata)。 我们今天要讨论的就是......【阅读全文】
发布时间:2013-01-10 12:00:51
作者:gfree.wind@gmail.com 博客:blog.focus-linux.net linuxfocus.blog.chinaunix.net 微博:weibo.com/glinuxerQQ技术群:4367710编译内核模块时,一个源文件的Makefile模板到处都是:obj-m := module.oKERNELDIR := /lib/modules/$(shell uname -r)/buildPWD := $(shell pwd)default: $(MAKE) -C $(KERNELDIR) M=$(PWD) modulesclean......【阅读全文】
发布时间:2013-01-08 05:11:53
前面写过一篇北极之北之main函数之前,这篇文章其实解决的问题是main函数并不是第一个执行的函数,在main之前,函数的入口点是_start, _start会调用glibc里的__libc_start_main,main函数只是这个函数的入参。 在__libc_start_main中某一步,会执行main函数。这是上面一篇博文获取到的知识。 前两天,CU的gongping11写了一个博文atexit函数和exit函数的理解,这篇博文提到了atexit可以注册退出函数,在main之后,执行注册退出函数。讲的非常的好,我们......【阅读全文】
发布时间:2013-01-08 05:11:27
C语言的布尔类型 在C语言标准(C89)没有定义布尔类型,所以C语言判断真假时以0为假,非0为真。所以我们通常使用逻辑变量的做法: //定义一个int类型变量,当变量值为0时表示false,值为1时表示trueint flag;flag = 0;//......flag = 1;if( flag ){//......} 但这种做法不直观,而且没有明确flag一定是布尔值。所以我们又借助C语言的宏定义: //宏定义布尔类型#define BOOL int#define TRUE 1#define FALSE 0//定义一个布尔变量BOOL flag = F......【阅读全文】
发布时间:2013-01-08 05:10:44
首先祝大家元旦快乐! 这个版本原本定于12月初发布的,但是由于“设备模型”工作量巨大,我一个人不可能这么快完成,就是今天也才完成了一小部分。我常常这样安慰自己,不要急,慢慢来,急也急不成啊,我可能是懒散惯了。但是一个人搞OS真不那么容易的。虽然这次加入的新特性对于整个操作系统“进程”来说,只是一小步,但是对于我,对于我的LMOS,却是一大步…… 我以前就说过操作系统一个重要的职责,那就是要以对计算机内的那些个杂七杂八的设备,进......【阅读全文】