操作系统论文.docx

上传人:b****4 文档编号:12200622 上传时间:2023-04-17 格式:DOCX 页数:15 大小:67.90KB
下载 相关 举报
操作系统论文.docx_第1页
第1页 / 共15页
操作系统论文.docx_第2页
第2页 / 共15页
操作系统论文.docx_第3页
第3页 / 共15页
操作系统论文.docx_第4页
第4页 / 共15页
操作系统论文.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

操作系统论文.docx

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

操作系统论文.docx

操作系统论文

目录

1引言1

1.1操作系统课程设计的性质1

1.2操作系统课程设计的目的1

1.3操作系统课程设计的具体内容和要求1

1.4操作系统课程设计的意义1

1.5论文的结构安排1

2系统分析与设计2

2.1系统要求2

2.2模块说明2

2.2.1文件的逻辑结构2

2.2.2文件、目录的物理结构3

2.2.3磁盘块的分配与回收3

2.2.4用户接口4

3系统实现4

3.1磁盘管理4

3.1.1全局变量4

3.1.2初始化4

3.1.3磁盘块的分配5

3.1.4磁盘块的回收6

3.2文件6

3.2.1查找同名文件6

3.2.2移动文件7

3.3目录9

3.2.1删除目录9

4体会与收获10

1引言

1.1操作系统课程设计的性质

操作系统是计算机科学与技术专业的主要专业基础课和主干课。

操作系统对计算机系统资源实施管理,是所有其他软件与计算机硬件的唯一接口,所有用户在使用计算机时都要得到操作系统提供的服务。

操作系统课程设计有助于学生对操作系统的地位,作用产生更全面更详尽的认识、理解。

1.2操作系统课程设计的目的

1、通过模拟操作系统原理的实现,加深对操作系统工作原理和操作系统实现方法的理解;

2、通过模拟操作系统原理的实现练习编程。

1.3操作系统课程设计的具体内容和要求

1、文件管理和用户接口;

2、存储管理;

3、设备管理;

4、进程管理。

1.4操作系统课程设计的意义

通过模拟操作系统原理的实现,加深对操作系统工作原理和操作系统实现方法的理解,掌握了初步分析实际问题的能力,为其今后在相关领域开展工作打下坚实的基础。

同时使学生系统科学地受到分析问题和解决问题的训练,提高运用理论知识解决实际问题的能力。

1.5论文的结构安排

本论文主要阐述四部分内容。

一、引言部分,主要说明本次操作系统课程设计的性质、教学目的、教学任务与要求、意义以及论文的结构安排;二、系统分析与设计部分,主要阐述系统的主要功能模块以及每个模块计划采用的实现方法和原理;三、系统实现部分,主要通过PDL等工具描述主要模块的实现流程;四、结束语部分,主要书写已经实现的本系统存在的不足、改进方案和在课程设计中的体会与收获。

2系统分析与设计

2.1系统要求

1、文件管理和用户接口部分实现的主要是单用户的磁盘文件管理部分,包括:

(1)、文件的逻辑结构

(2)、文件的物理结构

(3)、目录结构

(4)、文件与目录操作

(5)、磁盘块分配与回收

2、磁盘模拟

(1)、磁盘是断电后内容不丢失的,因此用文件模拟磁盘。

要求模拟系统存在两块硬盘:

(2)、用一个文件disk1模拟磁盘

(3)、磁盘的每个盘块128字节,模拟磁盘共有256块。

(4)、磁盘中第0块存放专用块内容,第1、2块存放根目录,其余存放子目录和文件。

2.2模块说明

2.2.1文件的逻辑结构

1、文件的逻辑结构采用流式结构;

2、文件的内容:

文件的内容均采用文本文件,系统中有两种文件:

(1)、一种是存放任意字符的文件

(2)、一种是可执行文件:

可执行文件的内容就是系统内进程的程序体。

3、文件中要有一种特定命令的“可执行”文件,文件中的命令非常简单,仅仅包括以下几种指令:

(1)、x=?

给i赋值一位数。

(2)、x++:

i加1。

(3)、x--:

i减1。

(4)、!

?

?

第一个?

为A,B,C中某个设备,第二个?

为一位数,表示使用设备的时间(由于没有实际设备,所以无法知道设备何时工作完成,所以假定一个数,这个数随着系统时间增加而递减,减到0时,认为是设备工作完成)。

(5)、end:

表示文件结束,同时将结果写入文件out,其中包括文件路径名和i的值。

2.2.2文件、目录的物理结构

文件的物理结构采用索引文件方式。

索引文件由三张表组成,第一张表为一个256*6的二维表,每一行记录文件的索引信息,包括文件名(目录名)、文件目录、文件属性;第二张表是一个256*128的二维表,存放着文件的索引块号;第三张表是一个长度为256的一维表,第i个单元代表第一张表与第二张表的第i行信息是否为有效信息。

目录采用三级目录,最多能实现“我的电脑C:

\folder\folder\文件”。

采用目录项分解法,即把目录分为两部分:

符号目录项(文件名即相应的盘块号)和基本目录项(包含除了文件名外的其余全部信息)。

具体方式如图2-1:

图2-1目录分项分解图

2.2.3磁盘块的分配与回收

磁盘使用情况用空闲块成组链接法来记录:

把空闲块分成若干组,把指向一组中各空闲块的指针集中在一起,每一组的第一个空闲块中登记下一组空闲块的块号和空闲块数,余下不足一组块数的空闲块的块号级快数登记在一个专用块中,这样既可方便查找,又可减少为修改指针而启动的磁盘的次数,在本系统中将第0块作为专用块,其余的存放在一个二维数组中。

每一个空闲块可索引32项,一共有四个空闲块,可索引128块。

图2-2是空闲块成组链接示意图:

图2-2空闲块成组链接示意图

2.2.4用户接口

用户接口提供用户命令接口,具体实现以下命令:

1.创建文件:

create文件名

2.拷贝文件:

copy源文件名目标文件名

3.删除文件:

delete文件名

4.移动文件:

move源文件名目标文件名(磁盘内和磁盘间文件移动不同,磁盘内的移动实际只是目录的改变,并不需要真的移动文件;磁盘间的文件移动实际上是先拷贝文件到目标磁盘,然后再删除源文件。

5.编辑文件:

edit文件名(此命令完成对文件的编辑,只读文件不可以修改。

6.改变文件属性:

change文件名属性(将文件在只读和非只读、隐藏和非隐藏之间转换。

7.磁盘格式化命令:

format

8.建立目录:

makdir目录名(建立目录,若有同名目录存在,则建立失败。

9.删除目录:

deldir目录名(既可以删除空目录,又可以删除非空目录,对与非空目录,首先要删除其下文件和目录,然后才能删除其本身。

3系统实现

3.1磁盘管理

3.1.1全局变量

publicbyte[]Menu=newbyte[256];//根目录,两个盘块

publicbyte[]disk=newbyte[32768];//每个盘块128字节,每个磁盘128块。

两个盘块

publicintzmy_point=31;//空闲首地址指针

publicintzmy_get=31;//得到的空闲区域指针

publicint[]zmy_num=newint[4];

publicintzmy_sum=0;//分出的空闲块数

staticintzmy_k=0;//回收时回收区的第二维角标

publicbyte[,]zmy_block=newbyte[32,3];//空闲块

3.1.2初始化

根据成组连接法,将磁盘的空闲块进行链接,具体如下:

publicvoidCreate()

{

zmy_num[0]=32;//专用块剩余块数

zmy_num[1]=32;

zmy_num[2]=64;

zmy_num[3]=96;

for(inti=3;i<32;i++)//专用块

{

disk[i]=Convert.ToByte(i);

}

//索引快

for(inti=0;i<32;i++)

{

zmy_block[i,0]=Convert.ToByte(zmy_num[1]++);

}

for(inti=0;i<32;i++)

{

zmy_block[i,1]=Convert.ToByte(zmy_num[2]++);

}

for(inti=0;i<32;i++)

{

zmy_block[i,2]=(Convert.ToByte(zmy_num[3]++));

}

zmy_num[1]=32;//其余剩余块数

zmy_num[2]=32;

zmy_num[3]=32;

}

调用两次根据该算法,即把C盘与D盘各128块空闲区域组织在了一起。

具体组织如下:

图3-1空闲盘块组织图

3.1.3磁盘块的分配

空闲块的分配和回收都是针对专用块来操作的,每没分配一块后,把空闲块数减1,但要把一组中的第一个空闲块分配除去之前应该把登记在该块中的下一组的块号及块数保存到专用快中(原专用块中的信息已经无用,因为它指示的一组空闲块都已被分配)。

具体算法流程如下:

查询L单元内容(空闲块数)

当空闲块数>1i=L+空闲块数;

从i单元得到一个空闲块号;

把该块分配给申请者;

空闲块数减一;

当空闲块数=1

取出L+1单元内容(第一块块号或0);

其值=0无空闲块,申请失败提示;

其值!

=0把该块内容复制到专用块内;

把该块分配给申请者;

专用块的内容读到内存L开始的区域。

3.1.4磁盘块的回收

释放空闲块的时候与回收正好相反,从后往前分配,先将释放的空闲块放到第一组,第一组满了,在第一组前再开辟一组,之前的第一组变成第二组。

具体算法如下:

查询L单元内容(空闲块数)

当空闲块数<32空闲块数加一;

j=L+空闲块数;

归还该块给j单元;

当空闲块数=32

把内存中登记的信息写入归还块中;

把归还号填入L+1单元;

把L单元置1。

3.2文件

3.2.1查找同名文件

查找是否存在同名文件只需查询索引表即可。

具体算法如下:

分割路径;

如果路径长度为6,代表三级文件

For(inti=0;i<256;i++)

找寻表zmy_path的第一列,看是否与目标文件符合;

如果符合,继续查找zmy_path的第二列,看是否与目标文件符合;

如果符合,继续查找zmy_path的第三列,看是否与目标文件符合;

如果符合,继续查找zmy_path的第四、五列,看是否与目标文件符合;

如果符合,返回找到的行号i;

如果不符合,返回-1;

如果路径长度为5,代表二级文件

For(inti=0;i<256;i++)

找寻表zmy_path的第一列,看是否与目标文件符合;

如果符合,继续查找zmy_path的第二列,看是否与目标文件符合;

如果符合,继续查找zmy_path的第三、四列,看是否与目标文件符合;

如果符合,返回找到的行号i;

如果不符合,返回-1;

如果路径长度为4,代表根级文件

For(inti=0;i<256;i++)

找寻表zmy_path的第一列,看是否与目标文件符合;

如果符合,继续查找zmy_path的第二、三列,看是否与目标文件符合;

如果符合,返回找到的行号i;

如果不符合,返回-1;

该算法既可以用来找是否存在同名文件,也可以用于查找目标文件是否存在。

3.2.2移动文件

由于该系统的目录为三级目录,故移动文件时会出现5种情况:

(1)、两个一级目录下文件;

(2)、一个一级目录下文件,一个二级目录下文件;

(3)、两个二级目录下文件;

(4)、一个二级目录下文件,一个三级目录下文件;

(5)、两个三级目录下文件。

每种情况又分为同目录下文件,不同目录下文件。

具体算法如下:

查找目标文件是否存在;

如果目标文件不存在

出错提示;

如果目标文件存在

返回源文件在目录表中的位置,以修改目录登记项;

如果是两个一级目录下文件

如果是相同目录下的文件

修改目录项;

如果是不同目录下的文件

调用copy函数,将源文件复制到目标处;

调用delete函数,删除源文件;

修改目录项;

如果是一个一级目录下文件,一个二级目录下文件

如果是“moveX:

\a.txtY:

\folder\a.txt”情况

如果是不同根目录

查找目标文件夹是否存在,源文件在目标文件夹中是否存在同名文件;

如果不存在同名文件

如果目标文件夹不存在,创建目标文件夹;

删除源文件;

修改目录项;

如果是同一根目录

查找目标文件夹是否存在,源文件在目标文件夹中是否存在同名文件;

如果目标文件夹存在,无重名文件

修改登记项;

否则

创建目标文件夹;

修改目录项;

如果是“moveY:

\folder\a.txtX:

\a.txt”情况

如果是同一根目录

修改登记项;

如果是不同根目录

调用拷贝函数复制文件;

修改登记项;

如果是两个二级目录下文件

如果是同目录下文件

修改登记项;

如果是不同目录下文件

查看目标文件夹是否存在;

如果不存在创建目标文件夹;

修改登记项;

如果是一个二级目录下文件,一个三级目录下文件

查看是否是“moveY:

\folder\a.txtX:

\folder\folder\a.txt”情况

如果是不同根目录

查找目标文件夹是否存在,源文件在目标文件夹中是否存在同名文件;

如果不存在同名文件

如果目标文件夹不存在,创建目标文件夹;

删除源文件;

修改目录项;

如果是同一根目录

查找目标文件夹是否存在,源文件在目标文件夹中是否存在同名文件;

如果目标文件夹存在,无重名文件

修改登记项;

否则

创建目标文件夹;

修改目录项;

查看是否是“moveX:

\folder\folder\a.txtY:

\folder\a.txt”情况

如果是同一根目录

修改登记项;

如果是不同根目录

调用拷贝函数复制文件;

修改登记项;

如果是两个三级目录下文件

如果是同目录下文件

修改登记项;

如果是不同目录下文件

查看目标文件夹是否存在;

如果不存在创建目标文件夹;

修改登记项;

其他文件命令由本组另一个组员完成。

3.3目录

该系统支持三级目录结构。

目录操作包括创建目录,删除目录。

3.2.1删除目录

删除目录要考虑目录中内容的删除。

具体算法如下:

查看目标目录是否存在

如果目标存在

查看该目录是几级目录

如果是三级目录

查找该目录下的文件;

调用delete函数删除文件;

如果是二级目录

查找该目录下是否还存在目录

如果还存在目录,查找次目录下的文件,调用delete函数删除文件

如果不存在其他目录,查找目标目录下的文件,调用delete函数删除文件。

如果目标不存在

出错提示;

4体会与收获

通过本次实验我对操作系统对文件、目录的物理组织,逻辑组织有了更深刻的理解。

但还是存在着很多问题。

首先,这个实验的索引有待完善。

并没有实现多级索引,而是为了编程的方便采用了最简单的索引方式。

其次,这个实验的很多数据结构的设计没有考虑到效率问题,而是以较大的空间换取编程实现的方便。

这是非常不理想的。

希望以后有机会再对本实验进行完善。

虽然这个实验做得不够完善,但是这是对我意志品质的重大考验,是我对个人能力有了新的认知。

人的能力是因自我认知的不同而不同,人的命运是因选择的不同而不同。

参考文献

操作系统习题解答与实验指导.王煜,张明,刘振鹏.中国铁道出版社.2007

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

当前位置:首页 > 工程科技 > 能源化工

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

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