操作系统-课程设计任务(二):实验请求页式存储管理

合集下载

操作系统的虚拟存储管理与页式存储技术

操作系统的虚拟存储管理与页式存储技术

操作系统的虚拟存储管理与页式存储技术操作系统是计算机系统中非常重要的一个组件,它负责管理计算机硬件和软件资源,协调各个应用程序的执行,以及提供用户与计算机之间的接口。

虚拟存储管理是操作系统中的一个核心功能,它通过将主存(内存)和辅存(磁盘)结合起来,在有限的主存空间中管理多个应用程序的运行和数据存储。

页式存储技术是一种常用的虚拟存储管理技术,下面将详细介绍虚拟存储管理以及页式存储技术的原理和实现方式。

一、虚拟存储管理的概念和原理虚拟存储管理是一种用于管理计算机主存和辅存的技术,它将辅存中的数据自动地转移到主存中,并且能够在程序运行时动态地分配和回收主存空间。

通过虚拟存储管理,即使计算机的主存空间有限,也可以实现更多应用程序的并发执行和大规模数据的存储与处理。

虚拟存储管理的主要原理是将辅存中的数据划分为若干个固定大小的存储块,称为页面(Page)。

同样,主存也被划分为与辅存页面大小相同的存储块,称为页框(Page Frame)。

每个页面和页框都有唯一的标识符,用于管理和映射页面到页框的关系。

当一个应用程序需要访问或执行某个页面时,操作系统将其从辅存中读入一个空闲的页框,并将其映射到相应的页面标识符。

如果主存中没有空闲的页框,则需要使用一定的页面置换算法将某个页面替换出去,以腾出页框给新的页面使用。

虚拟存储管理能够有效地利用计算机的主存资源,并且能够在不同的应用程序之间进行数据保护和隔离。

通过页面和页框的映射关系,操作系统可以实现虚拟地址空间的划分和隔离,每个应用程序都认为自己独占了整个计算机的内存空间,而不需要关心其他应用程序的存在。

二、页式存储技术的实现方式页式存储技术是一种基于虚拟存储管理的实现方式,它将主存和辅存划分为固定大小的页面,并且使用页表来管理页面和页框的映射关系。

下面将详细介绍页式存储技术的实现方式。

1. 页面和页框的划分页式存储技术将辅存和主存划分为固定大小的页面和页框,通常大小为2的幂次方,例如2KB、4KB或者16KB等。

计算机操作系统课程设计教学大纲

计算机操作系统课程设计教学大纲

《计算机操作系统》课程设计教学大纲课程编号:08120070课程名称:计算机操作系统/Computer Operating System课程总学时/学分:56/3.5(其中理论46学时,实验10学时课程设计时间/学分:1周/1学分适用专业:计算机科学与技术一、设计任务及目的《计算机操作系统》课程是计算机科学与技术专业的一门重要专业基础课,“计算机操作系统课程设计”的目的是在学生学习了《计算机操作系统》课程之后理论联系实践,一方面延续《计算机操作系统》课程实验的要求,进一步加深与巩固学生对计算机操作系统中概念、基本原理、算法的理解和掌握,培养学生对计算机常用操作系统的操作能力;另一方面通过本环节加强培养学生分析、修改和设计操作系统的能力。

期望达到学为所用,并且能进一步提高使用计算机和编程能力。

二、课程设计的基本要求1、了解所选择开发环境的调试功能,掌握跟踪,修改错误的技巧。

2、能根据实际问题选择数据结构,清淅的描述算法。

3、培养良好的编程风格。

4、撰写课程设计报告,按格式要求写出完整的、规范的报告并打印,其中模块图、流程图要清楚规范,特别要求学生独立完成。

三、设计需运用的基本理论设计需运用计算机系统知识、操作系统基本概念、进程管理、存储管理技术、I/O管理技术、文件管理、高级语言程序设计、数据结构等内容。

四、课程设计内容与时间安排1、设计内容:可以选择下面提供的参考选题,也可以自选,如果自选,需要将自选题,目的详细内容以及实现要求提供给老师,老师批准后方可采用。

课题一:进程管理演示设计目的:加深对进程概念及进程管理各部分内容的理解;熟悉进程管理中主要数据结构的设计及进程调度算法、进程控制机构、同步机构及通讯机构的实施。

设计内容:设计一个允许n个进程并发运行的进程管理模拟系统。

该系统包括有简单的进程控制、同步与通讯机构,其进程调度算法可任意选择(优先级调度,时间片轮转,短进程优先中的一种)。

每个进程用一个PCB表示,其内容根据具体情况设置。

操作系统——页式存储管理

操作系统——页式存储管理

操作系统——页式存储管理分区式存储管理最⼤的缺点是碎⽚问题严重,内存利⽤率低。

究其原因,主要在于连续分配的限制,即它要求每个作⽤在内存中必须占⼀个连续的分区。

如果允许将⼀个进程分散地装⼊到许多不相邻的分区中,便可充分地利⽤内存,⽽⽆需再进⾏“紧凑”。

基于这⼀思想,产⽣了“⾮连续分配⽅式”,或者称为“离散分配⽅式”。

连续分配:为⽤户进程分配的必须是⼀个连续的内存空间。

⾮连续分配:为⽤户进程分配的可以是⼀些分散的内存空间。

分页存储管理的思想:把内存分为⼀个个相等的⼩分区,再按照分区⼤⼩把进程拆分成⼀个个⼩部分。

分页存储管理分为:实分页存储管理和虚分页存储管理⼀、实分页式存储管理实分页式存储最⼤的优点是内存利⽤率⾼,与⽬前流⾏的虚分页存储管理相⽐,具有实现简单,程序运⾏快的优点。

⽬前,飞速发展的硬件制造技术使得物理内存越来越⼤,因此我们认为,实分页式存储管理将是⼀种最有发展前途的存储管理⽅式。

1.1、基本原理假设⼀个⼤型饭店,所有的客房都是标准的双⼈间,部分客房已经住进客⼈,现在⼜有⼀个旅游团要求⼊住。

接待员统计了⼀下,对旅游团领队说:“贵团全体成员都能住下,两⼈⼀个房间,但是不能住在同⼀楼层了,因为每层空着的客房不够,更没有⼏个挨着的。

请原谅!”。

对于这样的安排,⼀般⼈不会感到奇怪。

因为旅游团本来就是由⼀位位个⼈或夫妻等组成的,⽽饭店的客房本来也是两⼈⼀间的,两⼈⼀组正好可住在⼀个客房⾥;另外,饭店⼏乎每天都有⼊住的和退房的客⼈,想在同⼀楼层找⼏间挨着的客房实在不容易。

①将整个系统的内存空间划分成⼀系列⼤⼩相等的块,每⼀块称为⼀个物理块、物理页或实页,页架或页帧(frame),可简称为块(block)。

所有的块按物理地址递增顺序连续编号为0、1、2、……。

这⾥的块相当于饭店的客房,系统对内存分块相当于饭店把⼤楼所有的客房都设计成标准的双⼈间。

②每个作业的地址空间也划分成⼀系列与内存块⼀样⼤⼩的块,每⼀块称为⼀个逻辑页或虚页,也有⼈叫页⾯,可简称为页(page)。

操作系统试验指导书

操作系统试验指导书

操作系统实验指导书实验1 存储管理1、实验目的存储管理的主要功能之一是合理地分配空间。

请求页式管理是一种常用的虚拟存储管理技术。

本实验的目的是通过请求页式存储管理中页面置换算法模拟设计,了解虚拟存储技术的技术特点,掌握请求页式存储管理的页面置换算法。

2、实验内容(1)通过随机数产生一个指令序列,共320条指令。

指令的地址按下述原则生成:①50%的指令是顺序执行的;②50%的指令是均匀分布在前地址部分;③50%的指令是均匀分布在后地址部分。

具体的实施方法是:①在 [0,319] 的指令之间随即选取一起点m;②顺序执行一条指令,即执行地址为m+1的指令;③在前地址[0,m+1]中随机选取一条指令并执行,该指令的地址为m′;④顺序执行一条指令,其地址为 m′+ 1;⑤在后地址[m′+ 2,319]中随机选取一条指令并执行;⑥重复上述步骤①-⑤,直到执行320次指令。

(2)将指令序列变换为页地址流设:①页面大小为1k;②用户内存容量为4页到32页;③用户虚存容量为32k。

在用户虚存中,按每k存放10条指令排在虚存地址,即320条指令在虚存中的存放方式为:第0条-第9条指令为第0页(对应虚存地址为[0,9]);第10条-第19条指令为第一页(对应虚存地址为[10,19]);……第310条~第319条指令为第31页(对应虚地址为[310,319])。

按以上方式,用户指令可组成32页。

(3)计算并输出下述各种算法在不同内存容量下的命中率。

①先进先出的算法(FIFO);②最近最少使用算法(LRR);③最佳淘汰算法(OPT)先淘汰最不常用的页地址;④最少访问页面算法(LFR);⑤最近最不经常使用算法(NUR)。

其中③和④为选择内容。

命中率=1-页面失效次数/页地址流长度在本实验中,页地址流长度为320,页面失效次数为每次访问相应指令时,该指令所对应的页不在内存的次数。

3、随机数产生办法,Linux或UNIX系统提供函数strand()和rand(),分别进行初始化和产生随机数。

操作系统-请求页式存储管理实验报告分析解析

操作系统-请求页式存储管理实验报告分析解析

操作系统-请求页式存储管理实验报告分析解析实验背景在计算机系统中,内存是一项很重要的资源。

其中,操作系统需要管理内存,以便为用户进程和内核提供适当的内存空间。

页式内存管理是操作系统能够管理和维护内存的一种方式。

在页式内存管理中,主存分为固定大小的框架,称为页框,而进程的地址空间被分割为固定大小的页。

页式内存管理系统采用了一种称为“请求页式存储”的技术,允许进程只存取正在使用的那些页面。

这样可以节省空间,并且提高了处理器访问内存的速度。

实验环境本次实验使用的操作系统是 Ubuntu 20.04 LTS 操作系统。

实验目标本次实验的主要目标是通过模拟请求页式内存管理系统,来了解和深入理解页式内存管理技术。

本次实验需要完成以下任务:1.编写一个简单的请求页式存储模拟器;2.使用该模拟器对作业和内存进行模拟;3.分析模拟结果并撰写实验报告。

实验过程阅读并理解作业说明在开始实验之前,我们首先需要阅读和了解具体的作业说明。

在本次实验中,我们需要完成一个请求页式存储模拟器,以及使用该模拟器对作业与内存进行模拟。

编写模拟器在了解了作业说明后,我们开始按照作业的要求,编写请求页式内存管理模拟器。

在这里,我们需要使用到Python 编程语言。

实际上,我们在编写该模拟器时,主要分为以下几步:1.文件操作:首先,我们需要通过读取文件中的数据来模拟进程对内存的请求。

在输入文件中,每一行表示一个请求,包含了进程 ID、请求的地址和访问类型。

2.内存分配:接着,我们需要模拟请求页式内存管理系统中对于内存分配的操作,即在访问时,将需要的页加载到内存中,如果内存已满,则需要选择一个页面将其从内存中移除,为新的页面腾出空间。

3.页面置换:如果进行页面置换,则需要选出最久未访问的页面并移出内存,空出空间用于新的页面,这就是所谓的“最久未使用”(LRU)策略。

进行模拟有了模拟器之后,我们就可以针对不同的作业和内存大小进行实验。

在实验的过程中,我们可以观察不同大小的内存和不同的作业怎样影响模拟的结果。

计算机操作系统实验教程

计算机操作系统实验教程

计算机操作系统实验教程徐 慧中国矿业大学(北京)机电与信息工程学院计算机系二0 0四年四月实验简介 (2)实验一进程管理 (3)一、实验目的 (3)二、实验预备内容 (3)三、实验内容 (3)四、预备知识 (3)五实验指导 (4)实验二进程间的通信 (5)一、实验目的 (5)二、实验预备内容 (5)三、实验内容 (5)四、实验预备知识 (5)五、实验指导 (9)实验三存储管理 (10)一、实验目的 (10)二、实验内容 (10)三、实验预备知识 (10)四、实验指导 (13)实验四文件系统设计 (14)一、实验目的 (14)二、实验内容 (14)三、实验提示 (14)四、实验指导 (14)实验简介1.学时:16学时2.先修课程:计算机导论 ,高级语言程序设计 , 数据结构3.课程性质:专业基础必修课4.适合专业:计算机科学与技术5.内容简介:操作系统上机课程通Linux操作系统各自的编程接口,提供编程实例,由此加深学生对操作系统工作原理的领会和对操作系统实现方法的理解,并且使学生在程序设计方面得到基本的训练。

上机课程主要针对课本重点内容,以提高学生的动手能力,加深学生对相关的内容的理解而展开的实验课程。

在Linux环境下提供了关于操作系统的命令接口程序shell的编制、存储管理相关内容的实路、作业调研系统以及虚拟磁盘文件系统管理4个实验。

实验环境是基于Linux操作系统的。

在计算机软硬件课程的设置上,它起着承上启下的作用。

其特点是概念多、较抽象和涉及面广,其整体实现思想和技术又往往难于理解。

6.参考书:张尧学,史美林 《计算机操作系统课程设计实验指导》 清华大学出版社 2000年实验一 进程管理一、实验目的(1)加深对进程概念的理解,明确进程的程序的区别;(2)可进一步认识并发执行的实质;(3)分析进程争用资源的现象,学习解决进程互斥的方法;(4)了解LINUX系统中进程通信的进本原理;二、实验预备内容(1)阅读LINUX 的sched.h源码文件,加深对进程管理概念的理解;(2)阅读LINUX的fork.c源码,分析进程的创建过程;三、实验内容(1)进程创建编写一段程序,使用系统调用fork()创建两个子进程.(2)进程的控制修改以编写的程序,将每个进程输出一个字符改为输出一句话,观察程序执行时屏幕上出现的现象;(3)编写一段程序实现软中断;(4)进程的管道通信;四、预备知识现代操作系统的重要特点是程序的并发执行,及系统所拥有的资源被共享和系统用户随机地使用系统。

实验六请求分页存储管理

实验六请求分页存储管理

实验六:请求分页存储管理一.实验目的深入理解请求页式存储管理的基本概念和实现方法,重点认识其中的地址变换、缺页中断、置换算法等实现思想。

二.实验属性该实验为综合性、设计性实验。

三.实验仪器设备及器材普通PC386以上微机四.实验要求本实验要求2学时完成。

本实验要求完成如下任务:(1)建立相关的数据结构:页表、页表寄存器、存储块表等;(2)指定分配给进程的内存物理块数,设定进程的页面访问顺序;(3)设计页面置换算法,可以选择OPT、FIFO、LRU等,并计算相应的缺页率,以比较它们的优劣;(4)编写地址转换函数,实现通过查找页表完成逻辑地址到物理地址的转换;若发生缺页则选择某种置换算法(OPT、FIFO、LRU等)完成页面的交换;(5)将整个过程可视化显示出来。

实验前应复习实验中所涉及的理论知识和算法,针对实验要求完成基本代码编写并完成预习报告、实验中认真调试所编代码并进行必要的测试、记录并分析实验结果。

实验后认真书写符合规范格式的实验报告(参见附录A),并要求用正规的实验报告纸和封面装订整齐,按时上交。

三、设计过程3.1算法原理分析OPT算法是未来最远出现,当当前内存中没有正要访问的页面时,置换出当前页面中在未来的访问页中最远出现的页面或再也不出现的页面。

FIFO算法是先进先出,当当前内存中没有正要访问的页面时,置换出最先进来的页面。

LRU算法是最近最久未使用,当当前内存中没有正要访问的页面时,置换出在当前页面中最近最久没有使用的页面。

3.2数据定义int length,num_page,count,seed; //length记录访问串的长度,num_page页面数,count记录缺页次数int result[20][30],order[30],a[10]; //result记录结果,order存储访问串,a存储当前页面中的值int pos1,flag1,flag2,flag3; //pos1位置变量,flag1等为标志变量 char result1[30]; //记录缺页数组 void opt() //最佳void fifo() //先进先出bool search(int n) //查找当前内存中是否已存在该页3.3流程图与运行截图图6.1 FIFO ()函数流程图;否是 是否 开始得到执行的指令指令是否在内存中最先存入指令被淘汰下面是否还有指令 结束得出命中率图2.2 OPT算法流程图四、小结本次课程设计目的是通过请求页式管理中页面置换算法模拟设计,了解虚拟存储技术的特点,掌握请求页式存储管理的页面置换算法。

操作系统实验报告

操作系统实验报告

操作系统实验报告专业:软件工程姓名:李程星学号:2011221104220092实验一操作系统的用户界面LINUX操作系统提供了图形用户界面和命令行界面,本实验主要熟悉命令行界面,为后续的实验编程做准备。

一、系统启动1. 开机,选择进入Linux系统,约40秒后系统启动成功,系统提示输入用户名:user输入口令:111111 然后进入Linux系统桌面。

2.进入Linux命令行方式单击小红帽图标,选择“系统工具”,单击“终端”图标,出现Linux的shell提示符.....@......$,,即可输入命令。

实验二进程管理一、实验目的(1)加深对进程概念的理解,明确进程和程序的区别。

(2)进一步认识并发执行的实质。

二、实验内容1、进程的创建执行下面的程序,分析执行的结果。

#include <stdio.h>main(){ int i;printf("just 1 process.\n");i=fork();if (i==0)printf("I am child.\n");elseif (i>0)printf("I am parent.\n");elseprintf("fork() failed.\n");printf("program end.\n");}输出结果:just 1 process.I am parent.program end.I am a child.program end.2、进程的同步执行下面的程序,分析执行的结果。

#include <stdio.h>main(){ int i;printf("just 1 process.\n");i=fork();if (i>0){printf("I am parent.\n");wait();}elseif (i==0) {printf("I am child.\n");exit(1);}printf("program end.\n");}输出结果:just 1 process.I am parent.I am child.program end.3、进程的延迟执行下面的程序,分析执行的结果。

操作系统课程设计模拟请求页式存储管理

操作系统课程设计模拟请求页式存储管理

操作系统课程设计报告项目:模拟请求页式存储管理一、目的和要求1、实训目的(1)通过编写和调试存储管理的模拟程序以加深对存储管理方案的理解。

熟悉虚存管理的各种页面淘汰算法(2)通过编写和调试地址转换过程的模拟程序以加强对地址转换过程的了解。

2、实训要求编写并调试完成请求页式存储管理程序。

页面置换算法:最佳置换算法(OPT)、先进先出算法(FIFO)和最近最少用算法(LRU)。

要求打印每个页面置换算法的页面置换变化示意图、缺页中断次数和缺页中断率,以比较各种算法的优缺点。

二、设计思路及过程1、概要设计1.1 问题概述根据三种不同的置换算法(FIFO、LRU、OPT),依据其不同的算法方式,分别计算该页面引用串在不同算法下的缺页次数与缺页率,并显示各页面的变化情况。

1.2 内容分析对于该课程设计中模拟的请求页式存储管理的页面置换过程,只要掌握其中最基本的三种算法,包括FIFO、LRU及OPT。

另外,对于同一个页面引用串,要求能够调用不同的算法对它进行操作。

2、过程设计2.1模块设计在下图的主模块设计图中,只注重描绘了请求页式存储管理的三种主要算法,未描绘出细节部分。

图2.1 请求页式存储管理的主模块设计图2.2 算法原理分析要成功实现算法,首先要知道各个方法是怎么做的,即原理是怎样的,下面是三种算法的原理。

(1)FIFO算法:该算法认为刚被调入的页面在最近的将来被访问的可能性很大,而在主存中滞留时间最长的页面在最近的将来被访问的可能性很小。

因此。

FIFO算法总是淘汰最先进入主存的页面,即淘汰在主存中滞留时间最长的页面。

(2)LRU算法是最近最久未使用,当当前内存中没有正要访问的页面时,置换出在当前页面中最近最久没有使用的页面。

该算法总是选择最近一段时间内最长时间没有被访问过的页面调出。

它认为那些刚被访问过的页面可能在最近的将来还会经常访问他们,而那些在较长时间里未被访问的页面,一般在最近的将来再被访问的可能性较小。

页式存储管理实验报告

页式存储管理实验报告

页式存储管理一、实验目的:掌握分页式存储管理的基本概念和实现方法。

要求编写一个模拟的分页式管理程序,并能对分页式存储的页面置换算法进行编写和计算各个算法的缺页率。

二、程序设计:首先创建页面链指针数据结构,并设计页面映像表,采用数组的方法给定页面映像。

申请缓冲区,将一个进程的逻辑地址空间划分成若干个大小相等的部分,每一部分称做页面或页。

每页都有一个编号,叫做页号,页号从0开始依次编排,如0,1,2……。

设置等大小的内存块。

初始状态:将数据文件的第一个页面装入到该缓冲区的第0块。

设计页面置换算法,这里分别采用最佳页面置换算法OPT和最近最久未使用置换算法LRU,并分别计算它们的缺页率,以比较它们的优劣。

三、算法说明:执行程序时,当主存没有可用页面时,为了选择淘汰主存中的哪一页面,腾出1个空闲块以便存放新调入的页面。

淘汰哪个页面的首要问题是选择何种置换算法。

该程序采用人工的方法选择,依置换策略选择一个可置换的页,并计算它们的缺页率以便比较。

/*分页式管理实验-源程序*/#include"stdio.h"#define N 16#define num 5 /*进程分配物理块数目*/int A[N]={1,2,3,4,5,6,7,8,5,2,3,2,7,8,1,4}; /*页表映像*/typedef struct page{ int address; /*页面地址*/struct page *next;}page;struct page *head,*run,*rear;void jccreat() /*进程分配物理块*/{ int i=1;page *p,*q;head=(page *)malloc(sizeof(page)); p=head;for(i=1;i<=num;i++) { q=(page *)malloc(sizeof(page));p->next=q; q->address=0; q->next=NULL; p=q; }rear=p;}int search(int n){page *p;int i=0;p=head;while(p->next){if(p->next->address==n){printf("Get it at the page %d\n",i+1);run=p;return 1;}p=p->next;i++;}return 0;}void changeOPT(int n,int position){int i;int total=0;int flag=1;int distance[num];int MAX;int order=0;page *p,*q;p=head->next;q=head->next;for(i=0;i<num;i++)distance[i]=100;i=0;while(p){if(p->address==0){flag=0;break;}p=p->next;i++;}if(!flag){p->address=n;printf("Change the page %d\n",i+1);}else{while(q){for(i=position;i<N;i++){if(q->address==A[i])distance[total]=i-position;}total++;q=q->next;}MAX=distance[0];for(i=0;i<num;i++){if(distance[i]>MAX){MAX=distance[i];order=i;}}printf("Change the page %d\n",order+1);i=0;while(p){if(i==order)p->address=n;i++;p=p->next;}}}void changeLRU(int n){int i=0;int flag=1;page *p,*delect;p=head->next;while(p){if(p->address==0){flag=0;p->address=n;printf("Change the page %d\n",i+1);break;}p=p->next;i++;}if(flag){delect=head->next;head->next=delect->next;printf("Delect from the head, and add new to the end.\n");delect->address=n;rear->next=delect;rear=delect;rear->next=NULL;}}float OPT(){int i;int lose=0;float losef;float percent;for(i=0;i<N;i++){if(search(A[i])==0){lose++;changeOPT(A[i],i);}}losef=lose;percent=1-(losef/N);return percent;}float LRU(){int i;int lose=0;float losef;float percent;page *p;for(i=0;i<N;i++){if(search(A[i])==0){lose++;changeLRU(A[i]);}else{p=run->next;run->next=p->next;rear->next=p;rear=p;rear->next=NULL;printf("Move it to end of queue.\n");}}losef=lose;percent=1-(losef/N);return percent;}main() /*主函数部分*/{float percent;int choice;printf("Select the arithmetic:\n(1)OPT\n(2)LRU\nyour choice is:"); scanf("%d",&choice);/*选择页面置换算法*/jccreat(); /*创建进程*/if(choice==1) /*采用OPT算法置换*/{percent=OPT(); /*计算OPT时的缺页率*/ printf("The percent of OPT is %f",percent);}else if(choice==2) /*采用LRU算法置换*/ {percent=LRU(); /*计算LRU时的缺页率*/ printf("The percent of OPT is %f",percent);}else printf("Your choice is invalid.");getch();}四.运行结果:最佳(Optimal)置换算法:最近最久未使用(LRU)置换算法:五、心得体会掌握分页式存储管理的基本概念和实现方法。

操作系统课程设计题目及任务

操作系统课程设计题目及任务

题目1:时间片轮转调度算法模拟要求:用实验方法模拟单处理机系统的进程调度,并采用时间片轮转调度算法作为进程调度算法。

具体任务:1、理解掌握进程调度实现所涉及到的主要问题:如何组织进程、如何实现处理机调度。

进程控制块的作用和结构,进程控制块的链表组织。

进程调度程序包含从进程就绪队列选择并摘取进程、给该进程分配处理机。

2、设计进程控制块相关数据结构,进程状态跃迁的相关模拟;3、实现时间片进程调度算法模拟程序设计、编码及调试。

题目2:静态优先级调度算法模拟要求:用实验方法模拟单处理机系统的进程调度,并采用静态优先级调度算法作为进程调度算法。

具体任务:1、理解掌握进程调度实现所涉及到的主要问题:如何组织进程、如何实现处理机调度。

进程控制块的作用和结构,进程控制块的链表组织。

进程调度程序包含从进程就绪队列选择并摘取进程、给该进程分配处理机。

2、设计进程控制块相关数据结构,进程状态跃迁的相关模拟;3、实现静态优先级调度算法模拟程序设计、编码及调试。

题目3:最短剩余时间优先(动态优先)调度算法模拟要求:用实验方法模拟单处理机系统的进程调度,并采用最短剩余时间优先调度算法作为进程调度算法。

具体任务:1、理解掌握进程调度实现所涉及到的主要问题:如何组织进程、如何实现处理机调度。

进程控制块的作用和结构,进程控制块的链表组织。

进程调度程序包含从进程就绪队列选择并摘取进程、给该进程分配处理机。

2、设计进程控制块相关数据结构,进程状态跃迁的相关模拟;3、实现最短剩余时间优先调度算法模拟程序设计、编码及调试。

题目4 作业调度设计1、目的本实验的目的是通过模拟作业调度算法的设计加深对作业管理基本原理的理解。

2、内容⑴在后备作业队列中,输入5个作业各自运行所需要的时间及存储空间。

①按先来先服务的原则进行调度,输出作业调度的顺序及等待的时间。

②按最短作业(即运行时间最短)优先的原则进行调度,输出作业调度的顺序及等待时间。

③按最小作业(即存储空间最小)优先的原则进行调度,输出作业调度的顺序及等待的时间。

操作系统课程设计--请求页式存储管理

操作系统课程设计--请求页式存储管理

哈尔滨工业大学计算机科学与技术学院课程设计报告(2012 ~2013 学年度秋季学期)课程名称操作系统课程设计项目名称姓名学号专业班级地点教师设计四:1.设计目的请求页式管理是一种常用的虚拟存储管理技术。

本设计通过请求页式存储管理中页面置换算法模拟设计,了解虚拟存储技术的特点,掌握请求页式管理的页面置换算法。

2.设计内容:通过随机数产生一个指令序列,共320条指令。

指令的地址按下述原则生成:① 50% 的指令是顺序执行的;② 25% 的指令是均匀分布在前地址部分;③ 25% 的指令是均匀分布在后地址部分。

具体的实施方法是:①在 [0,319] 的指令地址之间随机选取一起点 m;②顺序执行一条指令;③在前地址[0,m+1]中随机选取一条指令并执行,该指令的地址为 m′;④顺序执行一条指令,其地址为 m′+1;⑤在后地址 [m′+2,319] 中随机选取一条指令并执行;⑥重复上述步骤② ~ ⑤,直到执行 320 次指令。

将指令序列变换成为页地址流设:①页面大小为 1K;②用户内存容量为 4 页到 32 页;③用户虚存容量为 32K 。

在用户虚存中,按每 K 存放 10 条指令排列虚存地址,即 320 条指令在虚存中的存放方式为:第 0 条 ~ 第 9 条指令为第 0 页 ( 对应虚存地址为 [0,9]);第 10 条 ~ 第 19 条指令为第 1 页 ( 对应虚存地址为 [10,19] ) ;┇┇第 310 条 ~ 第 319 条指令为第 31 页 ( 对应虚存地址为 [310,319]) 。

按以上方式,用户指令可组成 32 页。

计算并输出下述各种算法在不同内存容量下的命中率。

先进先出的算法 (FIFO);最近最少使用算法 (LRR);最少访问页面算法 (LFR);最近最不经常使用算法 (NUR)。

3.实验环境每个学生一台微机,需要安装windows98或windows2000操作系统,配备VC、VB、java或C编程语言,每个学生上机时间不少于24个小时。

请求页式管理实验报告

请求页式管理实验报告

操作系统请求页式存储管理报告学院:班级:姓名:学号:请求页式存储管理一、问题描述设计一个请求页式存储管理方案,为简单起见。

页面淘汰算法采用 FIFO页面淘汰算法,并且在淘汰一页时,只将该页在页表中修改状态位。

而不再判断它是否被改写过,也不将它写回到辅存。

二、基本要求页面尺寸1K,输入进程大小(例如5300bytes),对页表进行初始化,页表结构:页号物理块号状态位0 2 True (在主存)1 12 False (在辅存)3 04 False (在辅存)5 False (在辅存)系统为进程分配3 个物理块(页框),块号分别为0、1、2,页框管理表(空闲块表):物理块号是否空闲0 true1 true2 true任意输入一个需要访问的指令地址流(例如:3635、3642、1140、0087、1700、5200、4355,输入负数结束),打印页表情况。

每访问一个地址时,首先要计算该地址所在的页的页号,然后查页表,判断该页是否在主存——如果该页已在主存,则打印页表情况;如果该页不在主存且页框未满,则调入该页并修改页表,打印页表情况;如果该页不在主存且页框已满,则按 FIFO页面淘汰算法淘汰一页后调入所需的页,修改页表,打印页表情况。

三、主要代码#include <stdio.h>#include <stdlib.h>#include <string.h>#define N 7#define q 3 //物理块个数#define p 6 //页面个数int JCsize=5300; //进程大小int Psize=1024; //页面长度int phb[q]={0}; //物理块标号int pro[N]={0}; //进程序列号int m = -1, n = -1; //物理块空闲和进程是否相同判断标志int i = 0, j = 0,k = 0; //i表示进程序列号,j表示物理块号int Q[q] = {0}; //进程等待次数(存放最久未被使用的进程标志) int max = -1,maxQ = 0; //标记替换物理块进程下标int count=0; //统计页面缺页次数struct Page{int Ynum; //页号int Wnum; //物理块号int P; //状态位int time; //记录调入内存时间};struct Phb{int Pnum; //物理块号int b; //是否空闲};void scan(struct Page *P,struct Phb *R) //输入页表和物理块页框初始化信息{int i;for(i=0;i<p;i++){P[i].Ynum=i;P[i].Wnum=-1;P[i].P=0;}for(i=0;i<q;i++){R[i].Pnum=i; R[i].b=0;}}void print_Page(struct Page *P,struct Phb *R){int n;printf("按1键打印输出物理块页框管理表如下所示:");scanf("%d",&n);printf("\n------------------------------------\n");if(n==1){printf("\t物理块号 \t是否空闲 \t");for(i=0;i<q;i++){printf("\t\t %d \t",R[i].Pnum);printf("\t\t %d \t",R[i].b);}printf("\n");}}void print(struct Page *P,struct Phb *R){int i,j;printf("\n按0键打印输出页表结构如下所示:");scanf("%d",&j);printf("\n---------------------------------------\n");if(j==0){printf("\t页号 \t物理块号 \t状态位 \t");for(i=0;i<p;i++){printf("\t\t %d ",P[i].Ynum);printf("\t %d ",P[i].Wnum);printf("\t %d \t",P[i].P);}printf("\n");}}int* listnumber(struct Page *P,struct Phb *R){int a[N];printf("请输入一个需要访问的指令地址流:\n"); for(i=0;i<N;i++){scanf("%d",&a[i]);if(a[i]>=0 && a[i]<=JCsize){pro[i]=a[i]/Psize; } elseprintf("访问指令不合理!结束访问");}printf("显示所输入地址流地址对应的页号分别为:");for(i=0;i<N;i++)printf("%d ",pro[i]);printf("\n");return (pro);}//查找空闲物理块int rsearchphb(struct Page *P,struct Phb *R){for(j=0; j<q; j++){if(phb[j] == 0){m = j;return m;break;}}return -1;}//查找相同进程int rsearchpage(struct Page *P,struct Phb *R){for(j = 0; j < q; j++) //物理块{if(phb[j]==pro[i]){n = j;return j; //第j块物理块中的进程与此同步}}return -1;}//FIFO算法void FIFO(struct Page *P,struct Phb *R){int t;for(i = 0; i<N; i++) //依次判断进程序列号{m=rsearchphb(P,R);n=rsearchpage(P,R); for(j = 0; j < q;j++){if(Q[j]>maxQ){maxQ = Q[j]; //进程等待次数最大值max = j; //物理块标号 }}if(n == -1) //该页不在主存中即:不存在相同进程 {if(m != -1) //该页不在主存中且页框未满时 {phb[m] = pro[i]; //进程号填入该空闲物理块count++; //页面缺页次数+1Q[m] = 0; //等待次数置为0for(t=0;t<p;t++) //改变页表结构{if(pro[i]==P[t].Ynum){P[t].Wnum=m;P[t].P=1;}}for(j = 0;j <= m; j++){Q[j]++; } //等待次数分别+1 m = -1;print(P,R); //打印页表结构}//该页不在主存且页框已满,执行FIFO淘汰算法else{phb[max] =pro[i];Q[max] = 0;for(t=0;t<p;t++){if(P[t].Wnum==max){P[t].Wnum=-1;P[t].P=0;}}for(t=0;t<p;t++){if(pro[i]==P[t].Ynum){P[t].Wnum=max;P[t].P=1; }}print(P,R);for(j = 0;j < q; j++){ Q[j]++; }max = -1;maxQ = 0;count++; }}else //该页在主存时打印页表情况{phb[n]=pro[i];for(j = 0 ;j <q; j++){ Q[j]++; }n=-1; print(P,R);}}printf("缺页次数为:%d\n",count); printf("\n");}void main(){struct Page P[p]; struct Phb R[q];printf("*****************************************\n");printf(" \n");printf(" |内存页面调度算法| \n");printf(" \n");printf("*****************************************\n");scan(P,R); print(P,R); print_Page(P,R);listnumber(P,R); FIFO(P,R);}。

操作系统实验请求分页存储管理模拟实验

操作系统实验请求分页存储管理模拟实验

实验四请求分页存储管理模拟实验一:实验目的通过对页面、页表、地址转换和页面置换过程的模拟,加深对请求分页存储管理系统的原理和实现技术的理解;二:实验内容假设每个页面可以存放10条指令,分配给进程的存储块数为4;用C语言或Pascal语言模拟一进程的执行过程;设该进程共有320条指令,地址空间为32个页面,运行前所有页面均没有调入内存;模拟运行时,如果所访问的指令已经在内存,则显示其物理地址,并转下一条指令;如果所访问的指令还未装入内存,则发生缺页,此时需要记录缺页产生次数,并将相应页面调入内存,如果4个内存块已满,则需要进行页面置换;最后显示其物理地址,并转下一条指令;在所有指令执行完毕后,显示进程运行过程中的缺页次数和缺页率;页面置换算法:分别采用OPT、FIFO、LRU三种算法;进程中的指令访问次序按如下原则生成:50%的指令是顺序执行的;25%的指令是均匀分布在低地址部分;25%的指令是均匀分布在高地址部分;三:实验类别分页存储管理四:实验类型模拟实验五:主要仪器计算机六:结果OPT:LRU: FIFO:七:程序include<>include<>include<>define blocknum 4agenum=-1;blocki.accessed=0;m=0;}}int pageExistint curpageagenum == curpagereturn i; agenum==-1return i; ccessed > blockpos.accessedpos = i; agenum = -1{printf" %02d ",blocki.pagenum;printf"%p |",&blocki.pagenum;}}printf"\n";}void randamagenum = curpage; agenum= numj/10{blockk.accessed = 1000;} ccessed = j;break;}}}position = findReplace;agenum = curpage;agenum = curpage; agenum = curpage;display;n++; ccessed = -1;ccessed++;}}printf"缺页次数:%d\n",n;printf"缺页率:%f%%\n",n/100;}void FIFO{int n=0;agenum=curpage; agenum = curpage; //将此页面调入内存n++;display;}}}printf"缺页次数:%d\n",n;printf"缺页率:%f%%\n",n/100;}void main{int choice;printf"请求分页存储管理模拟系统\n";randam;printf"此进程的页面调用序列如下\n";pagestring;whilechoice = 4{printf"1:OPT 2:LRU 3:FIFO 4:退出\n";printf"请选择一种页面置换算法:";scanf"%d",&choice;init;switchchoice{case 1:printf"最佳置换算法OPT:\n";printf"页面号物理地址页面号物理地址页面号物理地址页面号物理地址\n";OPT;break;case 2:printf"最近最久未使用置换算法LRU:\n";printf"页面号物理地址页面号物理地址页面号物理地址页面号物理地址\n";LRU;break;case 3:printf"先进先出置换算法FIFO:\n";printf"页面号物理地址页面号物理地址页面号物理地址页面号物理地址\n";FIFO;break;}}}。

《操作系统课程》实验(实训)指导大纲

《操作系统课程》实验(实训)指导大纲

《操作系统课程》实验(实训)指导大纲课程编号:G611SG0004课程性质:学科基础课适用专业:计算机科学与技术网络工程数字媒体实验学时:16实验教材:自编符合《认证标准》:具有运用工程基础知识和本专业基本理论知识解决问题的能力,具有系统的工程实践学习经历;完成本课程实验(实训)总软件最少行数: 2000实验成绩评价方法:学生每完成一个实验项目,要求独立认真的填写实验报告。

实验指导教师将根据学生完成实验的态度和表现,结合填写的实验报告评定实验成绩,成绩的评定按百分制评分。

老师根据平时实验的分数之和取平均分,得出综合成绩。

实验(实训)内容:实验一操作系统安装及熟练使用(一)实验目的熟悉Windows//Linux操作系统的安装过程与安装方法,并掌握该操作系统所提供的用户接口环境,并为后续实验做好编程环境准备。

(二)实验项目内容1、熟悉Windows//Linux操作系统的安装过程与安装方法,并掌握该操作系统所提供的用户接口环境,通过系统提供的用户管理程序、查看系统中的用户情况、进程、线程、内存使用情况等,学会使用它进行监视进程的状况、系统资源的使用情况及用户情况。

并为后续实验做好编程环境准备。

2、用C语言编写一小段程序,使其可以通过某个系统调用来获得OS提供的某种服务。

(三)主要仪器设备一台PC机(四)实验室名称计算机中心实验室(五)实验报告撰写(撰写的格式采用教务处所提供的样本见附件)......实验二编程模拟进程间的同步和互斥(一)实验目的通过实验加强对进程同步和互斥的理解,并掌握进程(线程)的创建和调用方法。

学会使用信号量解决资源共享问题。

学生可以自己选择在Windows或Linux系统下编写。

代码不得少于200行。

(二)实验项目内容1.以下为Linux系统下参考程序,请编译、运行并观察程序的输出,并分析实验结果,写出实验报告。

#include<stdio.h>#include<stdlib.h>#include<unistd.h>#include<time.h>#include<sys/types.h>#include<sys/wait.h>#include<linux/sem.h>#define NUM_PROCS 5#define SEM_ID 250#define FILE_NAME "/tmp/sem_aaa"#define DELAY 4000000void update_file(int sem_set_id, char *file_path, int number){struct sembuf sem_op;FILE *file;//等待信号量的数值变为非负数,此处设为负值,相当于对信号量进行P操作sem_op.sem_num=0;sem_op.sem_op=-1;sem_op.sem_flg=0;semop(sem_set_id,&sem_op,1);//写文件,写入的数值是当前进程的进程号file=fopen(file_path,"w");if(file){//临界区fprintf(file,"%d\n",number);printf("%d\n",number);fclose(file);}//发送信号,把信号量的数值加1,此处相当于对信号量进行V操作sem_op.sem_num=0;sem_op.sem_op=1;sem_op.sem_flg=0;semop(sem_set_id,&sem_op,1);}//子进程写文件void do_child_loop(int sem_set_id,char *file_name){ pid_t pid=getpid();int i,j;for(i=0;i<3;i++){update_file(sem_set_id,file_name,pid);for(j=0;j<4000000;j++);}}int main(int argc,char **argv){int sem_set_id; //信号量集的IDunion semun sem_val; //信号量的数值,用于semctl()int child_pid;int i;int rc;// 建立信号量集,ID是250,其中只有一个信号量sem_set_id=semget(SEM_ID,1,IPC_CREAT|0600);if(sem_set_id==-1){perror("main: semget");exit(1);}//把第一个信号量的数值设置为1sem_val.val=1;rc=semctl(sem_set_id,0,SETVAL,sem_val);if(rc==-1){perror("main:semctl");exit(1);}//建立一些子进程,使它们可以同时以竞争的方式访问信号量for(i=0;i<NUM_PROCS;i++){child_pid=fork();switch(child_pid){case -1:perror("fork");case 0: //子进程do_child_loop(sem_set_id,FILE_NAME);exit(0);default: //父进程接着运行break;}}//等待子进程结束for(i=0;i<NUM_PROCS;i++){int child_status;wait(&child_status);}printf("main:we're done\n");fflush(stdout);return 0;}2.写一程序模拟PV操作同步机构,且用PV操作解决生产者——消费者问题。

请求页式存储管理程序说明

请求页式存储管理程序说明

请求页式存储管理1. 设计要求设计一个请求页式存储管理方案。

并编写模拟程序实现之。

页面淘汰算法采用 FIFO页面淘汰算法,并且在淘汰一页时,只将该页在页表中抹去。

而不再判断它是否被改写过,也不将它写回到辅存。

方案提示:1、产生一个需要访问的指令地址流,它是一系列需要访问的指令的地址。

为不失一般性,你可以适当地(用人工指定地方法或用随机数产生器)生成这个序列,使得 50%的指令是顺序执行的。

25%的指令均匀地散布在前地址部分,25%的地址是均匀地散布在后地址部分。

2、指定合适的页面尺寸(例如以 1K或2K为1页);3、指定内存页表的最大长度,并对页表进行初始化;4、每访问一个地址时,首先要计算该地址所在的页的页号,然后查页表,判断该页是否在主存——如果该页已在主存,则打印页表情况;如果该页不在主存且页表未满,则调入一页并打印页表情况;如果该页不足主存且页表已满,则按 FIFO页面淘汰算法淘汰一页后调入所需的页,打印页表情况;逐个地址访问,直到所有地址访问完毕。

2. 问题分析分页存储管理,是将一个进程的逻辑地址空间分成若干个大小相等的片,称为页面或页,并为各页加以编号。

相应地,也把内存空间分成与页面相同大小的若干个存储块,称为(物理)块或页框(frame),在为进程分配内存时,以块为单位将进程中的若干个页分别装入到多个可以不相邻接的物理块中系统为每个进程建立一个页表,页表给出逻辑页号和具体内存块号相应的关系。

一个页表中包含若干个表目,表目的自然序号对应于用户程序中的页号,表目中的块号是该页对应的物理块号。

请求页式存储管理方式是一种实现虚拟存储器的方式,是指在进程开始运行之前,不是装入全部页面,而是装入一个或零个页面,之后根据进程运行的需要,动态装入其它页面。

当内存空间已满,而又需要装入新的页面时,则根据某种算法淘汰某个页面,以便装入新的页面。

请求页式存储管理主要需要解决以下问题:系统如何获知进程当前所需页面不在主存;当发现缺页时,如何把所缺页面调入主存;当主存中没有空闲的页框时,为了要接受一个新页,需要把老的一页淘汰出去,根据什么策略选择欲淘汰的页面。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

操作系统实验报告一姓名:学号:时间:老师:课程设计任务(二):实验请求页式存储管理一.目的与要求1.用高级语言编写几个常用的存储分配算法,并设计一个存储管理的模拟程序,对各种算法进行分析比较,评测其性能优劣;2.用FIFO,LRU.OPT页面调度算法事业页面管理;二.原理代码:1.先进先出FIFO页面置换算法:该算法总是淘汰最先进入内存的页面,即选择在内存中驻留时间最久的页面予以淘汰。

该算法实现简单,只需把一个进程已调入内存的页面,按先后次序链接成一个队列,并设置一个指针,称为替换指针,使它总是指向最老的页面;2.最近最少使用页淘汰算法(LRU):采用的是不断调整页表链的方法,即总是淘汰页表链链首的页,而把新访问的页插入链尾。

如果当前调用页已在页表内,则把它再次调整到链尾。

这样就能保证最近使用的页,总是处于靠近链尾部分,而不常使用的页就移到链首,逐个被淘汰,在页表较大时,调整页表链的代价也是不小的;三.代码及运行结果:#include<iostream>#include<iomanip>using namespace std;#define N 3#define M 20struct PageTable //页?表括?结á构1体?{int num;int vacancy;};double hits;int usetable[N];int const a = 20;int in[a];PageTable *ppage=new PageTable[N];int input()//{for(int i=0;i<a;i++){ cin >>in[i];if(in[i]<0||in[i]>9){cout<<"第台?<<i+1<<"个?页?面?号?输?入?错洙?误ó,请?重?新?输?入?"<<endl;return 1;}}return 0;}int ifexist(int j)//判D断?是?否?命ü中D{for(int i=0;i<N;i++){if(in[j]==(ppage+i)->num)return 1;}return 0;}bool nvacant()//页?面?是?否?有瓺空?{for(int i=0;i<N;i++){ if((ppage+i)->vacancy==0)return 0;}return 1;}void FIFO()//{hits=0;cout<<"输?入?页?面?号?引皔用?串?(0-9),共220个?"<<endl;do{}while(input());int count=0;for(int j=0;j<a;j++){if(!ifexist(j)){if(nvacant()){(ppage+count%N)->num=in[j];for(int i=0;i<N;i++){cout<<setw(3)<<(ppage+i)->num<<" ";}cout<<endl;count++;}else{for(int i=0;i<N;i++){if((ppage+i)->vacancy==0){ (ppage+i)->num=in[j];(ppage+i)->vacancy=1;for(i=0;i<N;i++){cout<<setw(3)<<(ppage+i)->num<<" ";}cout<<endl;break;}}}}else{for(int i=0;i<N;i++){cout<<setw(3)<<(ppage+i)->num<<" ";}cout<<endl;hits=hits+1;}}cout<<"命ü中D率ê:"<<hits/a<<endl;cout<<"缺ā?页?率ê:"<<1-hits/a<<endl;}int main(){for(int i=0;i<N;i++)//初?始?化ˉ页?面?基ù本?情é况?{(ppage+i)->num=-1;(ppage+i)->vacancy=0;}cout<<"FIFO"<<endl;do {FIFO();}while(1);system("pause");return 0;}运行结果:……void ChangeOrder(int a){int v=0;for(int i=0;i<N;i++)if(usetable[i]==a){v=i;break;}for(int i=v;i<N-1;i++){usetable[i]=usetable[i+1];}usetable[N-1]=a;}void LRU(){hits=0;for (int i=0;i<N;i++)usetable[N]=i;cout<<"输?入?页?面?号?引皔用?串?(0-9)20..."<<endl;do{}while(input());//output();for(int j=0;j<a;j++){if(!ifexist(j)){if(nvacant()){(ppage+usetable[0])->num=in[j];for(int i=0;i<N;i++){cout<<setw(3)<<(ppage+i)->num<<" ";}cout<<endl;ChangeOrder(usetable[0]);}else{for(int i=0;i<N;i++){if((ppage+i)->vacancy==0){ (ppage+i)->num=in[j];(ppage+i)->vacancy=1;for(i=0;i<N;i++){cout<<setw(3)<<(ppage+i)->num<<" ";}cout<<endl;break;}}}}else{hits=hits+1;for(int i=0;i<N;i++)if((ppage+i)->num==in[j]){ChangeOrder(i);break;}}}cout<<"命ü中D率ê:"<<hits/a<<endl;cout<<"缺ā?页?率ê:"<<1-hits/a<<endl;}int main(){for(int i=0;i<N;i++)//初?始?化ˉ页?面?基ù本?情é况?{(ppage+i)->num=-1;(ppage+i)->vacancy=0;}cout<<"LRU:"<<endl;do { LRU();}while(1);system("pause");return 0;}四.心得与体会:通过本次实验,对FIFO,LRU页面调度算法有了更加深刻的理解,根据实验结果可以比较两者命中率的大小,LRU页面调度算法的性能更好;在编程中还存在了一些漏洞,需要改进。

操作系统实验报告二课程设计任务(三):文件操作与管理一.目的和要求:1.用高级语言编写和调试一个简单的文件系统,模拟文件管理的工作过程;2.实际一个n个用户的文件系统,每个用户最多可保存m个文件。

限制用户在一次运行中只能打开l个文件。

系统应能检查打入命令的正确性,出错要能显示出错原因。

对文件必须设置保护措施,如只能执行,允许读、允许写等。

在每次打开文件时,根据本次打开的要求,再次设置保护级别,即可有二级保护。

对文件的操作至少应有下述几条命令:creat 建立文件。

delete 删除文件。

open 打开文件。

close 关闭文件。

read 读文件。

write 写文件。

二.操作过程与实验结果:进入用户abc,显示所有命令;显示该文件名下用户文件目录,有a.txt和b.txt;.显示用户打开的文件(此时无文件打开);三.体会心得:本次实验用高级语言编写简单的文件系统,模拟文件管理的工作过程;由于平时接触到此类文件系统较少,在设计时遇到很多困难,在同学的帮助下,基本上理解此次试验所要掌握的核心内容。

相关文档
最新文档