操作系统课程设计由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“操作系统课程设计完整”。
引言
操作系统是计算机科学与技术专业的主要专业基础课和主干课。操作系统对计算机系统资源实施管理,是所有其他软件与计算机硬件的唯一接口,所有用户在使用计算机时都要得到操作系统提供的服务。
通过模拟操作系统的全部或者部分功能的实现,加深对操作系统工作原理和操作系统实现方法的理解,达到练习编程的目的,提高学生运用理论知识分析问题、解决问题的能力,为学生从事科学研究和独立负担计算机及其应用方面的工作打好扎实的基础。
0 河北大学工商学院2011级操作系统课程设计论文(设计)课程设计任务及要求
2.1 设计任务
模拟采用多道程序设计方法的单用户操作系统,该操作系统包括进程管理、存储管理、设备管理、文件管理和用户接口四部分。
本部分要求实现文件的逻辑结构、文件的物理结构、目录结构、磁盘分配和回收、文件的保护和用户接口。
2.2 实现方法和原理
2.2.1文件的逻辑结构:
文件的逻辑结构采用流式结构; 文件均采用文本文件;
系统中有两种文件,一种是存放任意字符的文件,一种是可执行文件。可执行文件的内容就是模拟系统内进程的程序体。
文件中要有一种特定命令的“可执行”文件,文件中的命令非常简单,包括: x=?;
给x赋值一位数 x++;
x加1 x--;
x减1!??;
第一个?为A,B,C中某个设备,第二个?为一位数,表示使用设备的时间(由于没有实际设备,所以无法知道设备何时工作完成,所以假定一个数,这个数随着系统时间增加而递减,减到0时,认为是设备工作完成);
end.表示文件结束,同时将结果写入文件out,其中包括文件路径名和x的值。2.2.2 磁盘模拟:
用一个文件disk模拟磁盘,磁盘的每个盘块64字节,模拟磁盘共有128块。第0、1块存放文件分配表,第2块存放根目录,其余存放子目录和文件。2.2.3目录结构
目录结构采用树型目录结构,目录项内容共十六个字节。①目录项内容(8个字节): 目录名、文件名:3个字节;河北大学工商学院2011级操作系统课程设计论文(设计)
扩展名:1个字节(可执行文件扩展名为e,目录没有扩展名); 目录、文件属性:1字节; 起始盘块号:1个字节;
文件长度:2字节(目录没有长度)。②根目录
根目录位置固定,为磁盘第2块,大小固定,共8项,占用模拟磁盘第2块; ③子目录
位置不固定,大小不固定。2.2.4磁盘分配
磁盘的分配采用链接结构(显式链接)的分配方式。系统采用文件分配表方式记录磁盘空间的使用情况和链接结构的指针。
因为磁盘有占用磁盘由128块,所以文件分配表中一项需要1字节,而磁盘由128块,因而需要128项,所以模拟磁盘空间中的第0、1块被用来存放文件分配表。2.2.5用户接口
用户接口提供用户命令接口,要求实现以下命令: 创建文件:create 拷贝文件:copy 删除文件:delete 移动文件:move 显示文件:type 编辑文件:edit 改变文件属性:change 磁盘格式化命令 format 建立目录:makdir 改变目录路径:chadir
删除空目录:rdir 删除目录:deldir(既可删除空目录又可删除非空目录)河北大学工商学院2011级操作系统课程设计论文(设计)
磁盘分区命令:fdisk 运行可执行文件:可执行文件的文件名(可创建进程)。
上述命令在实际系统中都是需要建立进程才可以实现的,这里由于模拟系统的能力达不到,所以除运行可执行文件需要建立进程外,其他指令执行不必在模拟系统中建立进程,可直接执行。
注意打开文件表。2.2.6屏幕显示
如图所示,屏幕显示要求包括:
用户命令接口,用于系统运行时用户输入命令; 磁盘目录显示,要求显示磁盘的树型目录结构;
磁盘使用情况,显示磁盘每一个磁盘块的空间是占用还是空闲。
3程序设计与实现
3.1目录结构的实现
3.1.1创建目录
#region CreateMenu(建立目录)
public void CreateMenu(string pathname,string harddisk)3.1.2删除空目录
删除空目录首先要找到该目录,如果目录不存在,执行指令失败;如果存在,但是根河北大学工商学院2011级操作系统课程设计论文(设计)
目录或非空目录显示不能删除,操作失败;若是非空子目录,则删除器目录项并回收对应空间。删除空目录的过程和删除文件的过程相似。
3.1.3删除目录
#region DeleteMenu(删除目录)
public void DeleteMenu(string pathname, string harddisk)
{
if(Search(pathname,harddisk)== 1)
{
MeageBox.Show(“文件路径不正确!”, “注意”, MeageBoxButtons.OK, MeageBoxIcon.Exclamation);3.2文件 3.2.1创建文件
#region CreateFile(建立文件)public void CreateFile(string pathname, byte attribute, byte addre, char length, string harddisk){
if(attribute == 3 || attribute == 5){
MeageBox.Show(“只读性质,建立失败!”, “注意”, MeageBoxButtons.OK,MeageBoxIcon.Exclamation);
return;} 3.2.2拷贝文件
#region CopyFile(复制文件,只复制FCB)
public void CopyFile(string pathname1, string pathname2, string harddisk)
{
string[] pnames = pathname1.Split(new char[] { '', '.' });
string halfpathname = pathname1.Remove(pathname1.Length1]);
UTF8Encoding utf = new UTF8Encoding();4 河北大学工商学院2011级操作系统课程设计论文(设计)
byte[] name = utf.GetBytes(pnames[pnames.Length1];
CreateFile(pathname2, buffer.Attribute, buffer.Addre, buffer.Length,harddisk);
}
#endregion 3.2.3删除文件 #region DeleteFile(删除文件)
public void DeleteFile(string pathname, string harddisk)
{
if(Search(pathname,harddisk)==1)
{
MeageBox.Show(“文件路径不正确!”, “注意”, MeageBoxButtons.OK, MeageBoxIcon.Exclamation);
return;
}
else if(Search(pathname,harddisk)== 2)
//文件存在{
string[] pnames = pathname.Split(new char[] { '', '.' });
string halfpathname = pathname.Remove(pathname.Length2]);
int disknum;
if(pnames.Length == 3)
//c:aaa.t
{
disknum = 3;
}
else
{
disknum = Search(halfpathname,harddisk);
}
int item = FindItem(disknum, name, attribute,harddisk)[0];
int addre = FindItem(disknum, name, attribute,harddisk)[1];
byte addr = Convert.ToByte(addre);
DeleteFCB(disknum, item,harddisk);
//删除FCB
if(addr==0)
{
return;3.2.4移动文件
#region CutFile(移动文件)
public void CutFile(string pathname1, string pathname2, string harddisk)
{
CopyFile(pathname1, pathname2,harddisk);//复制FCB到新目录下
string[] pnames = pathname1.Split(new char[] { '', '.' });
string halfpathname = pathname1.Remove(pathname1.Length1]);
UTF8Encoding utf = new UTF8Encoding();6 河北大学工商学院2011级操作系统课程设计论文(设计)
byte[] name = utf.GetBytes(pnames[pnames.Length1)+ 8 *(Itemnumber-1), SeekOrigin.Begin);
Disk.Write(buffer.Name, 0, buffer.Name.Length);
Disk.Seek(0, SeekOrigin.Current);
Disk.WriteByte(buffer.Type);
Disk.Seek(0, SeekOrigin.Current);
Disk.WriteByte(buffer.Attribute);
Disk.Seek(0, SeekOrigin.Current);
Disk.WriteByte(buffer.Addre);7 河北大学工商学院2011级操作系统课程设计论文(设计)
Disk.Seek(0, SeekOrigin.Current);
Disk.WriteByte(Convert.ToByte(buffer.Length));
}
Disk.Close();
}
#endregion
3.2.7显示文件
#region ReadFile(读文件画节点)
public void ReadFile(TreeView treeView, ContextMenuStrip contextMenuStrip,ImageList imageList)
{
treeView.Nodes.Clear();
//删除集合中所有树节点
//重新添加树节点
treeView.ImageList = imageList;
TreeNode root = new TreeNode(“计算机”, 0, 0);
TreeNode node_C = new TreeNode(“本地磁盘C”, 4, 4);
TreeNode node_D = new TreeNode(“本地磁盘D”, 4, 4);
node_C.ContextMenuStrip = contextMenuStrip;
node_D.ContextMenuStrip = contextMenuStrip;
treeView.Nodes.Add(root);
root.Nodes.Add(node_C);
root.Nodes.Add(node_D);
DrawTree(node_C, 3,“disk1.txt”,contextMenuStrip);
DrawTree(node_D, 3, “disk2.txt”,contextMenuStrip);
treeView.ExpandAll();
}
#endregion
4.程序运行部分截图
4.1主页面河北大学工商学院2011级操作系统课程设计论文(设计)
4.2创建文件
4.3编辑文件河北大学工商学院2011级操作系统课程设计论文(设计)
4.4创建目录 总结
在此系统我主要模拟的是文件部分。通过编写此系统,采用了c#语言。但是,在实现此系统中,一方面因为我对c#这门语言掌握的不是很熟练,另外一方面,对操作系统理解的不够深入以至于部分功能没有实现,让我发现了自己的不足,从而要在以后的学习中更加努力,不短提高自己个方面的能力。河北大学工商学院2011级操作系统课程设计论文(设计)
装
订
操作系统课程设计注意事项:0.请每位同学必须按时提交课程设计报告(包括电子版和纸质版),算入期末成绩1.在三个题目中选择一个2.如果选择题目(一)进程调度算法,要求实现其中2个以上(......
长春理工大学 软件学院 0813111班 27号姓名:丁为胜 一. 概述1、课程设计目的及任务课程设计地点及要求每个学生一台微机,需要安装windows98或windows2000操作系统,配备VC、VB、j......
《操作系统》/《操作系统课程设计》课设指导书《操作系统》 《操作系统课程设计》指导信息技术学院课设书《操作系统》/《操作系统课程设计》课设指导书《操作系统》/《操作......
湖北民族学院信息工程学院11级计算机专业操作系统课程设计(操作系统课程设计)连续动态分区内存管理模拟实现学生姓名: 韩 慧 学生学号: 031140312 班 级: 031140--30311401、02、......
课程实验报告课程名称:操作系统原理课程设计专业班级: 学号: 姓名 指导教师: 报告日期:计算机科学与技术学院目录1.实验目的 .......................................................