版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、操作系统实验报告学 院 计算机学院 专 业 计算机科学与技术 班 级 2班 学 号 姓 名 指导教师 (200 9年5 月) 计算机 学院 计算机科学与技术 专业 2 班 学号: 姓名: 协作者:_ 教师评定: 考勤情况程序运行情况程序质量实验技能创新精神实验报告设计文档实验_一_题目_ 进程调度_ _ 第 5 周星期 1 实验_二_题目_ 作业调度_ 第 7 周星期 1 实验_三(综合性)题目_主存空间的分配与回收_ 第 9 周星期 1 实验_四 _题目_ 文件系统 _第 11 周星期 1 实验平台:(宋体5号字)1、 计算机及操作系统:台式机,windows xp sp32、 编程环境:m
2、icrosoft visual c+ 6.0源程序名和可执行程序名:实验一:时间片轮转法.cpp 时间片轮转法.exe实验二:作业调度.cpp和作业调度.exe实验三(综合性):主存空间的分配和回收.cpp和主存空间的分配和回收.exe实验四:文件系统.cpp和文件系统.exe备注:学号:3106006475 姓名: 杨振风 协作者:_实验_一_题目_ 进程调度_第 5 周星期_ 一 _一、实验目的 用高级语言编写和调试一个进程调度程序,以加深对进程的概念及进程调度算法的理解二、实验内容和要求设计一个有 n个进程共行的进程调度程序。进程调度算法: 采用最高优先数优先的调度算法(即把处理机分配给
3、优先数最高的进程)和先来先服务算法。 每个进程有一个进程控制块( pcb)表示。进程控制块可以包含如下信息:进程名、优先数、到达时间、需要运行时间、已用cpu时间、进程状态等等。 进程的优先数及需要的运行时间可以事先人为地指定(也可以由随机数产生)。进程的到达时间为进程输入的时间。 进程的运行时间以时间片为单位进行计算。 每个进程的状态可以是就绪 w(wait)、运行r(run)、或完成f(finish)三种状态之一。 就绪进程获得 cpu后都只能运行一个时间片。用已占用cpu时间加1来表示。 如果运行一个时间片后,进程的已占用 cpu时间已达到所需要的运行时间,则撤消该进程,如果运行一个时间
4、片后进程的已占用cpu时间还未达所需要的运行时间,也就是进程还需要继续运行,此时应将进程的优先数减1(即降低一级),然后把它插入就绪队列等待cpu。 每进行一次调度程序都打印一次运行进程、就绪队列、以及各个进程的 pcb,以便进行检查。重复以上过程,直到所要进程都完成为止。三、实验主要仪器设备和材料 台式机,microsoft visual c+ 6.0四、实验原理及设计方案1、实验原理; 时间片轮转法的基本思想:所有就绪队列按fcfs排成一个队列。总是把处理机分配给队首的进程,各个进程占用的cpu时间相同。如果运行进程用完它的时间片后还未完成,就把它送回到就绪队列的末尾,把处理机重新分配给队
5、首的进程,直至所有的进程运行完毕为止。2、设计方案 设计一个数据结构包含各个进程的调度情况,然后用分程序实现各个功能。3、相关数据结构的说明struct pcb /* 定义进程控制块pcb */ char name10; 定义进程名char state; 状态int super; 优先数int ntime; 需要时间int rtime; 已运行时间struct pcb* link; 指针域*ready=null,*first,*p; typedef struct pcb pcb;4、程序流程图(详细)结束初始化pcb,输入进程信息各进程按fcfs排列就绪队列空开始就绪队列队首进程投入运行空不空
6、已达到时间片到运行进程占用cpu时间+1运行进程已占用cpu时间达到所需运行时间把运行进程插入就绪队列尾进程已完成撤消该进程未达到5、给出程序中源程序名和可执行程序名。 时间片轮转法.cpp 时间片轮转法.exe6、程序清单(源程序中要附有详细的注释)(代码部分:分成两栏(字号小五)#include stdio.h #include #include #define getpch(type) (type*)malloc(sizeof(type) #define null 0 int len;struct pcb /* 定义进程控制块pcb */ char name10; char state;
7、 int super; int ntime; int rtime; struct pcb* link; *ready=null,*first,*p; typedef struct pcb pcb; sort()if(ready=null)ready=p; first=ready;ready-link=first;elseready-link=p;ready=p;ready-link=first;input() /* 建立进程控制块函数*/ int i,num; printf(n *实验一 进程调度(时间片轮转法)*n); printf(n 请输入进程数:); scanf(%d,&num); f
8、or(i=1;iname); printf(n 输入进程优先数:); scanf(%d,&p-super); printf(n 输入进程运行时间:); scanf(%d,&p-ntime); printf(n); p-rtime=0;p-state=w; p-link=null; sort(); /* 调用sort函数*/ int space() int l=1; pcb* pr=first; while(pr!=ready) l+; pr=pr-link; return(l); disp(pcb * pr) /*建立进程显示函数,用于显示当前进程*/ printf(n qname t sta
9、te t supertndtime t runtime n); printf(|%st,pr-name); printf(|%ct,pr-state); printf(|%dt,pr-super); printf(|%dt,pr-ntime); printf(|%dt,pr-rtime); printf(n); check() /* 建立进程查看函数 */ pcb* pr; printf(n * 当前正在运行的进程是:%s,p-name); /*显示当前运行进程*/ disp(p); pr=first; printf(n *当前就绪队列状态为:n); /*显示就绪队列状态*/ while(pr
10、!=p) disp(pr); pr=pr-link; destroy() /*建立进程撤消函数(进程运行结束,撤消进程)*/ printf(n 进程 %s 已完成.n,p-name); ready-link=first;len-;free(p); running()(p-rtime)+;if(p-rtime=p-ntime) destroy();elseready=p;main() /*主函数*/ int h=0;char ch;input(); len=space();while(len!=0) ch=getchar(); h+; printf(n the execute number:%d
11、 n,h); p=first; first=p-link;p-state=r; check(); running(); p-state=w;printf(n 按任一键继续.); /ch=getchar(); printf(nn 进程已经完成.n); ch=getchar(); 五、实验结果及分析1、运行结果(要求截图)(能动态说明执行结果)首先,输入进程名及各个进程的运行时间 2、第一次运行的情况3、4、5、6、7、8、9、10、六、调试总结及心得体会 这个算法主要参考书上给的最高优先数法,每输入一个进程放在队尾,最后构成一个单向的循环链表。在运行时,每个进程的运行时间加一,而剩余需要时间减一
12、,如果满足所需要的运行时间,就把该进程移出这个循环链表。这个试验的难度值不大,主要参考书上给的思想。学号:3106006475 姓名: 杨振风 协作者:_实验_二_题目_ 作业调度_第 7 周星期_ 一 _实验目的:本实验要求学生模拟作业调度的实现,用高级语言编写和调试一个或多个作业调度的模拟程序,了解作业调度在操作系统中的作用,以加深对作业调度算法的理解。实验内容和要求:1、为单道批处理系统设计一个作业调度程序(1)、编写并调试一个单道处理系统的作业调度模拟程序。(2)、作业调度算法:分别采用先来先服务(fcfs),最短作业优先(sjf)、响应比高者优先(hrn)的调度算法。 (3)、由于在
13、单道批处理系统中,作业一投入运行,它就占有计算机的一切资源直到作业完成为止,因此调度作业时不必考虑它所需要的资源是否得到满足,它所占用的 cpu时限等因素。(4)、每个作业由一个作业控制块jcb表示,jcb可以包含如下信息:作业名、提交时间、所需的运行时间、所需的资源、作业状态、链指针等等。作业的状态可以是等待w(wait)、运行r(run)和完成f(finish)三种状态之一。每个作业的最初状态总是等待w。(5)、对每种调度算法都要求打印每个作业开始运行时刻、完成时刻、周转时间、带权周转时间,以及这组作业的平均周转时间及带权平均周转时间,并比较各种算法的优缺点。实验方法、步骤及结果测试:编写
14、并调试一个单道处理系统的作业等待模拟程序。假设在单道批处理环境下有四个作业job1、job2、job3、job4,已知它们进入系统的时间、估计运行时间。分别采用先来先服务(fcfs),最短作业优先(sjf)、响应比高者优先(hrn)的调度算法,计算出作业的平均周转时间和带权的平均周转时间 。 对每种调度算法都要求打印每个作业开始运行时刻、完成时刻、周转时间、带权周转时间,以及这组作业的平均周转时间及带权平均周转时间,并比较各种算法的优缺点。源程序如下:#include stdio.h #include #include #define null 0typedef struct jcb /*定义
15、结构体*/ char name10;char state;int htime;int rtime;struct jcb *next;jcbnode,*linkptr;typedef struct /*定义队列*/linkptr front;linkptr rear;linkqueue;/*/void initqueue(linkqueue *q) /*初始化并建立队列*/(*q).front=(*q).rear=(linkptr)malloc(sizeof(jcbnode);if(!(*q).front) printf(ntt建立队列失败!n);(*q).rear-next=null;crea
16、tworkqueue(linkqueue workqueue) jcb *njcb; jcb *p; int i,num; system(cls); printf(nntt请输入作业个数:); scanf(%d,&num); for(i=0;iname); printf(nntt输入所需运行时间:); scanf(%d,&njcb-rtime); printf(nntt到达时间为:%d,i); printf(n); njcb-htime=i; njcb-state=w; njcb-next=null; p=workqueue.rear; p-next=njcb; workqueue.rear=
17、njcb; return num; void fcfs(int n,linkptr q)/*先来先服务算法函数*/ int t,tc,ts;float t,wi,w,ti;ts=0;t=w=0; jcb *ptr; ptr = q-next; t=0; while(ptr) printf(nntt作业 %s,ptr-name); tc=t+ptr-rtime; ti=tc-ptr-htime; wi=ti/ptr-rtime; t=tc; t=t+ti; w=w+wi; printf(nntt 开始时刻ts:%d 完成时刻tc:%d ,ts,tc); printf(ntt 周转时间ti:%f
18、带权周转时间wi:%f,ti,wi); ts=ts+ptr-rtime; ptr=ptr-next; t=t/n; w=w/n; printf(nntt平均周转时间:%f 带权平均周转时间:%fn,t,w); printf(ntt按任意键返回上一步.);void sjf(int n,linkptr q) /*最短作业优先函数*/int i,t,tc,ts;float t,w,ti,wi;t=w=0;ts=0;jcb *ptr,*q,*tmp;t=0;ptr=q-next; tmp=ptr;if(ptr-next=null) printf(nntt作业 %s,ptr-name); tc=t+pt
19、r-rtime; ti=tc-ptr-htime; wi=ti/ptr-rtime;t=t+ti; w=w+wi; printf(nntt 开始时刻ts:%d 完成时刻tc:%d ,ts,tc); printf(ntt 周转时间ti:%f 带权周转时间wi:%f,ti,wi); ts=ts+ptr-rtime;else printf(nntt作业 %s,ptr-name); tc=t+ptr-rtime; ti=tc-ptr-htime; wi=ti/ptr-rtime; printf(nntt 开始时刻ts:%d 完成时刻tc:%d ,ts,tc); printf(ntt 周转时间ti:%f
20、 带权周转时间wi:%f,ti,wi); ts=ts+ptr-rtime;t=t+ti;w=w+wi;t=tc;ptr=tmp-next;while(ptr)q=ptr;i=0;while(q&irtimertime) ptr=q;q=q-next;+i;printf(nntt作业 %s,ptr-name); tc=t+ptr-rtime; ti=tc-ptr-htime; wi=ti/ptr-rtime; printf(nntt 开始时刻ts:%d 完成时刻tc:%d ,ts,tc); printf(ntt 周转时间ti:%f 带权周转时间wi:%f,ti,wi); ts=ts+ptr-rt
21、ime;t=t+ti;w=w+wi; t=tc;q=q;while(q-next!=ptr)q=q-next;q-next=ptr-next;ptr=tmp-next; t=t/n; w=w/n; printf(nntt平均周转时间:%f 带权平均周转时间:%fn,t,w); printf(ntt按任意键返回上一步.); void hrn(int n,linkptr q) /*响应比高者优先函数*/jcb *ptr,*q,*tmp;int i,t,tc,ts;float r,rp,t,w,ti,wi;t=t=w=ts=0;ptr=q-next;tmp=ptr;if(ptr-next=null)
22、/*只有一个成员的情况*/ printf(nntt %s,ptr-name); tc=t+ptr-rtime; ti=tc-ptr-htime; wi=ti/ptr-rtime; printf(nntt 开始时刻ts:%d 完成时刻tc:%d ,ts,tc); printf(ntt 周转时间ti:%f 带权周转时间wi:%f,ti,wi); ts=ts+ptr-rtime;t=t+ti;w=w+wi;else printf(nntt作业 %s,ptr-name); tc=t+ptr-rtime; ti=tc-ptr-htime; wi=ti/ptr-rtime; printf(nntt 开始时
23、刻ts:%d 完成时刻tc:%d ,ts,tc); printf(ntt 周转时间ti:%f 带权周转时间wi:%f,ti,wi); ts=ts+ptr-rtime;t=t+ti;w=w+wi;t=tc;ptr=tmp-next;while(ptr)rp=(t+ptr-rtime)/ptr-rtime;q=ptr;i=0;while(q&irtime)/q-rtime;if(rrp) rp=r;ptr=q;q=q-next;+i; printf(nntt作业 %s,ptr-name); tc=t+ptr-rtime; ti=tc-ptr-htime; wi=ti/ptr-rtime; prin
24、tf(nntt 开始时刻ts:%d 完成时刻tc:%d ,ts,tc); printf(ntt 周转时间ti:%f 带权周转时间wi:%f,ti,wi); ts=ts+ptr-rtime; t=t+ti; w=w+wi;t=tc;q=q; while(q-next!=ptr) q=q-next; q-next=ptr-next; ptr=tmp-next;t=t/n; w=w/n; printf(nntt平均周转时间:%f 带权平均周转时间:%fn,t,w); printf(ntt按任意键返回上一步.);void main() linkqueue workqueue; jcb *q; int
25、num; int choice; for(;) system(cls); printf(nntt*该程序用于模拟作业调度过程*); printf(nntt (该程序以作业完成的顺序依次输出) ); printf(nntt -); printf(ntt| 1.先来先服务(fcfs) 2.最短作业优先(sjf)|n); printf(ntt| 3.响应比高者优先(hrn)4.退出 |); printf(ntt -); printf(ntt请输入你的选择:); scanf(%d,&choice); if (choice=4) exit(0); else if(choice4) continue; e
26、lse initqueue(&workqueue); q=workqueue.front; num=creatworkqueue(workqueue); switch(choice) case 1: fcfs(num,q); break; case 2: sjf(num,q); break; case 3: hrn(num,q); break; getch(); 程序运行过程如下:运行程序,选择算法先来先服务算法运行过程如下:1.选择12.输入作业数目3.输入作业信息,到达时间为系统默认值4.运行结果如下:5.对输入的数据进行分析,与理论值相符!程序过程正确。最短作业优先算法运行过程如下:1.
27、选择最短作业优先算法2.输入相应信息,取教材76页图表的数据输入。即进程名abcde平均到达时间01234服务时间43524sjf完成时间4918613周转时间4816398带权周转时间12.673.11.52.252.13.运行结果如下:4.结果分析 实验结果与图表上的理论值相符响应比高者优先算法运行过程如下:1.选择3 hrn2.同样输入sjf算法时图表中的信息后运行结果如下:3.对输入的信息进行结果分析,作业的运行顺序为a-d-b-e-c,与实验的结果相符小结:通过对这次的实验,使我对作业调度算法有了更深层次的理解。相对进程调度,作业调度相对复杂一些,通过这次试验能很好的理解各个算法的内
28、容,同时为后面的主存空间与分配的试验做好准备。学号:3106006475 姓名: 杨振风 协作者:_实验_三_题目_主存空间的分配与回收_第 9 周星期_一 实验目的:熟悉主存的分配与回收。理解在不同的存储管理方式下,如何实现主存空间的分配与回收。掌握动态分区分配方式中的数据结构和分配算法及动态分区存储管理方式及其实现过程。实验内容和要求:主存的分配和回收的实现是与主存储器的管理方式有关的。所谓分配,就是解决多道作业或多进程如何共享主存空间的问题。所谓回收,就是当作业运行完成时将作业或进程所占的主存空间归还给系统。可变分区管理是指在处理作业过程中建立分区,使分区大小正好适合作业的需求,并且分区
29、个数是可以调整的。当要装入一个作业时,根据作业需要的主存量查看是否有足够的空闲空间,若有,则按需要量分割一个分区分配给该作业;若无,则作业不能装入,作业等待。随着作业的装入、完成,主存空间被分成许多大大小小的分区,有的分区被作业占用,而有的分区是空闲的。实验要求使用可变分区存储管理方式,分区分配中所用的数据结构采用空闲分区表和空闲分区链来进行,分区分配中所用的算法采用首次适应算法、循环首次适应算法、最佳适应算法三种算法来实现主存的分配与回收。同时,要求设计一个实用友好的用户界面,并显示分配与回收的过程。实验方法、步骤及结构测试:某系统采用可变分区存储管理,在系统运行的开始,假设初始状态下,可用
30、的内存空间为640kb,存储器区被分为操作系统分区(40kb)和可给用户的空闲区(600kb)。作业1申请130kb作业2申请60kb作业3申请100kb作业2释放60kb作业4申请200kb作业3释放100kb作业1释放130kb作业5申请140kb作业6申请60kb作业7申请50kb当作业1进入内存后,分给作业1(130kb),随着作业1、2、3的进入,分别分配60kb、100kb、经过一段时间的运行后,作业2运行完毕,释放所占内存。此时,作业4进入系统,要求分配200kb内存。作业3,1运行完毕,释放所占内存。此时又有作业5申请140kb,作业6申请60kb,作业7申请50kb。请你为它
31、们进行主存分配和回收。1、采用可变分区存储管理,使用空闲分区表或空闲分区链实现主存分配和回收。空闲分区表:设计一张空闲区说明,记录哪些分区是空闲的。为内存中每个尚未分配出去的分区设置一个表项。包括:分区序号、分区始址、分区大小及该分区的状态。当分配内存空间时,就从中进行查找,如找到符合条件的空间的空闲区就分配给作业。空闲分区链:使用链指针把所有的空闲分区链成一条链,为了实现对空闲分区的分配和链接,在每个分区的起始部分设置状态位、分区的大小和链接各个分区的前向指针,由状态位指示该分区是否分配出去了;同时,在分区尾部还设置有一后向指针,用来链接后面一个分区;分区的中间部分是用来存放作业的空闲内存空
32、间,当该分区分配出去后,状态位就由“0”置为“1”。设计一个内存空闲分区表(链),内存空闲分区通过空闲分区表(链)来管理,在进行内存分配时,系统优先使用空闲区低端的空间。设计一个空闲分区说明表(链),设计一个某时刻主存空间占用情况表,作为主存当前使用基础。初始化空闲区和已分配区说明表的值。设计作业申请队列以及作业完成后的释放顺序,实现主存的分配和回收。要求每次分配和回收后显示出空闲内存分区表(链)的情况。把空闲区说明(链)表的变化情况以及各作业的申请、释放情况显示、打印出来。2、采用可变分区存储管理,选用首次适应算法、循环首次适应算法、最佳适应算法三个算法中的任选一种算法设计主存分配和回收程序
33、。3、实现过程主存空间分配:设计作业申请队列,动态输入构造空闲区表,并显打印示构造好的空闲区表。键盘接收内存申请尺寸大小。根据申请,实施内存分配,并返回分配所得内存首址。分配完后,调整空闲区表(即扣除分配部分),并显示调整后的空闲区表。若分配失败,返回分配失败信息。要求每次分配后显示出空闲内存分区表(链)的情况。主存空间回收:当一个作业执行完成撤离时,作业所占的分区应该归还给系统。归还的分区如果与其它空闲区相邻,则应合成一个较大的空闲区,登记在空闲区说明表中。此时,相邻空闲区的合并问题,要求考虑四种情况:1)、释放区下邻空闲区(低地址邻接)2)、释放区上邻空闲区(高地址邻接)3)、释放区上下都
34、与空闲区邻接4)、释放区上下都与空闲区不邻接动态输入构造空闲区表,并显示构造好的空闲区表。根据空闲区表,按内存回收的四种情况从键盘接收回收区域的内存首址与大小。回收区域,调整空闲区表(与前面空闲区相连、与后面空闲区相连、与前后空闲区相连则合并、与前后空闲区都不相连则插入该项),并显示调整后的空闲区表。要求每次回收后显示出空闲内存分区表(链)的情况。程序流程图如下:否是否结束是修改分区表q.size-aneedaneed动态向内存申请一个大小为need的未分配作业分区源程序如下:#include #include #include #include #define null 0struct sb
35、lock char name10; int add; int size; struct sblock *next; struct sblock *front; ;sblock *fhead;sblock *head;sblock *rear;void ini()fhead=new sblock;fhead-front=fhead-next=null;fhead-size=0;head=rear=new sblock;head-front=rear-front=null;head-next=rear-next=null; sblock *ptr=new sblock;printf(nntt本程序
36、的虚拟条件:内存空间为 640kb);printf(nnt 操作系统分区占用(40kb) 用户可用空闲区(600kb)); ptr-size=600;ptr-add=0;ptr-next=null;ptr-front=fhead;fhead-next=ptr;void disp() int sp,rsp;sblock *p;sblock *q;p=head-next;q=fhead-next;printf(ntt已分配空区信息表: 作业名,开始地址,大小(kb);printf(ntt 操作系统分区 0 40 );while(p)sp=p-add+40;printf(ntttt %s %d %d
37、,p-name,sp,p-size);p=p-next; printf(ntt空闲分区信息表: 开始地址,大小(kb);while(q) rsp=q-add+40;printf(ntttt %d %dn,rsp,q-size);q=q-next;void input()sblock *q=fhead-next;sblock *p=new sblock;printf(ntt请输入作业名:);scanf(%s,&p-name);printf(tt请输入作业大小(kb):);scanf(%d,&p-size);p-front=p-next=null; if(q != null) while(q !=
38、 null & q-sizesize) q=q-next; if(q=null)printf(ntt空间分配失败.);elseif(q-size=p-size)if(q-next=null)p-add=q-add; q-front-next=q-next; q-front = null;elsep-add=q-add;q-front-next=q-next;q-next-front=q-front;q-front=q-next=null;elsep-add=q-add;q-add=q-add+p-size;q-size=q-size-p-size;rear-next=p;p-next=null
39、;rear=p;disp();void resort()char n10;printf(ntt请输入要回收的作业名:);scanf(%s,&n);sblock *p=head-next;while(p & strcmp(p-name,n) != 0) p=p-next;if(p != null) sblock *ptr=head; while(ptr-next!=p) ptr=ptr-next;ptr-next=p-next;sblock *q=fhead;while(q-next&q-next-addadd) q=q-next;if(q-next=null)if(q-add+q-size!=
40、p-add)q-next=p;p-front=q;p-next=null;elseq-size=q-size+p-size;elseif(q-next-add=p-add+p-size) q-next-size=q-next-size+p-size;q-add=p-add;elseif(q-add+q-size=p-add) q-size=q-size+p-size;else p-next=q-next; q-next-front=p;q-next=p;p-front=q;disp();void main() int choice;printf(nntt*该程序用于模拟主存空间的分配与回收过程
41、*);ini(); while(1) printf(ntt1.申请空间t2.释放空间t0.退出); printf(ntt请输入你的选择:); scanf(%d,&choice); switch(choice) case 0: exit(0);case 1: input();break;case 2: resort();break;default: printf(tt输入错误.请重新输入n); getch();程序运行过程如下:本程序设置了系统默认值程序运行过程,将程序按实验步骤要求运行,即作业1申请130kb 作业2申请60kb作业3申请100kb 作业2释放60kb后程序如下:接着作业4申请
42、200kb然后接着运行,作业3释放100kb 作业1释放130kb作业5申请140kb 作业6申请60kb作业7申请50kb之后的最终结果如下:对运行的结果进行分析发现实验结果与理论结果相符,该程序形象生动的揭示了空间资源的分配和回收过程。使我们能更直观的了解这一过程。试验总结: 这个试验难度有点大,没有实现可视化界面,一方面自己没有足够的掌握好vc环境里面各个图形化函数的调用,另外就是由于时间紧的原因未能实现,但是能够很好的理解课本里面描述的主存的分配与回收。学号:3106006475 姓名: 杨振风 协作者:_实验_四_题目_文件系统_第 11 周 星期 1 实验目的模拟文件系统实现的基本功能,了解文件系统的基本结构和文件的各种管理方法,加深理解文件系统的内部功能及内部实现。通过用高级语言编写和调试一个简单的文件系统,模拟文件管理的工作过程,从而对各种文件操作命令的实质内容和执行过程有比较深入的了解。 实验内容和要求编程模拟一个简单的文件系统,实现文件系统的管理和控制功能。要求本文件系统采用两级目录,即设置主文件目录mfd和用户文件目录ued。另外,为打开文件设置运行文件目录afd。设计一个10个用户的文
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 出口石油产品2024年度运输合同
- 电气设备安装与保护04合同
- 二零二四年度网络安全维护合同:网站防护与数据安全协议
- 泵站设备融资租赁合同(二零二四年)
- 二零二四年度广告牌清洗承包合同
- 二零二四年度彩钢房安全评估与拆除安装合同
- 二零二四年度网络安全审查服务合同
- 2024年度数据管理与保护合同
- 第七章2024年度商标使用许可合同
- 房东房屋租赁合同范本
- 湖北省武汉市汉阳区2024-2025学年九年级上学期期中语文卷
- 2024-2030年中国冷库及冷风机行业竞争趋势及未来发展策略分析报告
- 2024官方兽医考试更新题库及答案
- 身临其境 课件-2024-2025学年人教版(2024)初中美术七年级上册
- 2024年消防宣传月知识竞赛考试题库200题(含答案)
- 2024年入团积极分子考试题库及答案
- 蒋诗萌小品《谁杀死了周日》台词完整版
- 企业文化智慧树知到期末考试答案2024年
- GB 2707-2016食品安全国家标准鲜(冻)畜、禽产品
- PPT课件--《丑小鸭》
- 园艺设施的规划和要求
评论
0/150
提交评论