UNIX 操作系统设计
- 1 -
模拟文件管理和进程调度的仿真操作系统设计
1.总体设计
根据要求,该仿真操作系统主要实现了对于文件管理和进程调度的模拟。由于是一个虚拟的操
作系统,因此所有的操作和功能都在内存中实现,力图集中反映出这两个模块最本质的东西。该仿
真系统以命令行作为人机交互的接口,设计了一些简单的命令实现了用户对文件和进程的有效管理。
最后以一个写文件进程的例子将两个模块联系起来,构成一个有机的整体。整个仿真系统分为文件
子系统和进程管理子系统两个主要部分。
2.文件子系统设计
文件子系统采用树形结构,存储为儿子—兄弟的形式,包括对文件或目录的创建、删除、查看
等操作。
2.1.文件结构
文件的类型分为两种:常规文件和目录。目录可以进入,并且还可以在其下面继续创建文件;
而常规文件则不允许,它们只能作为整个文件系统树的叶子。每个文件以树中结点的形式存在于文
件系统中,而在程序里则用结构体来加以定义,各个结构体之间再用指针相互串联从而构成一棵文
件系统树。其中表示文件结点的结构体定义如下:
struct file
{
char file_name[20];
struct time creat_time;
char file_type;
char content[MAX_FILE_SIZE];
char state;
struct file *child;
struct file *brother;
struct file *parent;
};
其中 file_name 成员是一个字符串数组,保存文件名;creat_time 成员是一个时间类型变量,保
存 文 件 的 创 建 时 间 ; file_type 成 员 表 示 文 件 类 型 , 有 两 种 取 值 , DIRECTORY ( 目 录 ) 或
REGULAR_FILE(常规);content 成员是一个字符串数组,用来模拟文件的内容,初始值为空,用
户可以创建写文件的进程向常规文件中添加内容,对于目录来讲,该成员为空且不能被赋值。state
成员表示该文件的状态,包括 OK、WR 和 NO 三种状态,分别表示文件内容已经写入完毕、正在
向文件写入内容和该文件是目录或从未被写入的常规文件三种情况。child、brother 和 parent 成员是
三个指向该结构体的指针,分别指向给定结点的第一个孩子、第一个右兄弟和父亲结点,对于常规
文件,child 成员为空。当程序开始运行时,将整个文件系统树初始化为一个文件名是”root”的根目
录结点。
2.2.相关命令格式及其实现
该系统为文件操作设计了创建、删除、查看、进入等命令,实现了对文件子系统的有效管理。
下面对文件操作命令的格式及其主要的函数实现加以介绍。
评论0