操作系统课程设计

发布 2022-10-05 11:18:28 阅读 9965

操作系统原理课程设计报告。

模拟设计磁盘文件的链接存储结构。

学生姓名。班级。

学号。同组成员。

时间 指导老师。

2024年 1月 1日。

目录。一、课程设计目标 2

二、课题内容 2

三、设计思路 2

1、开发工具 2

2、系统模块图 2

3. 相关知识 3

4、结构体 3

四、源** 4

五、运行与测试 11

1.创建、打开、写、读文件 11

2.位示图 11

3.删除文件、退出系统 12

六、心得体会 12

操作系统课程设计是计算机专业的专业课程,通过课程设计使学生进一步巩固课堂所学知识,全面熟悉、掌握操作系统的基本设计方法和技巧,进一步提高分析问题、解决问题及上机操作能力,为将来从事计算机工作打下一定的专业基础。通过本课题,深入理解文件物理结构与存取方法之间的关系,掌握磁盘空间管理与文件分配过程间的联系,从而更好地掌握文件系统概念。

其中模拟设计磁盘文件的链接存储结构的目的如下:

1.了解磁盘文件的管理方式。

2.掌握文件物理结构和存取方式。

3.明晰文件的逻辑地址和物理地址。

1.磁盘文件的管理采用显式链接结构,将文件占用的物理块号和链接指针记录在一张文件分配表(fat)中。文件第一块的块号记录在索引结点中。文件目录只记录文件名和索引结点的编号。

索引结点的结构如下:

2.假定磁盘存储空间共有100个物理块用于存放数据, 目录文件和索引结点可直接访问,不存放在这100个块中。

3.一个物理块可存放3个文件逻辑记录,并且假设文件逻辑记录定长。

4.要求用键盘输入的方式模拟用户读写请求,输入格式如下:

create(filename)

write(filename, text, logical_record_no)

read (filename, logical_record_no)

delete(filename)

其中filename是要读写的文件名,text是写入的内容,logical_record_no 是逻辑记录号。create、write、read、delete分别表示创建一个文件,向文件的某个逻辑记录写,从文件的某个逻辑记录读,删除一个文件。

5.文件存储空间管理采用位示图(位示图为7行,16列)的方式。

6.要求程序可以打印fat以及位示图的情况。

1、开发工具:microsoft visal c++ 6.0

1)显式链接。

这是指把用于链接文件各物理块的指针,显式地存放在内存的一张链接表中。该表在整个磁盘仅设置一张。表的序号是物理盘块号,从0开始,直至n-1;n为盘块总数。

在每个表项中存放链接指针,即下一个盘块号。在该表中,凡是属于某一文件的第一个盘块号,或者说是每一条链的链首指针所对应的盘块号,均作为文件地址被填入相应文件的fcb的“物理地址”字段中。由于查找记录的过程是在内存中进行的,因而不仅显著地提高了检索速度,而且大大减少了访问磁盘的次数。

由于分配给文件的所有盘块号都放在该表中,故把该表称为文件分配表fat(file allocation table)。

2)位示图。

位示图是利用二进制的一位来表示磁盘中一个盘块的使用情况。当其值为“0”时,表示对应的盘块空闲;为“1”时,表示已分配。有的系统把“0”作为盘块已分配的标志,把“1”作为空闲标志。

(它们在本质上是相同的,都是用一位的两种状态来标志空闲和已分配两种情况。)磁盘上的所有盘块都有一个二进制位与之对应,这样,由所有盘块所对应的位构成一个集合,称为位示图。通常可用m*n个位数来构成位示图,并使m*n等于磁盘的总块数。

3)索引结点。

在检索目录文件的过程中只用到了文件名,仅当找到一个目录项时,才需从该目录项中读出该文件的物理地址。而其他一些对该文件进行描述的信息,在检索目录时一概不用。显然,这些信息在检索目录时不需调入内存。

为此有的系统便采用了把文件名与文件描述信息分开的方法,亦即,使文件描述信息单独形成一个称为索引结点的数据结构,简称i结点。在文件目录中的每个目录项仅由文件名和指向该文件所对应的i结点的指针所构成。

struct fcb

char fname[16]; 文件名。

int type; /1代表普通文件2代表目录文件0表示空文件。

int size; /文件大小。

int fatherblocknum; /当前的父目录盘块号。

int firstblocknum; /该文件第一个盘块号

int currentblocknum; /当前的盘块。

int lastblocknum;

#include <>#include <>#include

#include #include <>

using namespace std;

struct fcb

const char* filepath = c:\\myfiles";const int blocksize = 512;

const int open_max = 5; const int blockcount = blocksize/sizeof(int);

const int disksize = blocksize*blockcount;

const int blockfcbcount = blocksize/sizeof(fcb);

const int m=16; const int n=blockcount/m; int openfilecount = 0;

struct openlist

struct dirfile

struct disk

else }

memset(data,0,sizeof(data));数据区}};

操作系统课程设计

课程设计 河北大学工商学院。装。订。线。操作系统课程设计。题目 操作系统课程设计 学院工商学院 学部信息科学与工程 专 操作系统课程设计。题目 操作系统课程设计 学院工商学院 学部信息科学与工程 专业计算机类 学号 姓名。指导教师。年 6 月 24 日。设备管理 2 2.1设计任务2 2.2设计要求...

操作系统课程设计

银行家算法模拟。系别 班级 组员 银行家算法模拟。1.课程设计目的。通过本次课程设计,加深对最经典的避免死锁的银行家算法的理解,掌握死锁形成必要条件 安全状态等概念的理解,通过用c语言编程模拟该算法,并在windows平台上实现,更好地掌握操作系统的原理及实现方法。2.任务及要求。设n为系统进程的个...

操作系统课程设计

学生实习实训报告。实习类型 操作系统课程设计 学号 0901110005 学生姓名 田兴杰 指导教师 曹春梅 专业班级 信息安全技术0901班 院 部 电子信息系 2011年 1 月 7日。实习实训成绩评定表。目录。目录3 摘要4关键字4 1.1虚拟机简介5 1.1.1 一般意义的虚拟机5 1.1....