摘要: 目录项和超级块,节点的概念不同,它在设备上没有对应的磁盘数据结构。相反,它是目录文 件的一部分。linux中目录也是一种文件,类型是'd'。但是目录中的内容和普通文件不同,它是由目录项组成的。注意目录项不是目录。我们经常用路径名 执行相关操作,目录项就是为了查找方便的。struct dirt_entry{unsigned short inode;char name[NAME_LEN];};可 以看到一个目录项中包含了文件的i节点号和文件的名称。路径有两种,一种是绝对路径,一种是相对路径。比如/home/fish就是绝对路径,它以根目录 /为开头,而 X11/xorg.conf就 阅读全文
posted @ 2010-02-04 10:14 qiang.xu 阅读(1088) 评论(0) 推荐(0) 编辑
摘要: 超级块描述了整个文件系统的信息,而文件作为存储的对象,它的信息是有inode节点来描述的。i节点位图描述了inode的使用情况。struct m_inode{unsigned short i_mode; //文件类型unsigned short i_uid;//文件宿主unsigned long i_size;//文件大小unsigned long i_mtime;//文件修改时间unsigned char i_guid; //文件组idunsigned char i_nlinks;//文件目录项连接数unsigned char i_zone[9];//文件所在的设备逻辑块号//以下的字段在内 阅读全文
posted @ 2010-02-04 10:12 qiang.xu 阅读(1281) 评论(0) 推荐(0) 编辑
摘要: 文件系统和内存管理,以及进程管理是操作系统的核心部分。数据通常以文件的形式存储在设 备上,因此文件系统的基本功能就是以某种格式存取/控制文件。0.11版的内核中采用了minix1.0版的文件系统。在最新的2.6版内核中,借助于 VFS,系统支持50多种文件系统。首先介绍一下minix文件系统minix文件系统和标准unix文件系统基本相同。它由6个部分组 成,分别是:引导块,超级块,i节点位图,逻辑块位图,i节点,和数据区。如果存放文件系统的设备不是引导设备,那么引导块可以为空。PC机的块设备通常 以512字节为一个扇区,而文件系统则以盘块为单位使用之。minix中1个盘块等于2个扇区大小。从 阅读全文
posted @ 2010-02-04 10:10 qiang.xu 阅读(1413) 评论(0) 推荐(1) 编辑
摘要: 给中国学生的第四封信今天,我回复了“开复学生网”开通以来的第1000个问题。关掉电脑后,始终有一封学生来信萦绕在我的脑海里,挥之不去:开复老师:就要毕业了。回头看自己所谓的大学生活,我想哭,不是因为离别,而是因为什么都没学到。我不知,简历该怎么写,若是以往我会让它空白。最大的收获也许是……对什么都没有的忍耐和适应…… 这封来信道出了不少大三、大四学生的心声。大学期间,有许多学生放任自己、虚度光阴,还有许多学生始终也找不到正确的学习方向。当他们被第一次补考通知唤醒时,当 阅读全文
posted @ 2010-02-04 08:57 qiang.xu 阅读(291) 评论(0) 推荐(0) 编辑
摘要: /** 该文件实现rs232 串行通信中断处理*//** linux/kernel/rs_io.s** (C) 1991 Linus Torvalds*//** rs_io.s** This module implements the rs232 io interrupts.*/.text.globl _rs1_interrupt,_rs2_interrupt/* 读写队列缓冲区的长度 */size = 1024 /* must be power of two ! and must match the value in tty_io.c!!! *//* these 阅读全文
posted @ 2010-02-01 15:33 qiang.xu 阅读(707) 评论(0) 推荐(0) 编辑
摘要: 参考《linux内核完全注释》和网上相关文章/** 控制台显示操作*//** linux/kernel/console.c** (C) 1991 Linus Torvalds*//** console.c** This module implements the console io functions* 'void con_init(void)'* 'void con_write(struct tty_queue * queue)'* Hopefully this will be a rather complete VT102 implementation.* 阅读全文
posted @ 2010-02-01 10:00 qiang.xu 阅读(1211) 评论(0) 推荐(0) 编辑
摘要: 【转载】一位学计算机的大学生的历程,真实反映了现在很多大学生的现状,我觉得很不错。就给他家分享了,原文出处已经不清楚了。与我心有戚戚焉,取其精华吧。有些观点确实不错,另外一些显得有些偏激。正文:昨天想了整整一宿,最后写下下面这些对于大学学习生活的回顾与反思。觉得作为一个“过来人”很有必要将一些问题说给未来将要毕业的同学,希望能够吸取我的教训,少走些弯路。同时以此为鉴,今后努力的改正、提升自己。(没兴趣听我白话者可直接跳读到第六部分总结)大学生活马上就要结束了,这里不禁感叹时光飞逝,物是人非……记得刚刚踏入大学校 阅读全文
posted @ 2010-02-01 09:54 qiang.xu 阅读(355) 评论(0) 推荐(0) 编辑
摘要: /** linux/kernel/keyboard.S** (C) 1991 Linus Torvalds*//** Thanks to Alfred Leung for US keyboard patches* Wolfgang Thiel for German keyboard patches* Marc Corsini for the French keyboard*/#include <linux/config.h> // 内核配置头文件.text.globl _keyboard_interrupt/** these are for the keyboa 阅读全文
posted @ 2010-01-29 22:49 qiang.xu 阅读(2206) 评论(0) 推荐(0) 编辑
摘要: /** linux/kernel/floppy.c** (C) 1991 Linus Torvalds*//** 02.12.91 - Changed to static variables to indicate need for reset* and recalibrate. This makes some things easier (output_byte reset* checking etc), and means less interrupt jumping in case of errors,* so the code is hopefully easier to unders 阅读全文
posted @ 2010-01-29 19:21 qiang.xu 阅读(1197) 评论(0) 推荐(0) 编辑
摘要: /** 2010-1-21* 该文件时内核中有关任务调度的函数程序,其中包含基本函数sleep_on,* wakeup,schedule等,以及一些简单的系统调用。同时将软盘的几个操作* 函数也放置在这里。** schedule函数首先对所有的任务检查,唤醒任何一个已经得到信号的任务,* 具体的方法是针对任务数组中的每个任务,检查其警报定时值alarm。如果任务* 的alarm已经超期(alarm < jiffies),则在它的信号位图中设置SIGALARM,然后* 情书alarm值。jiffies是系统自从开机之后算起的滴答数。在scheed.h中定义,* 如果进程信号的位图中 阅读全文
posted @ 2010-01-28 21:57 qiang.xu 阅读(1822) 评论(0) 推荐(0) 编辑
摘要: /** 本程序主要是实现系统调用中断int 0x80的入口处理过程机信号检测过程,* 同时给出了两个系统调用功能的底层接口sys_execve和sys_fork。还列出了* 处理过程类似的协处理器出错int 16,设备不存在int 7,硬盘中断int 46,* 软盘中断int 38的中断处理程序。**//** linux/kernel/system_call.s** (C) 1991 Linus Torvalds*//** system_call.s contains the system-call low-level handling routines.* This also contain 阅读全文
posted @ 2010-01-28 21:53 qiang.xu 阅读(2075) 评论(0) 推荐(0) 编辑
摘要: /** linux/kernel/asm.s** (C) 1991 Linus Torvalds*//** asm.s contains the low-level code for most hardware faults.* page_exception is handled by the mm, so that isn't here. This* file also handles (hopefully) fpu-exceptions due to TS-bit, as* the fpu must be properly saved/resored. This hasn' 阅读全文
posted @ 2010-01-28 21:50 qiang.xu 阅读(887) 评论(1) 推荐(0) 编辑
摘要: linux0.11系统调用的执行过程是怎样的? (1) 答:当执行系统调用函数时,系统调用函数会执行int 0x80中断命令,同时将系统调用号放入eax寄存器中,并将要传递给系统的参数放入ebx,ecx,edx中。中断处理程序会执行system_call()函数。(2) system_call()函数首先保存原段寄存器,在将调用参数压入栈中。然后将ds(在保护模式下,ds装的是段选择符)、es指向内核数据段,cs段会在中断产生时由中断门的段选择符赋值为内核代码段,并将原段选择符保存到栈中。然后调用对应的功能函数。当从功能函数返回时,内核会查看当前任务运行状态,如果不在就绪态就去执行调度程序。如 阅读全文
posted @ 2010-01-20 22:53 qiang.xu 阅读(985) 评论(0) 推荐(0) 编辑
摘要: 到了main.c,其实main.c中的大部分的内容是调用函数来实现初始化的工作,但是还是将它看完了。下面就是代码了。主要参考的是linux内核完全注释,在一些不太明白的地方,参考网上的介绍。废话少说。还有很长的路啊。努力啊O(∩_∩)O~。/** main.c功能描述。*///main.c程序的主要功能是利用setup.s程序取得的系统参数设置系统的// 的根文件设备号和一些全局变量。这些变量至两名了内存的开始地址// 系统包含的内存容量和作为高速缓存区内存末端地址。如果还定义了// 虚拟盘,则主存将会相应的减少。整个内存的镜像如下 ://// -------- 阅读全文
posted @ 2010-01-20 09:33 qiang.xu 阅读(2263) 评论(0) 推荐(0) 编辑
摘要: 虽说vim很强大,但是个人感觉器代码提示功能不如visual assist来的强大。如何使用visual assist来实现代码的提示功能呢?首先说明我的环境 : 宿主机是xp(O(∩_∩)O~还是xp的好使),虚拟机vmware + ubuntu 9.041.首先设置文件共享:安装vmware tools。安装笔记如下 : 将安装文件拷贝到/tmp路径下,解压,进入解压完的目录内,执行install文件。一路完全使用enter键,使用默认即可。2 将/usr/include目录下的文件拷贝到/mnt/hgfs/文件夹下。sudo cp -r /usr/include/ /mnt/hgfs3. 阅读全文
posted @ 2010-01-19 10:43 qiang.xu 阅读(1612) 评论(2) 推荐(0) 编辑