minix操作系统分析.docx

上传人:b****8 文档编号:11176501 上传时间:2023-02-25 格式:DOCX 页数:13 大小:28.07KB
下载 相关 举报
minix操作系统分析.docx_第1页
第1页 / 共13页
minix操作系统分析.docx_第2页
第2页 / 共13页
minix操作系统分析.docx_第3页
第3页 / 共13页
minix操作系统分析.docx_第4页
第4页 / 共13页
minix操作系统分析.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

minix操作系统分析.docx

《minix操作系统分析.docx》由会员分享,可在线阅读,更多相关《minix操作系统分析.docx(13页珍藏版)》请在冰豆网上搜索。

minix操作系统分析.docx

minix操作系统分析

Minix操作系统内核源代码概要分析

版本号:

0.01(2004-5-28更新)

作者:

guokunemail:

guo_kun@

第一部分PC外围设备的相关分析.

第二部分总体结构分析

第三部分头文件及数据结构分析

第四部分kernel代码分析

第五部分内存管理器的分析

第六部分文件系统分析

第七部分总结

 

第一部分PC外围设备的相关分析.

●处理器复位后的状态分析

●处理器的体系结构分析

●硬盘

Winchester硬盘结构分类分区表Io端口地址硬盘控制器

●软盘软盘结构分区表马达控制软盘控制器

●时钟(PT)8253

●实时时钟(RT)

●总线时钟

●可编程中断控制器8259A(PIC)

●显示卡6845-vramframeBuffer

●串口

●并口8255

●DMA控制器8237基地址,控制字

●键盘8248

●ISA总线ISA端口的地址范围

●PCI总线PCIIO/MEM/Configure

 

第二部分总体结构分析

总体结构分析概论

源代码结构分解为树形结构。

如下所示:

源代码总体组织结构.

sys/

ibm/

include/minix/

net/

...

 

kernel/

mm/

fs/

src/boot/

inet/

tools/

test/

etc/

lib/

 

第三部分头文件及数据结构分析

头文件详细分析

include目录结构

include/a.out.h

include/ansi.h

include/errno.h

include/fcntl.h

include/ibm/partition.h

include/limits.h

include/minix/boot.h

include/minix/callnr.h

include/minix/com.h

include/minix/config.h

include/minix/const.h

include/minix/keymap.h

include/minix/partition.h

include/minix/syslib.h

include/minix/type.h

include/signal.h

include/stdlib.h

include/string.h

include/sys/dir.h

include/sys/ioctl.h

include/sys/ptrtrace.h

include/sys/sigcontext.h

include/sys/stat.h

include/sys/types.h

include/sys/wait.h

include/termios.h

include/unistd.h

include/terminos.h

 

include/ansi.h

这个文件检测这个编译器是不是基于ANSI的编译器。

如果是的话,_ANSI就被定义为31415,如果不是的,则_ANSI未定义。

通过这个宏来诊测。

include/limits.h

这个文件是为了提高移植性。

●定义了C语言数据类型的长度

●定义了基于POSIX1003.1标准(table2-3)

#ifdef_POSIX_SOURCE/*这个宏表明了仅对POSIX可见*/

#endif

include/errno.h

为了解决错误在系统内部为负的,通过对_SYSTEM侦测来决定。

#ifdef_SYSTEM

#define_SIGN-

#else

#define_SIGN

include/unistd.h

包含了大量的重要常数和系统调用函数原型。

include/signal.h

这个文件定义所有的POSIX以及ANSI通用的信号。

MINIX支持所有的POSIX信号,

include/fcntl.h

open()和fcntl系统调用需要

注意create()已经过时。

但是为了保持向后兼容性,而提供。

structflock{

shortl_type;/*lock类型*/

shortl_whence;/*startingoffset*/

shortl_start;/*relativeoffsetbytes*/

shortl_len;/*size;if0,thenuntilEOF*/

shortl_pid;/*拥有lock的进程*/

}

include/stdlib.h

definescertaincommonmacros,types,andfunctions

types是idiv_t,div_t,wchar_t,size_t,

数据机构:

typedefstruct{intquot,rem}div_t;用于有符号和无符号除法

typedefstruct{longquot,rem}idiv_t;

include/terminos.h

structtermios{

tcflag_tc_iflag;输入模式

tcflag_tc_oflag;输出模式

tcflag_tc_cflag;控制模式

tcflag_tc_lflag;local模式

speed_tc_ispeed;输入速度

speed_tc_ospeed;输出速度

cc_tc_cc[NCCS];controlcharacters

}

 

include/sys/dir.h

#defineDIRBLOCKSIZ512

#ifndefDIRSIZ

#defineDIRSIZ14注意是14;

#endif

数据结构:

struct{

ino_td_ino;

chard_name[DIRSIZ];

}

 

include/a.out.h

分析:

a.out.h文件,这个文件描述了可执行文件的结构。

#ifndef_AOUT_H

#define_AOUT_H

避免了头文件的重复包含。

 

#endif

/*a.out的头*/

structexec{

unsignedchara_magic[2];/*魔术数*/

unsignedchara_flags;/*标志*/

unsignedchara_cpu;/*cupid*/

unsignedchara_hdrlen;/*头的长度*/

unsignedchara_unused;/*保留*/

unsignedchara_version;/*版本号(暂时未用)*/

longa_text;/*textsegment字节长度(sizesinb*/

longa_data;/*datasegment...*/

longa_bss;/*bsssegment...*/

longa_entry;/*entrypoint进入点*/

longa_total;/*所有分配的内存*/

longa_syms;/*符号表的大小(编译器产生*/

/*SHORTFORMENDSHERE*/

longa_trsize;/*text重定位大小*/

longa_drsize;/*数据重定位大小*/

longa_tbase;/*text重定位基址*/

longa_dbase;/*数据重定位大小*/

structreloc{

longr_vaddr;

unsignedshortr_symndx;

unsignedshortr_type;

}

/*符号表进入点*/

structnlist{

charn_name[8];/*符号名*/

longn_value;/*值*/

unsignedcharn_sclass;/*存储类*/

unsignedcharn_numaux;/*辅助进入点的数量(未使用)*/

unsignedshortn_type;/*语言基址和继承类型(未使用)*/

include/sys/types.h

分析:

这个文件包含了许多重要的数据类型定义(typedefinitions)。

这是一个非常好的编程习惯。

按照习惯,每个被定义的数据后面加上_t;

 

include/sys/ioctl.h

分析:

声明i/o控制字

 

include/minix/partition.h

分析:

分区在磁盘上位置(用于DIOCCETP和DIOCSETP)

include/ibm/partition.h

分区表的描述(DPT)

src/kernel/kernel.h

主头文件

 

第四部分kernel代码分析

mpx386.s

start.c详细分析MINIX消息机制的核心

proc.c

src/kernel/exception.c

src/kernel/protect.c

src/kernel/klib386.s保护模式分析

src/kernel/klib.s

src/kernel/main.c

src/kernel/misc.c

src/kernel/i8259.c

 

src/kernel/dmp.c这个文件包含了一些debug下dump机制

 

src/kernel/driver.h

src/kernel/driver.c

src/kernel/drvlib.h驱动相关代码分析

src/kernel/drvlib.c

 

src/kernel/wini.cWinchestertask分析

src/kernel/at_wini.c

 

src/kernel/clock.c时钟分析

 

src/kernel/tty.h

src/kernel/tty.c终端任务分析

src/kernel/keyboard.c键盘任务分析

 

src/kernel/console.c控制台分析

6845videocontroller与处理器分享内存空间

单色B0000

彩色B8000

high

attribute

Low

character

src/kernel/system.cfs与kernel的接口以及mm与kernel接口

sys_task

 

第五部分内存管理器的分析

src/mm/mm.h

src/mm/const.h

src/mm/type.h

src/mm/proto.h

src/mm/glo.h

src/mm/mproc.h

src/mm/param.h

src/mm/table.c

src/mm/main.c

src/mm/forkexit.c

src/mm/exec.c

src/mm/break.c

src/mm/signal.c

src/mm/getset.c

src/mm/trace.c

src/mm/alloc.c

src/mm/utility.c

src/mm/putk.c

 

第六部分文件系统分析

src/fs/fs.h

src/fs/const.h

src/fs/type.h

src/fs/proto.h

src/fs/glo.h

src/fs/fproc.h

src/fs/buf.h

src/fs/dev.h

src/fs/file.h

src/fs/lock.h

src/fs/inode.h

src/fs/param.h

src/fs/inode.c

src/fs/super.h

src/fs/table.c

src/fs/cache.c

src/fs/super.c

src/fs/filedes.c

src/fs/lock.c

src/fs/main.c

src/fs/open.c

src/fs/read.c

src/fs/write.c

src/fs/pipe.c

src/fs/path.c

src/fs/link.c

src/fs/stadir.c

src/fs/protect.c

src/fs/time.c

src/fs/misc.c

src/fs/device.c

 

总结

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 其它

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1