一个小型操作系统的实现.
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
13.1.1 MINIX的组成结构
Shell通常利用终端作为标准输入输出设备。但是 我们也可以利用以下的命令改变输入输出:ver <filea >fileb ,这条命令的意思是调用程序ver,从 filea文件取输入,送输出到fileb文件。 如果再利用管道,则可以将一个程序的输出作为另 一个程序的输入,例如: ver > /dev/lp,是将执 行ver程序的结果从/dev/lp文件上输出。 启动shell将首先显示系统提示符$,然后等待,假设 用户输入命令move,shell读取该命令后,自动创 建一个新进程来执行这个命令。命令执行完毕后, 它再执行一个系统调用来终止这个进程,继续等待 用户的下一个输入。
13.1.2 头文件
2.专有头文件 除了公共头文件之外,在include/minix中存放的是在 任何平台上实现MINIX都需要的头文件,而 include/ibm中则存放了在IBM兼容机上实现MINIX所需 的数据结构和宏的定义。
在include/ibm目录中主要有两个文件:
diskparm.h文件由软盘系统任务使用; partition.h定义了IBM兼容机上的硬盘分区表和有关常量。
在编程的过程中,有许多常量、宏以及结构 类型的定义会经常被不同文件用到,通常把 这些定义按照某种规则或需要组织在一起, 于是就构成了头文件(header),以后缀.h 标识。1. 公共头文件 在头文件中,有一些是完全通用的,它们不 是被源文件直接引用,而是被其它的头文件 引用。 MINIX中的三个主要部分:内核、文件系统 和内存管理分别对应有三个主控头文件 src/kernel/kernel.h、src/mm/mm.h和 src/fs/fs.h。
13.2 进程
13.2.1 概述
计算机中的所有软件,被组织成一定的顺序 运行,这就形成了进程的概念。 在MINIX和进程有关的部分主要负责解决以 下的问题:
怎样创建和终止一个进程,并使之处于合适的队 列中(进程管理); 怎样有效调度众多进程,使之在兼顾充分利用资 源和进程特权级、优先级要求的同时保证有序运 行(进程调度),这里也包括了对中断引起的进 程状态改变的处理(中断处理); 进程之间怎样交互(进程通信)等等。
在/minix/目录中首先要注意到的是config.h文件,它被所有主 控头文件所包含,且必须列在第一位。 第三个要提到的头文件是type.h,它被主控头文件所包含,定 义了很多重要的类型及其数量值。
13.1.2 头文件
消息由如下几个部分组成:
m-source域:用于指明消息的发送进程; m-type域:用于标识出消息的类型; 数据域:包括定义为整型(int)或长型(long)的整数、字符、 字符串、字符数组、指针以及函数等。
13.1.2 头文件
① 在include/目录下,有三个被主控目录包 含的头文件来测试编译器是否符合标准c的规定。 整个文件的构造以#ifndef_ANSI_H为开始,并 以#endif结束; limits.h:定义了一些基本的数据值的大小,比如: 数据类型中的整形数所占位数的值等; errno.h:包含了全局变量errno返回的错误码,用 于系统调用失败时通知用户程序。
13.1.1 MINIX的组成结构
shell还可以用来进行程序设计,它定义了各种 变量和参数,并提供了包括循环与分支在内的, 许多在高级语言中才具有的控制结构。 使用shell编程类似于编辑DOS中的批处理文件, 我们可以将一组我们想要执行的命令放在一个 文件中,然后像执行其他程序一样运行这个文 件。这个文件就被称为shell程序或shell命令文 件,又被称为shell script。当这个文件被运行 时,shell就会像执行输入命令那样一条条的自 动执行文件里保存的命令。
13.1.1 MINIX的组成结构
2. 源代码组织方式 MINIX的源代码在逻辑上一般分为两个目 录…/usr/include和…/usr/src/(为叙述方便,将简 记为include/和src/) 。
13.1.1 MINIX的组成结构
程序在内存中运行时,各个模块的分布情况:
13.1.2 头文件
第13章 一个小型操作系统的实现
本章知识点:
13.1 MINIX概述 13.2 进程 13.3 I/O任务 13.4 内存管理 13.5 文件系统
为了了解到一个“真正”的操作系统是怎样 一步步构造出来的,我们将以MINIX操作系 统为例,对其设计方法进行介绍,并对其源 代码进行简单分析。 因为MINIX的源代码是公开的,有兴趣的读 者还可以自己动手加以改造。
13.1 MINIX概述
MINIX操作系统最早出现于20世纪80年代, 由美国著名学者A.S.Tanenbaum用c语言编 制。 它从外部看来和UNIX非常相似,但实际上, MINIX的内部完全是经过重新设计的。它的 主体部分设计为几个相对独立的模块,模块 间依赖消息进行通讯,这样的模块化结构使 得对它的理解和修改都更方便。 本章中将介绍基于POSIX(国际标准9945-1) 的MINIX2.0版本,它可以运行于基于80x86 结构的兼容机系列。
13.1.1 MINIX的组成结构
1.MINIX的四层结构 MINIX的整个系统被分为4个层次:
13.1.1 MINIX的组成结构
需要特别介绍的是位于用户进程层次的 MINIX的命令解释器shell。 命令解释器并不是操作系统的一部分,它本 身就是一个计算机程序,用C语言编写,为 协助用户与操作系统之间通讯而设计,管理 用户与核心(kernel)之间的对话,并把操作 系统指令换成机器代码。
13.1.2 头文件
② include/sys目录下主要的头文件。
由于同一种数据类型在16位和32位处理器上所 占的字长可能存在差异,因而可能因错误理解在 特定情况下使用的基本数据结构而引发问题。 在文件types.h中定义了许多MINIX使用的数据类 型及其相关的数值,从而可以避免这种情况的发 生。 通常紧跟在types.h之后的是ansi.h头文件,它们 都被所有主控头文件包含。