minix2.0内核组织结构与公用头文件说明
Minix2.0操作系统的源代码由两个目录组成:include/目录和src/目录
include/目录包含了操作系统所有的头文件(即.h文件)
src/目录下包含了操作系统所有的源文件(.c或.s文件)
头文件的组织结构为:
include/目录下为POSIX标准头文件;
include/sys/目录下为额外的POSIX标准头文件;
include/minix/目录下为MINIX操作系统定义的头文件
源文件的组织形式为:
src/kernel/目录存放着MINIX操作系统第一层(进程管理)和第二层(设备管理)的源代码;
src/mm/目录存放着MINIX操作系统第三层中内存管理子系统的源代码;
src/fs目录下存放着MINIX操作系统第三层中文件管理系统的源代码;
src/lib目录下存放着MINIX操作系统使用的库例程源代码(e.g. open,read);
src/tools目录下存放着Init源程序,用于启动Minix;
src/boot目录下存放着启动和安装MINIX操作系统的源代码
minix OS的主体是以C语言编写的,在minix2.0的源代码中,以“.c”结尾的文件均为C语言源程序
minix的内核源代码少部分是用汇编语言编写的,其中大部分是关于中断与异常处理的底层程序。在minix2.0源代码中,以“.s”结尾的文件均为汇编语言源程序
src/commands/ :包含公用程序(e.g. cat, cp, date, ls, pwd)的源代码
src/test/: 包含有一些被设计用来对新编译好的Minix系统进行完整测试的工具(由于Minix是一个用于教学的操作系统,这意味着对它常常要作修改)
src/inet/: 包含了重新编译Minix以使之支持网路的源代码
Minix的内部结构:
Minix被组织成4层,每一层执行一套定义得很完整的功能,这4层如下图所示:

第1、2层的代码位于src/kernel/下。第一层是Minix内核的最底层,该层包括完成以下的功能函数:系统的初始化、中断、消息传递以及进程调度。
Minix2.0操作系统公用头文件说明
以下头文件均在目录include/下:
ansi.h: 用来检测编译器是否遵循标准C,如果是的话,_ANSI就被定义为31415,如果不是的,则_ANSI未定义。通过这个宏来诊测。
limits.h: 定义语言类型(如整型)和操作系统(如字)的基本尺寸,提高了可移植性
errno.h: 定义了minix操作系统程序执行时可能出现的各种错误号
unistd.h: 包含了大量的重要常数和系统调用函数原型。
string.h: 包含了用于字符处理的函数原型
signal.h: 定义了所有的ANSI和POSIX通用信号,minix支持所有的POSIX信号
fcntl.h: 定义了open()和fcntl()系统调用所需的各种参数和标志, 注意:create()已经过时。但是为了保持向后兼容性,而提供。
stdlib.h: 定义了一些共用的宏、类型和函数原型
termious.h: 被controlling终端类型的使用
a.out.h: 描述了可执行文件的格式
sys/types.h: 包含重要的类型定义
sys/ioctl.h: 声明设备的控制操作
sys/sigcontext.h: 定义了sigreturn(2)系统调用的所需的sigcontext结构
sys/sigptrace.h: 包含ptrace(2)系统调用所需的宏定义
sys/stat.h: 定义了stat()和fstat()系统调用所需的结构和宏
sys/dir.h:给出目录结构的布局
sys/wait.h: 包含wait()系统调用所需的宏定义
minix/config.h: 设置了minix内核、内存管理子系统、文件管理子系统的配置参数
minix/const.h: 定义了minix操作系统各部分共用的常量(宏定义)
minix/type.h: 定义了minix操作系统各部分公用的结构
minix/syslib.h: 声明了系统库函数的函数原型
minix/callnr.h: 定义了允许的系统调用号
minix/com.h: 包含内存管理子系统、文件管理子系统和I/O任务所需的一些宏定义以及I/O任务号
minix/boot.h: 包含文件系统所需的设备宏定义以及boot程序传递给minix操作系统的参数
Minix2.0操作系统kernel文件分析
详细分析 MINIX消息机制的核心:
- mpx386.s
- start.c
- 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
含了一些debug下的dump机制:
- src/kernel/dmp.c
驱动相关代码分析:
- src/kernel/driver.h
- src/kernel/driver.c
- src/kernel/drvlib.h
- src/kernel/drvlib.c
Winchester task 分析:
- src/kernel/wini.c
- 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
fs与kernel的接口以及mm与kernel接口sys_task
- src/kernel/system.c
minix2.0内核组织结构与公用头文件说明的更多相关文章
- Minix2.0内核源代码的组织结构
Minix2.0操作系统的源代码由两个目录组成:include/目录和src/目录 include/目录包含了操作系统所有的头文件(即.h文件) src/目录下包含了操作系统所有的源文件(.c或.s文 ...
- VS2008和VC6.0下使用pthread.h头文件
原文:http://www.cppblog.com/liquidx/archive/2009/06/16/87811.html 要在windows环境下使用 #include <pthread. ...
- Minix2.0操作系统公用头文件说明
以下头文件均在目录include/下: ansi.h: 用来检测编译器是否遵循标准C,如果是的话,_ANSI就被定义为31415,如果不是的,则_ANSI未定义.通过这个宏来诊测. limits.h: ...
- 如何指定GCC的默认头文件路径
如何指定GCC的默认头文件路径 网上偶搜得之,以之为宝:)原地址:http://blog.chinaunix.net/u/28781/showart.php?id=401631============ ...
- MinGW中的头文件路径级环境变量设置
整理自 MinGW中的头文件路径 C头文件目录%MINGW_PATH%/include下有头文件,里面有strcpy等c函数的声明. C++头文件目录%MINGW_PATH%/lib/gcc/mi ...
- ARM单片机的头文件如何用结构体定义地址
下面我们以ARM Cortex-M0内核单片机LPC1114的头文件lpc11xx.h文件进行说明. 1.先说两句 lpc11xx.h文件是lpc11xx系列单片机包含的头文件.这个文件的作用和51单 ...
- direct.h头文件(对目录操作)
chdir()改变当前目录的函数原形:int chdir(const char *path)功能:把由path指定的目录改为当前目录.path参数中可以指定驱动器号,如“a:\\ddd”, 但只是改变 ...
- linux 内核头文件 linux kernel header
概述:在进行有关系统软件的安装的时候(编译一个新的驱动,或者安装一个系统级别的测试工具,例如systemtap),经常需要重新编译内核,相应的问题往往与内核头文件有关.那么,什么是内核头文件,为什么需 ...
- linux内核中链表代码分析---list.h头文件分析(一)【转】
转自:http://blog.chinaunix.net/uid-30254565-id-5637596.html linux内核中链表代码分析---list.h头文件分析(一) 16年2月27日17 ...
随机推荐
- nodejs学习笔记二——链接mongodb
a.安装mongoose库用来链接mongodb数据库 安装mongodb数据库参考mongodb安装 前言(怨言) 本来是想安装mongodb库来链接mongodb的,命令行到nodejs工程目录: ...
- javascript设计模式之单体模式
一入前端深似海,刚入前端,以为前端只是div+css布局外加jquery操作DOM树辣么简单.伴随着对前端学习的深入,发现前端也是博大精深,而且懂得越多,才发现自己越无知,所以一定不能停下脚步的学习. ...
- 从CPU的运行到函数调用做个了解
CPU的内部结构 我们都知道CPU是一台电脑的核心部件,所有的程序都是通过它运行的,那么CPU是如何让一个程序跑起来的呢?我们今天就来一起简单的做个了解,首先看下CPU的基本结构 程序流程 假如现在我 ...
- 前端实现QQ会话功能(常用笔记3)
<a href="tencent://message/?uin=客服QQ号码&Menu=yes" target="blank"></a ...
- 【Java每日一题】20161102
package Nov2016; public class Ques1102 implements Parent{ @Override public void method() { } } inter ...
- gitlab web hook
https://pypi.python.org/pypi/glhooks/0.1.0 https://filippo.io/a-python-github-push-webhook-handler/ ...
- pageEncoding的默认设置
windows-->preference-->myeclipse-->files and editors-->jsp 右侧 Encoding 选择 ISO 10646/Uni ...
- Scalaz(52)- scalaz-stream: 并行运算-parallel processing concurrently by merging
如果scalaz-stream真的是一个实用的数据流编程工具库的话,那它应该能处理同时从多个数据源获取数据以及把数据同时送到多个终点(Sink),最重要的是它应该可以实现高度灵活的多线程运算.但是:我 ...
- log4j在javaWeb项目中的使用
在前边的文章中对log4j的配置文件进行了说明,今天介绍如何在普通的javaWeb项目中使用log4j. 在日常的开发过程中,日志使用的很频繁,我们可以利用日志来跟踪程序的错误,程序运行时的输出参数等 ...
- Mysql优化的几点总结
正常情况下,初创公司的流量并不是很大,mysql数据库在未做优化的情况依然可以满足性能要求,特别是5.6版本后mysql在性能上还是有了很大提升,所以在初期并没有花精力在此上面.但后来发生的一系列问题 ...