os实验报告

合集下载

操作系统安装与配置实验报告

操作系统安装与配置实验报告

操作系统安装与配置实验报告英文回答:Operating System Installation and Configuration Lab Report。

In this lab, we explored the fundamental concepts and procedures involved in installing and configuring an operating system (OS). We focused on the Windows 10 operating system, but the principles and techniques we learned can be applied to other OSes as well.The first step in installing an OS is to prepare the hardware. This involves ensuring that the computer meets the minimum system requirements for the OS, and that the BIOS settings are configured correctly. We then created a bootable USB drive using the Windows 10 ISO image and booted the computer from the USB drive.Once the computer booted from the USB drive, weproceeded with the Windows 10 installation process. This involved selecting the language, time and currency format, and keyboard layout. We also partitioned the hard drive and formatted it with the NTFS file system.After the OS was installed, we configured the basic settings, such as the user account, network settings, and time zone. We also installed essential software, such as antivirus software and web browsers.Throughout the lab, we encountered a few challenges. For example, we had to troubleshoot a boot error that was caused by an incorrect BIOS setting. We also had to resolve a driver issue that was preventing the computer from recognizing a hardware device.By working through these challenges, we gained valuable experience in OS installation and configuration. We learned how to identify and resolve common problems, and we developed a deeper understanding of the underlying principles of OSes.中文回答:操作系统安装与配置实验报告。

高级OS实验一文件系统实验报告

高级OS实验一文件系统实验报告

实验1:Vnod e和Inod e数据结构及缓存一、实验内容及目的为了更好地支持多种类型的文件系统,Solaris操作系统在设计上使用了一种特殊的结构:虚拟文件系统框架。

在虚拟文件系统中,操作系统内核通过vnode来识别每个活动文件,对于一个具体的文件系统,例如UFS,则是由Inode来识别具体的文件。

本实验的目的是观察Solaris操作系统内核中Vnode和Inode数据结构,了解它们之间的关系,同时学习使用mdb 在内核中查找指定的数据结构。

二、实验步骤1.启动一个shell,使用vi编辑器生成文件/work/exp_design/test.txt,内容为字符串“This is a file for UFS testing.”。

2.退出vi编辑器,使用命令#/usr/sfw/bin/gcc file_access.c编译生成可执行程序a.out。

3.运行“mdb -k”,进入内核模块调试程序。

4.启动另一个shell,运行./a.out。

结果为:The file descriptor returned is 3The data read from the file tis This is a5.切换回正在运行mdb的shell,获取进程a.out的地址:> ::ps!grep a.outR 843 804 843 804 0 0x42004000 ffffffff83d25dd8 a.out ffffffff83d25dd8这个地址是proc类型的数据,也就是进程的pcb。

6.使用命令fd获得有关这个进程打开文件的file类型数据结构的地址。

> fffffffff83d25dd8::fd 3ffffffff84ldee387.打印出这个file数据结构的内容。

> ffffffff84ldee38::print struct file{f_tlock = {_opaque = [0]}f_flag = 0xlf_pad = 0xbaddf_vnode = 0xffffffff84181140f_offset = 0x9f_cred = 0xfffffff83a95bd0f_audit_data = 0f_count = 0x1}其中f_vnode就是这个文件的vnode地址。

OS实验报告(1)

OS实验报告(1)
(3)置换算法:请分别考虑OPT、FIFO和LRU算法。
(4)作业中指令的访问次序按下述原则生成:
•50%的指令是顺序执行的。
•25%的指令是均匀分布在前地址部分。
•25%的指令时均匀分布在后地址部分。
具体实施办法参见实验指导书。
3实验结果(给出编写的程序源代码和运行结果的截图)
(2)假设初始状态下,可用的内存空间为640KB,并有下列的请求序列:
•作业1申请130KB。
•作业2申请60KB。
•作业3申请100KB。
•作业2释放60KB。
•作业4申请200KB。
•作业3释放100KB。
•作业1释放130KB。
•作业5申请140KB。
•作业6申请60KB。
•作业7申请50KB。
计算机操作系统
实验报告
学号:
姓名:
提交日期:
XXXX-XX-XX
成绩:
东北大学秦皇岛分校
实验1使用动态优先权的进程调度算法的模拟
1实验目的
(1)加深对进程概念的理解
(2)深入了解系统如何组织进程,创建进程
(3)进一步认识如何实现处理机调度
2实验内容
(1)实现对N个进程采用动态优先权优先算法的进程调度。
(2)每个用来标识进程的进程控制块PCB用结构来描述,包括以下字段:
进程标识ID。
进程优先数PRIORITY,并规定优先数越大的进程,其优先权越高。
进程已占用的CPU时间CPUTIME。
进程还需占用的CPU时间ALLTIME。当进程运行完毕时,ALLTIME变为0。
进程的阻塞时间STARTBLOCK,表示当进程再运行STARTBLOCK个时间片后,将进入阻塞状态。
1实验目的

OS实验报告格式

OS实验报告格式

OS实验报告格式实验目的:本次实验旨在了解操作系统的基本概念和原理,以及对操作系统的功能和特性进行深入了解。

实验原理:操作系统是计算机系统中的重要组成部分,它承担着管理硬件资源、提供用户接口、调度任务等关键任务。

操作系统的核心功能包括进程管理、内存管理、文件系统管理和设备管理等。

在本次实验中,我们将通过实践操作系统的基本命令和功能,来加深对操作系统的理解和掌握。

实验步骤:1.打开计算机,启动操作系统。

在实验开始之前,首先需要启动计算机并进入操作系统的界面。

2.运行命令行工具。

在操作系统中,通过命令行工具可以执行各种操作系统命令,如查看系统信息、管理文件、运行程序等。

3. 创建文件和目录。

在命令行工具中,可以使用相应的命令来创建文件和目录,如mkdir命令用于创建目录,touch命令用于创建文件。

4.编写简单程序并运行。

在操作系统中,可以使用编程语言编写程序,然后通过编译运行的方式来执行程序。

5.查看系统信息。

通过系统命令可以查看操作系统的信息,如操作系统版本、内核版本、CPU信息等。

6.进程管理。

在操作系统中,可以通过相应的命令来管理进程,如查看当前运行的进程、杀死指定进程等。

7.内存管理。

操作系统通过内存管理来管理系统的内存资源,如分配和释放内存空间等操作。

8.文件系统管理。

在操作系统中,可以通过文件系统管理命令对文件进行管理,如查看文件列表、复制文件、删除文件等。

9.设备管理。

操作系统通过设备管理来管理计算机的硬件设备,如打印机、网络设备等。

实验结果:通过本次实验,我对操作系统的基本概念和功能有了更深入的了解。

我学会了如何使用命令行工具来管理文件和目录,如何编写程序并运行,如何查看系统信息,如何管理进程和内存,如何管理文件系统和设备等。

这些都是操作系统中非常重要的功能,对于理解和掌握操作系统至关重要。

实验总结:通过本次实验,我认识到了操作系统是计算机系统中的核心组件,它负责管理系统的各种资源并提供用户接口。

OS实验六——精选推荐

OS实验六——精选推荐

OS实验六《操作系统》实验报告实验三进程管理及进程通信⼀.实验⽬的利⽤Linux提供的系统调⽤设计程序,加深对进程概念的理解。

体会系统进程调度的⽅法和效果。

了解进程之间的通信⽅式以及各种通信⽅式的使⽤。

⼆.实验准备复习操作系统课程中有关进程、进程控制的概念以及进程通信等内容(包括软中断通信、管道、消息队列、共享内存通信及信号量概念)。

熟悉本《实验指导》第五部分有关进程控制、进程通信的系统调⽤。

它会引导你学会怎样掌握进程控制。

阅读例程中的程序段。

三.实验⽅法⽤vi 编写c 程序(假定程序⽂件名为prog1.c)编译程序$ gcc -o prog1.o prog1.c 或$ cc -o prog1.o prog1.c运⾏$./prog1.o四.实验内容及步骤⽤v i编写使⽤系统调⽤的C语⾔程序。

1.编写程序。

显⽰进程的有关标识(进程标识、组标识、⽤户标识等)。

经过5 秒钟后,执⾏另⼀个程序,最后按⽤户指⽰(如:Y/N)结束操作。

编译运⾏结果:2.编写程序。

实现⽗进程创建⼀个⼦进程。

体会⼦进程与⽗进程分别获得不同返回值,进⽽执⾏不同的程序段的⽅法。

编译运⾏:思考:⼦进程是如何产⽣的?⼜是如何结束的?⼦进程被创建后它的运⾏环境是怎样建⽴的?答:⼦进程由fork()函数创建,通过exit()函数⾃我结束,⼦进程被创建后核⼼将为其分配⼀个进程表项和进程标识符,检查同时运⾏的进程数⽬,并且拷贝进程表项的数据,由⼦进程继承⽗进程的所有⽂件。

3.编写程序。

⽗进程通过循环语句创建若⼲⼦进程。

探讨进程的家族树以及⼦进程继承⽗进程的资源的关系。

程序如下:编译运⾏:思考:①画出进程的家族树。

⼦进程的运⾏环境是怎样建⽴的?反复运⾏此程序看会有什么情况?解释⼀下。

183922472248 2252 22542249 2251 22532250每⼀次运⾏返回的进程号都不相同,但是都符合家族进程树,出现这样的情况是由于系统本⾝就是随机分配进程号的。

山东大学软件工程OS实验3实验报告

山东大学软件工程OS实验3实验报告

实验三进程调度算法实验姓名:班级:学号:1.1实验目的加深对进程调度概念的理解,体验进程调度机制的功能,了解 Linux 系统中进程调度策略的使用方法。

练习进程调度算法的编程和调试技术。

1.2试验环境:linux系统1.3实验步骤(1)在新建文件夹中建立以下名为 psched.c的C语言程序/** Filename : psched.c 独立实验*/#include <stdio.h>#include <sys/types.h>#include <unistd.h>#include <signal.h>#include <stdio.h>#include <stdlib.h>#include <sched.h>#include <sys/time.h>#include <sys/resource.h>//进程处理信号SIGTSTP的方法,将优先级减1void handler1(){setpriority(PRIO_PROCESS,getpid(),getpriority(PRIO_PROCESS,0)-1);}//进程处理信号SIGTNT的方法,将优先级加1void handler2(){setpriority(PRIO_PROCESS,getpid(),getpriority(PRIO_PROCESS,0)+1);}int main(int argc, char *argv[]){int pid; //存放进程号struct sched_param p; //设置调度策略时使用的数据结构//父进程循环报告其优先数和调度策略if((pid=fork()) >0){signal(SIGTSTP,handler1);//注册处理ctrl+z的信号量signal(SIGINT,handler2);//注册处理ctrl+c的信号量setpriority(PRIO_PROCESS,pid,10);// 设置子进程优先数setpriority(PRIO_PROCESS,getpid(),10);// 设置父进程优先数sleep(1);//不断循环输出各自进程号、优先数和调度策略while(1) {printf("Parent PID = %d priority = %d policy is %d\n",getpid(),getpriority(PRIO_PROCESS,0),sched_getscheduler(getp id()));sleep(3);}}//子进程循环报告其优先数和调度策略else{signal(SIGTSTP,handler1);//注册处理ctrl+z的信号量signal(SIGINT,handler2);//注册处理ctrl+c的信号量//不断循环输出各自进程号、优先数和调度策略while(1){printf("Child PID = %d priority = %d policy is %d\n",getpid(),getpriority(PRIO_PROCESS,0),sched_getscheduler(pid) );sleep(3);}exit( EXIT_SUCCESS);}return EXIT_SUCCESS;}(3)再建立程序的Makeflie文件:srcs = psched.cobjs = psched.oopts = -g -call: pschedpsched: $(objs)gcc $(objs) -o pschedpsched.o: $(srcs)gcc $(opts) $(srcs)clean:rm psched *.o(4)使用make命令编译连接生成可执行文件psched:$ gmakegcc -g -c psched.cg c c psched.o -o psched(5)改变到 root 用户$ su口令:123#(5)运行psched:# ./psched1.4实验体会(1)错误的尝试:由于自己对于C语言的了解不足,有思路但却无法实现代码。

OS进程同步实验报告

OS进程同步实验报告

}阅读、调试、运行、分析程序,写出运行结果,这个结果与你期望的一致吗?(从进程并发的角度对结果进行分析)思考题1.分析进程与线程创建及控制的异同。

(1)调度:线程作为调度和分配的基本单位,进程作为拥有资源的基本单位(2)并发性:不仅进程之间可以并发执行,同一个进程的多个线程之间也可并发执行(3)拥有资源:进程是拥有资源的一个独立单位,线程不拥有系统资源,但可以访问隶属于进程的资源.(4)系统开销:在创建或撤消进程时,由于系统都要为之分配和回收资源,导致系统的开销明显大于创建或撤消线程时的开销。

2.分析线程各API函数的功能及使用方法。

线程创建函数:CreateThread()获得线程优先级函数:GetThreadPriority()设置线程优先级函数:SetThreadPriority()判断线程当前是否处于运行状态函数:GetExitCodeThread()获得线程标识符函数:GetCurrentThreadID()ResumeThread()用于挂起线程的函数:SuspendThread()终止线程函数:ExitThread()终止线程函数:TerminateThread()实验过程与结果:程序4_1两个线程无同步代码,观察 i 值。

#include <iostream.h>#include <windows.h>#define M 90000 // 循环次数要很大,可多次尝试一些值int i = 0;DWORD _stdcall fun1( LPVOID p1){ for( int j =0 ;j < M;j++) i++;return 0;}DWORD _stdcall fun2( LPVOID p1){ for( int j =0 ;j < M;j++) i--;return 0;}int main(){ DWORD id1,id2;HANDLE hThread[2];hThread[0] = CreateThread(0,0,fun1,0,0,&id1);hThread[1] = CreateThread(0,0,fun2,0,0,&id2);WaitForMultipleObjects(2, // 等待句柄的数量hThread, //句柄数组的指针1, //TRUE等待所有对象,FALSE第一个信号到来就向下执行INFINITE); //一直等待cout<<"i = "<<i<<endl;return 0;}InitializeCriticalSection(&cs);hThread[0] = CreateThread(0,0,fun1,0,0,&id1);hThread[1] = CreateThread(0,0,fun2,0,0,&id2);WaitForMultipleObjects(2,hThread,1,INFINITE);cout<<"i = "<<i<<endl;DeleteCriticalSection(&cs);return 0;}无论如何执行,i的值总是0,结果是正确的。

OS课程设计实验报告

OS课程设计实验报告

计算机与信息学院操作系统课程设计报告专业班级计算机科学与技术08-5班学生姓名及学号邹纯纯 20082681课程教学班号任课教师刘晓平、李琳、田卫东实验指导教师李琳实验地点逸夫楼5072010 ~ 2011 学年第二学期目录第一章课程设计任务、要求、目的 (3)第二章原理及算法描述 (3)第三章开发环境 (4)第四章重要算法和设计思路描述 (4)第五章程序实现---数据结构 (7)第六章程序实现---程序清单 (8)第七章总结 (24)第八章参考文献 (24)第一章课程设计任务、要求、目的1.1课程设计任务本次课程设计的任务是在windows环境下实现兼容Unix/Linux操作系统的命令接口,并实现一些指定的命令功能。

1.2课程设计要求和目的1、为Windows操作系统建立一个兼容Unix命令的命令接口;2、实现命令包括ls,cat,cp,mv,md,rd,cd,sort,more,print,命令的内容与详细格式请查阅unix命令手册;3、可以字符形式接收命令,执行命令,然后显示命令执行结果。

第二章原理及算法描述计算机的操作我们通常使用的是windows操作系统,在windows2000以上的版本中,我们只需在“搜索程序和文件”选项框中输入cmd命令进入windows 操作系统中就可以达到实现系统相关功能的目的。

同样在Unix和Linux操作平台中,也可以实现相关命令以完成操作系统的相关操作。

现在我们必须实现这样一种方法,即为windows操作系统建立一个兼容Unix 命令的命令接口。

在主程序中新建一个Windows_Unix.exe文件,然后调用相关实现相关Unix命令的函数实现命令功能。

具体命令的实现主要通过系统的API函数调用与之功能相同或相似的Dos 命令,这样就可以实现在Windows操作系统中虚拟地实现Unix命令。

第三章开发环境1、硬件环境:微型计算机。

2、软件环境:Windows 7 操作系统,语言环境为Visual C++ 6.0。

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

武汉大学计算机学院
课程实验(设计)报告
专业(班):信安一班
学号:2008302530008
姓名:蔡璐墩
课程名称:操作系统设计
2010年10月25日
设计一个按时间片轮转法实现处理器调度的程序
一、实习目的
本实习模拟在单处理器环境下的处理器调度,加深了解处理器调度的工作。

二、实习内容
选择一个调度算法,实现处理器调度。

三、设计思想
进程在队列中,每个时间片调度算法总是上一个时间片中进程的下一个投入运行,进程每运行一次已运行时间加1,从而避免了一个作业长期占用处理机,下一时间片调度算法适时再调度,首先判断下一进程是否运行完,未运行完则执行,运行完则转到下一进程,直到就绪队列为空。

四、用到的数据结构
五、主函数
先是完成初始化,将进程指针链接成循环链表,为了能看出运行的过程,在每个时间片后加了个_sleep(600);
六、调试过程
实验平台为dev-cpp
进程p1,p2,p3,p4,p5分别标识为a,b,c,d,e。

七、实验总结
通过处理器调度这个实验,使我学会了处理器如何处理进程调度。

这个实验使我认识到了进程调度的整个过程,感受非常深刻。

通过实验基本上完成了预期的目的,整体上对于完成较大规模的程序设计有了一定把握,并且对已经学过的数据结构思想有了加深,但在程序编写时仍然存在一定的问题,例如:对基本的结构体掌握的不是很牢靠,同时对个别模块的分析欠妥,以致在编写代码是出现了没有想到的问题,没有很好的掌握一般软件设计的方法:对于编码风格的把握不是很好,写的代码很乱,调试起来不方便。

可变分区管理方式下采用首次适应算法实现主存分配和回收
一、实验目的
本实验模拟存储器分配回收的管理策略,从而对存储器不同管理方式下的管理策略和技术有一定的掌握。

二、实验内容
一个好的计算机系统不仅需要有一个足够容量的,存取速度高,稳定可靠的存储器,而且还应能合理使用这些存储器,当用户提出申请存储空间时,存储管理必须根据申请者的要求,按一定的策略,分析存储空间的使用情况,找出足够
的空闲区域,即使的分配给申请者,当作业撤离活主动归还时,则存储管理相应的收回作业占用空间或归还部分存储空间。

本实验设计模拟可变分区管理方式下采用一定的算法,实现存储器的分配和回收。

三、实验分析
在可变分区管理下采用最先适应算法实现主存的分配和采用拼接技术实现主存的回收。

四、设计思想
1)可变分区方式是按作业需要的存储空间的大小分割分区的,当装入一
个作业时,根据作业申请需要的主存量查看是否有足够空间,若有则
分割一个分区分配给该作业,若无,则该作业不能装入。

最初整个空
间没有建立许多个分区,只有一个大的分区(可用存储空间),当系统运
行一段时间后,随着作业的分配和空间的回收,整个空间将出现许多
大小不等的分区,有的被作业占用,有的则因作业的退出而回收可用
的空闲分区,当一个作业需要调入时,为了能为其尽快的分配空间,
存储管理必须采用一定的算法。

用模块apply()实现。

2)当一个作业撤离时,作业占用的区域应归还,为此采用相应的回收算
法,拼接法就是对于回收区域插入空白链表的相应位置,并且看它是
否相邻的空闲区域能否合成一个较大的空闲区,能则拼接合并。

用模
块reclaim()实现。

3)本实验采用首次适应算法,在分配中,为了查找方便及组织内存,为
此建立一个为分配区说明表,一个分配去双链表。

存储管理采用首次
适应算法,即从分配去说明表开始找起,选择第一个足以满足请求的
空白分区,按申请的大小分配给作业。

五、用到的数据结构及模块说明
int area[256] 0表示存储块未分配,1表示已分配,这个数组表示主存空间分配情况,每次分配空间的时候,需查找这个数组。

apply()模块实现的功能是为作业分配空间。

查询area[256],找到连续的空闲区,如果大小大于需要分配的空间大小,则分配,否则继续查找;当找到适合的连续的空闲区时,如果空闲区大于需要的大小则空闲区分裂为两部分,一部分分给作业。

为作业分配空间的同时建立记录和记录的链接。

reclaim()模块的功能是回收作业占用的空间。

输入作业名,查找链接表中有没有相同作业名的记录项,有则修改相应记录和area[]中数据,无则提示无此作业。

释放作业占用的空间的同时,查看作业前后的空间是否是空闲区,如果是则合并成更大的空闲区,方法是修改链接表和对应的记录。

view()模块的功能是查看主存空间分配情况。

能根据地址从低到高显示各个块是被哪个作业占用还是是空闲区。

在主函数中完成了主存空间的初始化,并提供友好的操作输入界面,而且本程序经过不断的修改,提高了输入的健全性,当输入超出范围时能够提示错误并要求重新输入。

六、调试过程
实验平台为dev-cpp
各种错误输入及警告
4个作业申请了4块空间
回收作业1和作业3后
为p1申请了一个大小为6的空间,根据首次适应算法,应在第二个空闲区给它分配,如果第二个空闲区大小为10,又在p1后留下一个大小为4的新空闲区
七、实验总结
三个实验中这个实验最麻烦,因为要用的链表和指针,很容易搞糊涂和弄错,
中间遇到了很多错误,很多错误是能运行通过但结果显示不对,查错的时候刚开
始感到莫名奇妙,后来通过复习c语言和数据结构才更正了错误。

并学会了从运
行结果中分析错误可能出自哪里。

给老师检查后修正了老师提出的输入超出范围的情况,同时发现如果输入错
误键盘缓冲区的数据会影响下次运行结果,我上网查到了fflush(stdin)这个函数,
能清除键盘缓冲区的数据。

总的来说,通过内存管理这个实验,使我学会了如何申请一段空闲空间。


何给作业分配内存,并回收内存。

这个实验使我认识到了内存分配和回收的整个
过程,感受非常深刻。

用位示图管理磁盘存储空间i
一、实习内容
模拟磁盘空闲空间的表示方法,以及模拟实现磁盘空间的分配和回收。

二、实习目的
磁盘初始化时把磁盘存储空间分成许多块(扇区),这些空间可以被多个用户共享。

用户作业在执行期间常常要在磁盘上建立文件或把已经建立在磁盘上的文件删去,这就涉及到磁盘存储空间的分配和回收。

一个文件存放到磁盘上,可以组织成顺序文件(连续文件)、链接文件(串联文件)、索引文件等,因此,磁盘存储空间的分配有两种方式,一种是分配连续的存储空间,另一种是可以分配不连续的存储空间。

怎样有效地管理磁盘存储空间是操作系统应解决的一个重要问题,通过本实习使学生掌握磁盘存储空间的分配和回收算法。

三、实验分析
连续的磁盘存储空间的分配和回收。

四、设计思想
(1) 为了提高磁盘存储空间的利用率,可在磁盘上组织成链接文件、索引文件,这类文件可以把逻辑记录存放在不连续的存储空间。

为了表示哪些磁盘空间已被占用,哪些磁盘空间是空闲的,可用位示图来指出。

位示图由若干字节构成,每一位与磁盘上的一块对应,“1”状态表示相应块已占用,“0”状态表示该块为空闲。

(2) 申请一块磁盘空间时,由分配程序查位示图,找出一个为“0”的位,计算出这一位对应块的磁盘物理地址,且把该位置成占用状态“1”。

假设现在有一个盘组共8个柱面,每个柱面有2个磁道(盘面),每个磁道分成4个物理记录。

那么,当在位示图中找到某一字节的某一位为“0”时,这个空闲块对应的磁盘物理地址为:
柱面号=字节号
磁道号= 位数/ 4
物理记录号= 位数% 4
(3) 归还一块磁盘空间时,由回收程序根据归还的磁盘物理地址计算出归还块在位示图中的对应位,把该位置成“0”。

按照(2)中假设的盘组,归还块在位示图中的位置计算如下:
字节号=柱面号
位数=磁道号⨯4+物理记录号
五、用到的数据结构及模块说明
int area[8][8]; 表示位示图,每一位与磁盘上的一块对应,“1”状态表示相应块已占用,“0”状态表示该块为空闲。

apply()模块的功能为分配外存。

首先查找位示图,看是否磁盘空间够。

如果够,则将空闲的块分配,分配的磁盘物理地址如下转化:柱面号=字节号,磁道号= 位数/ 4,物理记录号= 位数% 4。

reclaim()模块的功能是回收外存。

归还块在位示图中的位置如下转化:字节号=柱面号,位数=磁道号⨯4+物理记录号。

view()模块的功能是查看磁盘存储位示图。

在主函数中完成了外存空间的初始化,并提供友好的操作输入界面,而且本程序经过不断的修改,提高了输入的健全性,当输入超出范围时能够提示错误并要求重新输入。

六、调试过程
实验平台为dev-cpp
申请分配大小为6的空间
位示图
回收柱面0,磁道0,物理记录2的块
位示图
又再申请了一个大小为2的空间,占用了刚才回收的柱面0,磁道0,物理记录2的块,及下一个空闲的块
七、实验总结
给老师检查后修正了老师提出的输入超出范围的情况,用switch()语句,解决了输入选择项是1-4外程序崩溃的问题。

总的来说,通过管理磁盘存储空间这个实验,使我学会了如何申请一段空闲空间。

如何给作业分配外存,并回收外存。

这个实验使我认识到了外存分配和回收的整个过程,感受非常深刻。

相关文档
最新文档