操作系统进程调度实验报告

  • 格式:doc
  • 大小:223.50 KB
  • 文档页数:24

第三季度
N 该操作是否合理? Y
100
显示已经完成操作的 80 信息 60
40 20
退出用户?
东部 西部 北部
0 第一季度
Y Y 结束 退出系统?
第三季度
N
2015-1-6
4/24
NORTH CHINA UNIVERSITY OF TECHNOLOGY
五、程序代码
#include <stdio.h> #include <stdlib.h> #include <conio.h> #include <time.h> #include <string.h> #define MaxUser 100 //定义最大MDF主目录文件 #define MaxDisk 512*1024 //模拟最大磁盘空间 #define commandAmount 12 //对文件操作的指令数 #define userNameMAX 16 #define passwordMAX 32 //存储空间管理有关结构体和变量 char disk[MaxDisk]; //模拟512K的磁盘存储空间 typedef struct distTable //磁盘块结构体 { int maxlength; int start; int useFlag; struct distTable *next; }diskNode; diskNode *diskHead; struct fileTable //文件块结构体 { char fileName[80]; int strat; //文件在磁盘存储空间的起始地址 int length; //文件内容长度 int maxlength; //文件的最大长度 char fileKind[3]; //文件的属性——读写方式 struct tm *timeinfo; bool openFlag; //判断是否有进程打开了该文件 //fileTable *next; }; //两级目录结构体 typedef struct user_file_directory //用户文件目录文件UFD { //char fileName[10]; struct fileTable *file; struct user_file_directory *next; }UFD; //UFD *headFile;
操作系统(2014 年秋季学期)
序号:




系别:计算机科学与技术 班级:数媒 12-1 班 姓名: 学号:12101090105 实验名称:进程调度
总成绩: 评语:
日期:
NORTH CHINA UNIVERSITY OF TECHNOLOGY
《操作系统》实验报告
实验名称 实验日期 一、实验目的、要求与环境
3.环境: 1. 硬件设备:PC 机一台 2. 软件环境:安装 Windows 操作系统或者 Linux 操作系统,并安装相关的程序开发环境,如 C \C++\Java 等编程语言环境。
二、相关背景知识
最基本的文件操作 (1)创建文件 在创建一个新文件时,系统首先要为新文件分配必要的外存空间,并在文件系统的目录中,为之建立一 个目录项。目录项中应该记录新文件的文件名及其在外存的地址等属性。 (2)删除文件 当已不再需要某文件时,可将它从文件系统中删除。在删除时,系统应该先从目录中找到要删除的文件 的目录项,使之成为空项,然后回收该文件所占用的存储空间。 (3 CHINA UNIVERSITY OF TECHNOLOGY
printf("********************************************\n"); printf("Please chooce the function key:> "); char choice; choice = getchar(); fflush(stdin); switch(choice) { case '1': userCreate(); break; case '2': userID = login(); break; case '3': print_userTable(); break; default: printf("\n您的输入有误,请重新选择\n"); system("pause");break; } while(userID!=-1) { fflush(stdin); system("cls"); printf("———————————————————————————————————————\n");
2015-1-6 5/24
NORTH CHINA UNIVERSITY OF TECHNOLOGY
typedef struct master_file_directory //主文件目录MFD { char userName[userNameMAX]; char password[passwordMAX]; UFD *user; }MFD; MFD userTable[MaxUser]; int used=0; //定义MFD目录中用已有的用户数 //文件管理 void fileCreate(char fileName[],int length,char fileKind[]); // 创建文件 void fileWrite(char fileName[]); // 写文件 void fileCat(char fileName[]); //读文件 void fileRen(char fileName[],char rename[]); //重命名文件 void fileFine(char fileName[]); //查询文件 void fileDir(char UserName[]); //显示某一用户的所有文件 void fileClose(char fileName[]); // 关闭已打开的文件 void fileDel(char fileName[]); //删除文件 void chmod(char fileName[],char kind[]); //修改文件的读写方式 int requestDist(int &startPostion,int maxLength); // 磁盘分配查询 void initDisk(); //初始化磁盘 void freeDisk(int startPostion); //磁盘空间释放 void diskShow(); //显示磁盘使用情况 void print_userTable();//显示用户目录 void userCreate(); //创建用户
2015-1-6
3/24
NORTH CHINA UNIVERSITY OF TECHNOLOGY
四、实验设计的流程图
开始
选择对用户要执行的操作,如登录
输入用户 名 输入密码
N 密码正确?
Y
100
80 获得操作该用户文件的权限 60
选择对该用户文件的操作
40 20
东部 西部 北部
0 第一季度
输入文件名
2015-1-6 2/24
NORTH CHINA UNIVERSITY OF TECHNOLOGY
在读一个文件时,须在相应的系统调用中给出文件名和应该读入的内存目标地址。此时,系统同样要查 找目录,找到制定的目录项,从中得到被读文件在外存中的位置。在目录项中,还有一个指针用于对文 件的读/写。 (4)写文件 在写一个文件时,须在相应的系统调用中给出该文件名及该文件在内存中的(源)地址。为此,也同样 须先查找目录,找到指定文件的目录项,在利用目录中的写指针进行写操作。 (5)截断文件 如果一个文件的内容已经陈旧而需要全部更新文件的内容时,一种方法是将此文件删除,再重新创建一 个新文件。但如果文件名及其属性均无改变时,则可采取另一种所谓的截断文件的方法,此即将原有文 件的长度设置为 0,或说放弃原有的文件内容。 (6)设置文件的读/写位置 前述的文件读/写操作,都只提供了对文件顺序存取的手段,即每次都是从文件的始端读或写。设置文件读 / 写位置的操作,用于设置文件读/写指针的位置,以便每次读/写文件时,不是从其始端而是从所设置的位置开 始操作。也正因如此,才能改顺序存取为随机存取。
int login(); int userID = -1; //用户登录的ID号,值为-1时表示没有用户登录 int main() { char order[commandAmount][10]; strcpy(order[0],"create"); strcpy(order[1],"rm"); strcpy(order[2],"cat"); strcpy(order[3],"write"); strcpy(order[4],"fine"); strcpy(order[5],"chmod"); strcpy(order[6],"ren"); strcpy(order[7],"dir"); strcpy(order[8],"close"); strcpy(order[9],"return");
三、实验设计说明 最简单最直观的进程调度策略是基于优先级的调度, 多数实时系统采用基于优先级的调度, 每个进程根据它重要程度的不同被赋予不同的优先级,调度器在每次调度时,总选择优先级最 高的进程开始执行。 首先要考虑的问题是如何分配优先级,对于进程优先级的分配可以采用静态和动态两种方 式,静态优先级调度算法:这种调度算法给那些系统中得到运行的所有进程都静态地分配 一个优先级.静态优先级的分配可以根据应用的属性来进行, 比如进程的周期, 用户优先级, 或者其它的预先确定的策略.单调率算法(RM)调度算法是一种典型的静态优先级调度算法, 它根据进程的执行周期的长短来决定调度优先级,那些具有小的执行周期的进程具有较高 的优先级.动态优先级调度算法: 这种调度算法根据进程的资源需求来动态地分配进程的优 先级, 其目的就是在资源分配和调度时有更大的灵活性.在实时系统中,最早期限优先算法 (EDF)算法是使用最多的一种动态优先级调度算法, 该算法给就绪队列中的各个进程根据它 们的截止期限(Deadline)来分配优先级,具有最近的截止期限的进程具有最高的优先级。