操作系统课程设计模拟DOS文件的建立与使用

合集下载

DOS功能调用及汇编语言程序设计举例

DOS功能调用及汇编语言程序设计举例

DOS功能调⽤及汇编语⾔程序设计举例DOS功能调⽤及汇编语⾔程序设计举例5.1 DOS功能调⽤DOS-磁盘操作系统,象WINDOS操作系统⼀样是进⾏计算机系统管理的软件,在WINDOS 以前,PC机上主要应⽤的是DOS 操作系统,两者间的最⼤区别是在DOS 操作系统下,⽤户可以利⽤⾃⼰所编的程序直接对外设(硬件端⼝)进⾏操作,如对磁盘进⾏读写,对打印机进⾏控制等,⽽在WINDOS操作系统下,⽤户只能通过特有的驱动程序才能对其进⾏操作,因为所有外设均被WINDOS操作系统统⼀管理,⽤户⽆法在⾃⼰的程序中对他门进⾏操作。

1、DOS功能在PC机的操作系统(DOS)的安装过程中,将⼀些常⽤的⼦程序安装到了内存单元中,⽤户可以在编写⾃⼰的⽤户程序时,进⾏调⽤。

其中有两种:BIOS⼦程序:功能管理与计算机相连接的外部设备(显⽰器、键盘、磁盘驱动)程序,称为基本输⼊输出系统(basic Input/output system)这部分程序是存放在ROM 区所以通常称为:ROM BIOSDOS功能程序:与BIOS程序⼀样,DOS功能程序也是计算机操作系统开发⼈员编写的⼀些常⽤的⽤于磁盘⽂件管理的⼦程序,主要⽤于磁盘⽂件的建⽴、打开、读写、关闭,⽤户同样可以在⾃⼰的程序中对他们进⾏调⽤,简化⽤户程序的开发。

与BIOS不同的是DOS功能程序是存放在硬盘上的,在系统上电时,由操作系统,将其安装到内存中的,称为常驻内存程序。

⽤户调⽤这两种程序⼀般采⽤中断指令进⾏调⽤:DOS功能的调⽤⽅法:1、在AH中写⼊功能调⽤号2、在指定的寄存器中设置⼊⼝参数3、⽤INT 21 指令执⾏调⽤4、根据出⼝参数分析调⽤执⾏情况实际上,所有的DOS 功能⼦程序被组成了⼀个⼤程序存放在内存单元中,从nn1:nn2 开始的单元中,在操作系统上电进⾏系统初始化时,将nn1:nn2 存放到了中断向量表中,0000H:0084H开始的连续4个单元中,当⽤户在⽤户程序中⽤INT 21H 调⽤DOS的某⼀个功能时,即控制程序转移到nn1:nn2 开始的程序,在这段程序中⾸先根据AH中的功能,可以分析出⽤户调⽤的哪⼀个功能从⽽在转到相应地⽅执⾏相应的程序段。

DOS操作系统模拟

DOS操作系统模拟
软件编程,设计功能模块、调试,整理实验数据;
撰写课程设计报告;
验收程序、答辩。
每人的光盘目录内含:
(1)源程序文件和可执行程序文件(以班级为单位刻录光盘上交);
(2)打印课程设计任务书一份;
(3)打印课程设计报告一份(小组内每人一份,要求具体内容不能相同)。
4.课程设计工作进度计划:
起迄日期
工作内容
2012年
5月29日~5月30日
5月31日~6月7日
6月8日
6月9日
选择课程设计题目,明确课程设计任务;查阅书籍,收集资料,确定设计方案和思路;
1)进一步巩固和复习C/C++程序设计的基础知识。
2)培养学生结构化程序、模块化程序设计的方法和能力。
3)了解软件的编制过程及各环节的具体内容
4)提高学生程序调试技巧、软件设计能力和代码规范化等素质
5)提高学生分析问题、解决问题以及实际运用能力
2.课程设计的具体工作内容:
1)熟悉常用的DOS命令。息
3)实现copy的功能,复制一个或一组文件到指定的磁盘或目录中
4)实现type的功能,在屏幕上显示文本文件内容命令
5)实现cls的功能,清除显示器屏幕上的内容,使DOS提示符到屏幕左上角。
6)或者实现别的DOS命令的功能也可以,至少实现四个以上。
课 程 设 计 任 务 书
3.对课程设计成果的要求:
提交课程设计报告和光盘(每班统一制作1张光盘,每人一个目录)。
中北大学
课程设计任务书
学院、系:
软件学院
专业:
软件工程
学 生 姓 名:
学 号:
设 计 题 目:
简易DOS操作系统模拟显示
起迄日期:

第3章 案例4 DOS操作系统及基本操作精品PPT课件

第3章  案例4  DOS操作系统及基本操作精品PPT课件
其实,有实际的可执行文件的命令都是外部命令
任务3
常用DOS内部命令
1、清屏命令CLS 2、日期命令DATE 3、时间命令 4、显示DOS版本命令CER
任务4 常用DOS内部命令——文件操作命令DIR
1、列文件清单DIR 功能:显示指定目录或文件的目录信息。
格式:DIR [d:][path][文件名] [/P][/W][/S][/A][/O[SORTORDER]] 说明:略
任务3
常用DOS内部命令、外部命令
常用DOS外部命令:
1、FORMAT()--格式化命令 2、EDIT()--编辑命令 3、SYS()--系统引导文件传输命令 4、ATTRIB(Attrib.EXE)--文件属性设置命令 5、XCOPY(Xcopy.EXE)--拷贝命令 6、SCANDISK(Scandisk.EXE)--磁盘扫描程序 7、CHKDSK(Chkdsk.EXE)--磁盘检查命令 8、MOVE(Move.EXE)--文件移动命令 9、DELTREE(Deltree.EXE)--删除命令 10、FDISK(Fdisk.EXE)--分区命令
(2) 若当前文件夹AA,显示BB子目录下的所有文件及下级子目录文件; 命令:方法1:D:\MM\AA>dir D:\mm\BB\*.*/S↙(绝对路径) 方法2:D:\MM\AA>dir mm\BB\*.*/S↙(绝对路径)
思考可不可以 用相对路径?
任务4 常用DOS内部命令——文件操作命令COPY
任务1
DOS磁盘操作系统
2.DOS的组成
DOS由四部分组成: (1)DOS引导程序 (2)基本输入输出系统IO.SYS (3)DOS内核MSDOS.SYS (4)命令处理程序 磁盘格式化为系统盘时,写入磁盘,可用该盘启动系统。

DOS操作系统基本使用方法

DOS操作系统基本使用方法
a:>ren filename1 filename2
c:>copy source destination
2.常用DOS命令
关于文件的命令
(1)查看文件:type [d:] [path] <filename> (内部命令)
注:·此命令只能用于查看由ASCII码
CON,AUX,PRN,COM1,COM2,LPT1,LPT2,NUL 这些是DOS系统保留字。特指某些设备。
例如,CON表示控制台,PRN表示打印机...它们也不能用作文件名来使用。
符号"*"和"?"是通配符。通常在文件名中使用。"*"表示在此字符处可以用任意个
DOS操作系统基本使用方法
DOS的主要功能和构成
DOS的启动
文件和文件管理
基本DOS命令
DOS的主要功能和构成
1.主要功能:文件管理、内存管理、设备管理、作业管理和CPU管理。
根目录:隐含于一个软盘,或者一个硬盘的一个分区中。根目录是DOS中唯一不能删
除的一个目录。通常以“\”表示。根目录中登录的子目录和文件存放在磁盘的文件
区(数据区)之前的固定几个扇区内。
目录树:根目录在最顶层。它包含的子目录是一级子目录。每一个一级子目录又可
以包含若干二级子目录...,这样的组织结构就叫做目录树。
是由三部分组成的:命令字、文件标识和参数。
<命令字> [<文件标识>] [开关参数1] [开关参数2]... [开关参数n]

DOS常用命令实训报告

DOS常用命令实训报告

实验报告一、实验目的1、了解DOS操作系统。

2、熟练使用DOS的文件和目录常用操作命令。

二、实验准备1、一张能进入DOS系统的启动盘。

2、一台可正常运行的计算机(带光驱)。

三、实验注意事项1、实训前复习常用的DOS命令。

四、实验内容及步骤1、开机进入BIOS设置程序,将第一启动项设为光驱启动。

2、将DOS启动盘插进光驱,进入DOS系统。

3、在C盘根目录下输入“dir/w”或“dir/p”查看C盘根目录下的文件信息4、输入“cd 123”,进入123文件夹目录5、输入“copy c:\123.txt d:\”将C盘根目录下的123.txt文件复制到D盘根目录。

6、输入“del c:\123.txt”删除C盘下的123.txt文件7、输入“deltree c:\123”删除C盘下的123整文件夹。

8、输入“md 123”在当前目录下新建目录123。

9、输入“rd 123”删掉目录123。

10、输入“move c:\123.txt d:\”将C盘下123.txt移到D盘。

11、输入“date”查看当前日期,输入“date 05-01-2012”将时间改为2012年5月01日。

12、输入“cls”清屏13、输入“label c 123”回车后再输入原来的卷标回车,按下“Y”确认,将C盘卷标改为123.14、输入“convert d: /fs:ntfs”将D盘由原来的FAT32格式转为NTFS格式。

五、实验体会通过这次实训,让我初步了解了DOS这个系统,并学习了一些DOS常用的命令,也认识到DOS在维护中的作用是很重要的,DOS系统的确已经完全被取代,但DOS命令仍作为使用Windows之余的一个有益补充,用来解决很多WIindows解决不了的问题。

报告人。

操作系统课程设计-模拟一个简单二级文件管理系统

操作系统课程设计-模拟一个简单二级文件管理系统

模拟一个简单二级文件管理系统设计目的:通过具体的文件存储空间的管理、文件的物理结构、目录结构和文件操作的实现,加深对文件系统内部功能和实现过程的理解。

设计内容:模拟一个简单二级文件管理系统一、实验内容描述1 实验目标本实验的目的是通过一个简单多用户文件系统的设计,加深理解文件系统的内部功能及内部实现.2 实验要求为DOS系统设计一个简单的二级文件系统.要求做到以下几点:①可以实现下列命令:login 用户登录dir 列文件目录create 创建文件delete 删除文件open 打开文件close 关闭文件read 读文件write 写文件②列目录时要列出文件名、物理地址、保护码和文件长度.③源文件可以进行读写保护.二、程序主要内容1设计思路程序中要求每个用户在登陆后才可对其拥有的文件进行操作,用户对于其他用户的文件无操作权.文件操作包括浏览、创建、删除、打开、关闭、阅读、写入、修改模式.其他操作包括新建用户、帮助、用户登入、用户登出、退出系统.在程序文件夹下有个名为“file”的系统根目录,此目录下包括:一个名为“mfd”的文件,记录所有注册过的帐号及密码;用户文件,以用户名作为文件名,内容为其拥有的文件名及属性;一个名为“keiji”的文件夹.“keiji”文件夹中包括:“file.p”指针文件,记录所有已用的物理地址;一些以物理地址为名的文件,内容为文件内容.2 数据结构file结构体系统文件数据结构:fpaddrint,文件的物理地址、flengthint,文件长度、fmodeint,文件模式0.只读;1.可写;2.可读写;3.保护、fname[]char,文件名;filemode结构体文件状态数据结构:isopenint,文件当前状态,0.关闭;1.打开、modeint,文件模式0.只读;1.可写;2.可读写;3.初始化;user结构体用户信息数据结构:uname[]char,用户名、upassword[]char,用户密码;userfile结构体用户文件数据结构:uname[]char,用户名、ufile[]file,用户拥有的文件数组.代码:#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 //对文件操作的指令数//存储空间管理有关结构体和变量char disk[MaxDisk]; //模拟512K的磁盘存储空间typedef struct distTable //磁盘块结构体{int maxlength;int start;int useFlag;distTable *next;}diskNode;diskNode *diskHead;struct fileTable //文件块结构体{char fileName[10];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];fileTable *file;user_file_directory *next;}UFD;//UFD *headFile;typedef struct master_file_directory //主文件目录MFD{char userName[10];char password[10];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 userCreate();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");strcpy(order[10],"exit");strcpy(order[11],"df");char command[50],command_str1[10],command_str2[10],command_str3[5],command_str4[3];int i,k,j;int length;initDisk(); //初始化磁盘for(i=0;i<MaxUser;i++) //初始化用户UFD目录文件的头指针{userTable[i].user=(UFD *)malloc(sizeof(UFD));userTable[i].user->next=NULL;}while(1){printf("********************************************\n");printf(" 1、Creat user\n");printf(" 2、login\n");printf("********************************************\n");printf("Please chooce the function key:>");int choice;scanf("%d",&choice);if(choice==1) userCreate();else if(choice==2) userID=login();else printf("您的输入有误,请重新选择\n");while(userID!=-1){fflush(stdin);printf("———————————————————————————————————————\n ");printf(" create-创建格式:create a1 1000 rw,将创建名为a1,长度为1000字节可读可写的文件\n");printf(" rm-删除格式:rm a1,将删除名为a1的文件\n");printf(" cat-查看文件内容格式:cat a1,显示a1的内容\n");printf(" write-写入格式:write a1\n");printf(" fine-查询格式:fine a1 ,将显示文件a1的属性\n");printf(" chmod-修改格式:chmod a1 r,将文件a1的权限改为只读方式\n");printf(" ren-重命名格式:ren a1 b1 ,将a1改名为b1\n");printf(" dir-显示文件格式:dir aaa,将显示aaa用户的所有文件\n");printf(" df-显示磁盘空间使用情况格式:df\n");printf(" close-关闭文件格式:close a1,将关闭文件a1\n");printf(" return-退出用户,返回登录界面\n");printf(" exit-退出程序\n");printf("————————————————————————————————————————\n");printf("please imput your command:>");gets(command);int select;for(i=0;command[i]!=' '&&command[i]!='\0';i++) //command_str1字符串存储命令的操作类型command_str1[i]=command[i];k=i;command_str1[k]='\0';for(i=0;i<commandAmount;i++){if(!strcmp(command_str1,order[i])){select=i;break;}}if(i==commandAmount){printf("您输入的命令有误,请重新输入\n");continue;}for(i=k+1,k=0;command[i]!=' '&&command[i]!='\0';i++,k++) //commmand_str2字符串存储文件名或用户名command_str2[k]=command[i];command_str2[k]='\0';k=i;switch(select){case 0:for(i=k+1,k=0;command[i]!=' ';i++,k++)command_str3[k]=command[i];command_str3[k]='\0';k=i;j=1;length=0; //初始化文件长度for(i=strlen(command_str3)-1;i>=0;i--) //把字符串转换为十进制{length+=(command_str3[i]-48)*j;j*=10;}for(i=k+1,k=0;command[i]!=' '&&command[i]!='\0';i++,k++)command_str4[k]=command[i];command_str4[k]='\0';fileCreate(command_str2,length,command_str4);break;case 1:fileDel(command_str2);break;case 2:fileCat(command_str2);break;case 3:fileWrite(command_str2);break;case 4:fileFine(command_str2);break;case 5:for(i=k+1,k=0;command[i]!=' '&&command[i]!='\0';i++,k++)command_str3[k]=command[i];command_str3[k]='\0';chmod(command_str2,command_str3);break;case 6:for(i=k+1,k=0;command[i]!='\0';i++,k++)command_str3[k]=command[i];command_str3[k]='\0';fileRen(command_str2,command_str3);break;case 7:fileDir(command_str2);break;case 8:fileClose(command_str2);break;case 9:UFD *p;for(p=userTable[userID].user->next;p!=NULL;p=p->next) //退出用户之前关闭所有打的文件if(p->file->openFlag)p->file->openFlag=false;system("cls");userID=-1;break;case 10:exit(0);break;case 11:diskShow();break;}}}return 0;}void userCreate(){char c;char userName[10];int i;if(used<MaxUser){printf("请输入用户名:");for(i=0;c=getch();i++){if(c==13) break;elseuserName[i]=c;printf("%c",c);}userName[i]='\0';for(i=0;i<used;i++){if(!strcmp(userTable[i].userName,userName)){printf("\n");printf("该用户名已存在,创建用户失败\n");system("pause");return;}}strcpy(userTable[used].userName,userName);printf("\n");printf("请输入密码:");for(i=0;c=getch();i++){if(c==13) break;elseuserTable[used].password[i]=c;printf("*");}userTable[userID].password[i]='\0';printf("\n");printf("创建用户成功\n");used++;system("pause");}else{printf("创建用户失败,用户已达到上限\n");system("pause");}fflush(stdin);}int login(){char name[10],psw[10];char c;int i,times;printf("请输入用户名:");for(i=0;c=getch();i++){if(c==13) break;elsename[i]=c;printf("%c",c);}name[i]='\0';for(i=0;i<used;i++){if(!strcmp(userTable[i].userName,name))break;}if(i==used){printf("\n您输入的用户名不存在\n");system("pause");return -1;}for(times=0;times<3;times++){memset(psw,'\0',sizeof(psw));printf("\n请输入密码:");for(i=0;c=getch();i++){if(c==13) break;elsepsw[i]=c;printf("*");}printf("\n");for(i=0;i<used;i++){if(!strcmp(psw,userTable[i].password)){printf("用户登录成功\n");system("pause");break;}}if(i==used){printf("您输入的密码错误,您还有%d次输入机会\n",2-times);if(times==2) exit(0);}else break;}fflush(stdin);return i;}void initDisk(){diskHead=(diskNode *)malloc(sizeof(diskNode));diskHead->maxlength=MaxDisk;diskHead->useFlag=0;diskHead->start=0;diskHead->next=NULL;}int requestDist(int &startPostion,int maxLength){int flag=0; //标记是否分配成功diskNode *p,*q,*temp;p=diskHead;while(p){if(p->useFlag==0&&p->maxlength>maxLength){startPostion=p->start;q=(diskNode *)malloc(sizeof(diskNode));q->start=p->start;q->maxlength=maxLength;q->useFlag=1;q->next=NULL;diskHead->start=p->start+maxLength;diskHead->maxlength=p->maxlength-maxLength;flag=1;temp=p;if(diskHead->next==NULL) diskHead->next=q;else{while(temp->next) temp=temp->next;temp->next=q;}break;}p=p->next;}return flag;}void fileCreate(char fileName[],int length,char fileKind[]){//int i,j;time_t rawtime;int startPos;UFD *fileNode,*p;for(p=userTable[userID].user->next;p!=NULL;p=p->next){if(!strcmp(p->file->fileName,fileName)){printf("文件重名,创建文件失败\n");system("pause");return;}}if(requestDist(startPos,length)){fileNode=(UFD *)malloc(sizeof(UFD));fileNode->file=(fileTable *)malloc(sizeof(fileTable)); //这一步必不可少,因为fileNode里面的指针也需要申请地址,否则fileNode->file指向会出错strcpy(fileNode->file->fileName,fileName);strcpy(fileNode->file->fileKind,fileKind);fileNode->file->maxlength=length;fileNode->file->strat=startPos;fileNode->file->openFlag=false;time(&rawtime);fileNode->file->timeinfo=localtime(&rawtime);fileNode->next=NULL;if(userTable[userID].user->next==NULL)userTable[userID].user->next=fileNode;else{p=userTable[userID].user->next;while(p->next) p=p->next;p->next=fileNode;}printf("创建文件成功\n");system("pause");}else{printf("磁盘空间已满或所创建文件超出磁盘空闲容量,磁盘空间分配失败\n");system("pause");}}void freeDisk(int startPostion){diskNode *p;for(p=diskHead;p!=NULL;p=p->next){if(p->start==startPostion)break;}p->useFlag=false;}void fileDel(char fileName[]){UFD *p,*q,*temp;q=userTable[userID].user;p=q->next;while(p){if(!strcmp(p->file->fileName,fileName)) break;else{p=p->next;q=q->next;}}if(p){if(p->file->openFlag!=true) //先判断是否有进程打开该文件{temp=p;q->next=p->next;freeDisk(temp->file->strat); //磁盘空间回收free(temp);printf("文件删除成功\n");system("pause");}else{printf("该文件已被进程打开,删除失败\n");system("pause");}}else{printf("没有找到该文件,请检查输入的文件名是否正确\n");system("pause");}}void fileCat(char fileName[]){int startPos,length;int k=0;UFD *p,*q;q=userTable[userID].user;for(p=q->next;p!=NULL;p=p->next){if(!strcmp(p->file->fileName,fileName))break;}if(p){startPos=p->file->strat;length=p->file->length;p->file->openFlag=true; //文件打开标记printf("*****************************************************\n");for(int i=startPos;k<length;i++,k++){if(i%50==0) printf("\n"); //一行大于50个字符换行printf("%c",disk[i]);}printf("\n\n*****************************************************\n");printf("%s已被read进程打开,请用close命令将其关闭\n",p->file->fileName);system("pause");}else{printf("没有找到该文件,请检查输入的文件名是否正确\n");system("pause");}}void fileWrite(char fileName[]){UFD *p,*q;q=userTable[userID].user;int i,k,startPos;for(p=q->next;p!=NULL;p=p->next){if(!strcmp(p->file->fileName,fileName))break;}if(p){if(!strcmp(p->file->fileKind,"r")) //判断文件类型{printf("该文件是只读文件,写入失败\n");system("pause");return;}char str[500];printf("please input content:\n");gets(str);startPos=p->file->strat;p->file->openFlag=true; //文件打开标记p->file->length=strlen(str);if(p->file->length>p->file->maxlength){printf("写入字符串长度大于该文件的总长度,写入失败\n");system("pause");return;}for(i=startPos,k=0;k<(int)strlen(str);i++,k++)disk[i]=str[k];printf("文件写入成功,请用close命令将该文件关闭\n");system("pause");}else{printf("没有找到该文件,请检查输入的文件名是否正确\n");system("pause");}}void fileFine(char fileName[]){UFD *p,*q;q=userTable[userID].user;for(p=q->next;p!=NULL;p=p->next){if(!strcmp(p->file->fileName,fileName))break;}if(p){printf("********************************************\n");printf("文件名:%s\n",p->file->fileName);printf("文件长度:%d\n",p->file->maxlength);printf("文件在存储空间的起始地址:%d\n",p->file->strat);printf("文件类型:%s\n",p->file->fileKind);printf("创建时间:%s\n",asctime(p->file->timeinfo));printf("********************************************\n");system("pause");}else{printf("没有找到该文件,请检查输入的文件名是否正确\n");system("pause");}}void chmod(char fileName[],char kind[]){UFD *p,*q;q=userTable[userID].user;for(p=q->next;p!=NULL;p=p->next){if(!strcmp(p->file->fileName,fileName))break;}if(p){strcpy(p->file->fileKind,kind);printf("修改文件类型成功\n");system("pause");}else{printf("没有找到该文件,请检查输入的文件名是否正确\n");system("pause");}}void fileRen(char fileName[],char name[]){UFD *p,*q;q=userTable[userID].user;for(p=q->next;p!=NULL;p=p->next){if(!strcmp(p->file->fileName,fileName))break;}if(p){while(q->next){if(!strcmp(q->next->file->fileName,name)){printf("您输入的文件名已存在,重命名失败\n");system("pause");return;}q=q->next;}strcpy(p->file->fileName,name);printf("重命名成功\n");system("pause");}else{printf("没有找到该文件,请检查输入的文件名是否正确\n");system("pause");}}void fileDir(char userName[]){UFD *p;int i,k;for(i=0;i<MaxUser;i++){if(!strcmp(userTable[i].userName,userName)){k=i;break;}}if(i==MaxUser){printf("没有找到该用户,请检查输入用户名是否正确\n");system("pause");return;}else{p=userTable[k].user->next;printf("******************************************************************************* *\n");printf("文件名文件长度文件在磁盘的起始地址文件类型创建时间\n");for(;p!=NULL;p=p->next)printf("%s %d %d %s %s",p->file->fileName,p->file->maxlength,p->file->strat,p->file->fileKind,asctime(p->file->timeinfo));printf("******************************************************************************* *\n");system("pause");}}void diskShow(){diskNode *p;int i=0,unusedDisk=0;printf("***************************************************************************\n");printf(" 盘块号起始地址容量(bit) 是否已被使用\n");for(p=diskHead;p!=NULL;p=p->next,i++){if(p->useFlag==false) unusedDisk+=p->maxlength;printf(" %d %d %d %d \n",i,p->start,p->maxlength,p->useFlag);}printf("***************************************************************************\n");printf("磁盘空间总容量:512*1024bit 已使用:%dbit 末使用:%dbit\n\n",MaxDisk-unusedDisk,unusedDisk);system("pause");}void fileClose(char fileName[]){UFD *p,*q;q=userTable[userID].user;for(p=q->next;p!=NULL;p=p->next){if(!strcmp(p->file->fileName,fileName))break;}if(p){p->file->openFlag=false;printf("%s文件已关闭\n",p->file->fileName);system("pause");}else{printf("没有找到该文件,请检查输入的文件名是否正确\n");system("pause");}}运行结果视图:(略)。

dos命令创建文件的命令

dos命令创建文件的命令

dos命令创建文件的命令DOS(Disk Operating System)是一种最早的个人计算机操作系统,它使用命令行界面进行操作。

在DOS命令中,我们可以使用一系列命令来创建文件。

下面,我们将介绍几个常用的DOS命令,帮助大家生动、全面地了解如何使用这些命令来创建文件。

首先,我们要打开DOS窗口,通常可以通过在Windows操作系统上按下Win+R键,然后输入"cmd"来打开。

接下来,我们就可以在DOS 窗口中使用以下命令来创建文件。

1. 创建空白文件:使用"echo"命令可以创建一个空白的文本文件。

例如,我们可以输入以下命令来创建一个名为"test.txt"的空白文本文件: ```echo. > test.txt```这里的"echo."表示输出一个空行,通过将其重定向(使用">"符号)到"test.txt"文件中,就可以将一个空白文件创建成功。

2. 复制文件:使用"copy"命令可以将一个已有文件复制为一个新的文件。

例如,我们可以输入以下命令来将名为"source.txt"的文件复制为名为"target.txt"的新文件:```copy source.txt target.txt```这样,"source.txt"文件的内容将会被复制到"target.txt"文件中。

3. 创建文件夹:使用"mkdir"命令可以创建一个新的文件夹。

例如,我们可以输入以下命令来创建名为"documents"的文件夹:```mkdir documents```这样,一个名为"documents"的文件夹就会在当前目录下创建成功。

计算机导论实验报告-DOS常用命令的使用

计算机导论实验报告-DOS常用命令的使用

西安郵電學院计算机导论实验报告题目:DOS常用命令的使用院系名称:计算机学院专业名称:网络工程班级:网络工程1101 班内序号:学生姓名:指导教师:刘建元、贾晖DOS常用命令的使用一、实验目的掌握Windows环境下DOS命令的操作方法,熟练使用DOS的常用命令。

二、实验要求1、掌握Windows环境与DOS命令操作的切换方式。

2、了解Windows的长文件名与DOS的短文件名的不同要求及转换方式。

3、分清文件、目录与路径,掌握文件名中通配符的使用。

4、掌握DIR、COPY、DEL、TYPE、REN等文件命令和MD、RD、CD等目录命令的使用。

三、实验内容及步骤(一)Windows与DOS的切换在Windows环境下,选择单击【开始】→【程序】→【附件】→【命令提示符】即可进入到DOS命令操作方式下;在DOS方式下,输入“exit”后按“回车”键,或者用鼠标单击窗口的关闭按钮,即可回到Windows环境下。

(二)Windows长文件名与Dos短文件名的不同要求Dos方式下文件名由主文件名和扩展名两部分组成。

其中主文件名占8个字符,是以字母开头的字母和数字的组合,并且中间不允许有空格;扩展名占3个字符,用户可以任意指定,但是有些系统特定的扩展名有其特殊的意义。

Windows方式下文件名的命名规则比较灵活,可以使用任意的ASCⅡ字符,并且以什么字符开头都可以,中间可以有空格。

(三)DOS常用命令操作1、DIR命令该命令用于显示磁盘上全部或部分文件目录清单,共由五部分组成:DIR [盘符][路径][文件名] [命令参数]①②③④⑤部分①是命令关键字,不可缺少,也不能拼写错误。

部分②是指定命令所操作的磁盘,可以缺少,若缺少时命令对当前磁盘进行操作。

DOS规定盘符的书写格式为单个字母+“:”,如“A:”。

部分③是指定命令所操作的目录,可以缺少,若缺少时命令对当前目录进行操作。

DOS规定目录与目录之间用“\”符号分隔。

实验项目三 DOS操作系统安装与DOS命令使用

实验项目三 DOS操作系统安装与DOS命令使用

实验项目三DOS操作系统安装与DOS命令使用该实验项目所用工具软件:1、通用PE工具箱;2、UltraISO;3、Virtual PC2007SP1v6.0.192.0(32/64位);4、CCDOS97V6.00.9805(即“成然CCDOS97”);本实验项目目的理解磁盘分区的意义和方法,理解分区格式与文件系统的区别,熟练使用工具软件如“DiskGenius”对磁盘进行分区操作,特别要理解多磁盘多分区的交错现象与意义;能理解汉字DOS操作系统与WinPE操作系统在计算机维护中有同等的重要意义、作用和地位,并能熟练使用常规DOS命令和相关工具软件来解决计算机维护或数据恢复问题。

一、硬盘分区1、基本概念分区的意义:要正常使用硬盘,一个基本的原则就是必须进行分区(即便要使用整个硬盘空间,也要进行分区的操作,并把它分为一个分区来使用)和对分区进行高级格式化等操作。

为硬盘分区便于硬盘的规划、文件的管理;有利于病毒的防治和数据的安全;可有效利用磁盘空间以及提高系统运行效率;微软的操作系统是以簇为单位为文件分配空间的,而簇的大小与分区大小密切相关,划分不同大小的分区,可减少磁盘空间的浪费,同时也能提高系统运行效率(要知道,磁盘空间的利用情况与系统运行效率是一对矛盾!);便于为不同的用户分配不同的权限(主要指在NTFS分区中);当安装多个操作系统时,可能需要使用不同类型的文件系统,这也只能在不同的分区上实现等。

在具体对硬盘分区时,首要考虑的问题是采用什么类型的分区、共分几个区、各分区的格式和容量等问题,如果有扩展分区,必须还要考虑其中要设多少个逻辑分区以及大小等问题;最后考虑各个分区采用哪种文件系统等。

分区类型:指对硬盘进行区域划分的方式,即分区的类型(根据“DiskGenius”工具软件的定义)。

如可以是主分区、扩展分区,扩展分区内包含的逻辑分区;有些情况可以是“某某卷”(如“简单卷”等)这样的区域划分方式;如果是动态磁盘,就一定是“某某卷”(如JBOD卷等)的区域划分方式了。

DOS操作系统的基本使用方法

DOS操作系统的基本使用方法

(4)文件重命名命令 格式: REN [d:][Path]<原文件名><新文件名> 功能说明:内部命令,能使用通配符,用来 将一个或多个文件名更改. 例:C:\>REN AUTOEXEC.BAT AUTO.BAK A:\>REN A:\LXX\*.BAT *.DOC C:\> REN \LXX\ABC.BAK XYZ.DOC C:\>REN D:\SYS\AUTOEXEC.BAT AC.BAT C:\>REN A:A??.* B??.*
dos操作系统的基本使用方法dos操作系统dos操作系统下载操作系统dos和win8msdos操作系统dos操作系统和windowsdos操作系统怎么样dos操作系统界面笔记本操作系统dos微星dos操作系统
第三章 DOS操作系统的基本使用方法
3.1 DOS操作系统概述 3.1.1 DOS操作系统的发展 3.1.2 DOS的主要功能组成 文件管理 存储管理 设备管理 作业管理 CPU管理
(2) 系统的初始化 在完成DOS的启动操作后,微机系统 就自动进入系统初始化.
3.2 文件和文件管理
文件:存储在一定媒体上的一组相关信息的集合 3.2.1 文件和文件目录 (1)文件
A.文件名:
主文件名 扩展名
B.文件类型
C.文件通配符: * 代表任意个字符 ? 代表该字符位置的一个字符 D.文件属性
(4)改变当前子目录命令 格式: CD [<盘符>:][<路径>]<子目录名> 功能说明:内部命令,用于改变并显示当前 目录.
当前目录和显示 C:\> C:\> C:\USER\LXX\HZK> C:\USER\LXX\HZK> C:\USER\LXX\HZK> 改变后当前目录和显示 当 CD USER 前C:\USER> 目 CD C:\USER\LXX\HZK> 录 USER\LXX\HZK 和C:\USER\LXX> CD.. 显 CD\ 示C:\> CD A:\DOS C A:\DOS> 命令

操作系统课程设计模拟DOS文件的建立与使用

操作系统课程设计模拟DOS文件的建立与使用

课程设计说明书题目: 模拟DOS文件的建立与使用院系:计算机科学与工程专业班级:计算机10-3学号: 91学生姓名:张杨杨指导教师:王琳2013年 1月 9 日安徽理工大学课程设计(论文)任务书计算机科学与工程学院计算机科学与技术系2012年 11月 20日安徽理工大学课程设计(论文)成绩评定表摘要操作系统是管理计算机硬件资源,控制其他程序运行并为用户提供交互操作界面的系统软件的集合。

操作系统是计算机系统的关键组成部分,负责管理与配置内存、决定系统资源供需的优先次序、控制输入与输出设备、操作网络与管理文件系统等基本任务。

文件管理是操作系统的五大职能之一,主要涉及文件的逻辑组织和物理组织,目录的结构和管理。

所谓文件管理,就是操作系统中实现文件统一管理的一组软件、被管理的文件以及为实施文件管理所需要的一些数据结构的总称(是操作系统中负责存取和管理文件信息的机构)文件管理是操作系统中一项重要的功能。

其重要性在于,在现代计算机系统中,用户的程序和数据,操作系统自身的程序和数据,甚至各种输出输入设备,都是以文件形式出现的。

可以说,尽管文件有多种存储介质可以使用,如硬盘、软盘,光盘,闪存,记忆棒,网盘等等,但是,它们都以文件的形式出现在操作系统的管理者和用户面前。

磁盘管理是一项计算机使用时的常规任务,它是以一组磁盘管理应用程序的形式提供给用户的,主要研究的问题包括磁盘调度的算法,访存时延,调度算法的优劣性和适用场合等等。

关键词:模拟dos文件的建立和使用,索引存贮,链式存贮,磁盘调度目录1 设计目的 (1)2 设计要求 (1)模拟设计DOS操作系统中磁盘文件的存储结构 (1)算法分析: (2)模拟设计便于直接存取的索引文件结构 (3)算法分析: (4)3 模拟算法的实现 (5)流程图 (5)主窗口(main函数) (5)直接存取的索引文件结构 (6)程序源代码 (7)运行效果图 (12)总结 (14)参考文献 (15)1 设计目的磁盘文件是磁盘上存储的重要信息,通过本实验模拟DOS文件的建立和使用情况,理解磁盘文件的物理结构。

dos实验报告

dos实验报告

dos实验报告一、实验目的本次实验的主要目的是深入了解和熟悉 DOS 操作系统的基本命令和操作,掌握其文件管理、目录操作以及系统配置等方面的功能。

通过实际操作和实验,提高对计算机操作系统的理解和应用能力。

二、实验环境1、操作系统:Windows 10 专业版,通过命令提示符模拟 DOS 环境。

2、硬件配置:_____处理器,_____内存,_____硬盘。

三、实验内容及步骤1、启动命令提示符在 Windows 10 操作系统中,按下“Win +R”键,输入“cmd”并回车,打开命令提示符窗口。

2、基本命令操作(1)DIR 命令用于列出当前目录下的文件和子目录。

输入“dir”后,系统会显示当前目录中的文件和子目录的名称、大小、创建日期等信息。

(2)CD 命令用于改变当前目录。

例如,输入“cd”可以返回上一级目录,输入“cd 文件夹名称”可以进入指定的子目录。

(3)MD 命令创建新的目录。

输入“md 目录名称”即可创建一个新的目录。

(4)RD 命令删除空目录。

输入“rd 目录名称”来删除指定的空目录。

(5)COPY 命令复制文件。

格式为“copy 源文件目标文件”。

(6)DEL 命令删除文件。

输入“del 文件名称”来删除指定的文件。

3、文件操作(1)创建文本文件使用“echo 内容>文件名称txt”的命令可以创建一个包含指定内容的文本文件。

(2)查看文件内容使用“type 文件名称txt”命令可以查看文本文件的内容。

4、系统配置操作(1)查看系统环境变量输入“set”命令可以查看当前系统的环境变量。

(2)设置环境变量使用“set 变量名=变量值”的命令可以设置新的环境变量。

四、实验中遇到的问题及解决方法1、误删除重要文件在使用 DEL 命令时,由于操作失误删除了重要文件。

解决方法是立即停止对该磁盘的写入操作,并使用数据恢复软件尝试恢复被删除的文件。

2、目录切换错误在使用 CD 命令切换目录时,有时会输入错误的目录名称导致无法切换到预期的目录。

第三章 DOS操作系统基本使用方法 3.1 DOS操作系统概述 3.2 .

第三章 DOS操作系统基本使用方法 3.1 DOS操作系统概述 3.2 .
由键盘输入的命令。它是用户与DOS系统的接口。
以上三个模块以文件的形式存放在磁盘上,其中(2)、 (3)为隐藏文件。DOS启动时它们被依次调入并常驻 内存。DOS组成结构及调用关系示意图:
用户
用户程序 引导程序
键盘命令
MSDOS.SYS IO.SYS
ROM BIOS
DOS
3.1.3 DOS 的启动
与ROM BIOS的接口。它的主要功能是对键盘、显示 器、磁盘、打印机等输入输出设备(接口)进行管理。
(3)文件管理模块(MSDOS.SYS) 该模块是DOS系统的核心部分。它的主要功能管
理磁盘文件操作(如文件的建立、读写、修改和删除 等),另外还提供对内存、设备及目录的管理。
(4)键盘命令管理模块() 该模块的主要功能是负责接收、识别和处理用户
(4)作业管理:对多作业执行时进行必要的资源高 度和作业处理过程控制。作业是用户请求计算机完成 的一个独立任务。一个作业可以包括输入、编译、连 接、运行和输出等若干步骤。
(5)CPU管理:一是使CPU能够进行高效的运作, 二是能够处理各种可能发生的中断事件。
二、DOS的组成 MS-DOS的主体采用层次模块结构,由一个引导 程序和三个层次模块组成:
第三章 DOS操作系统基本使用方法
3.1 DOS操作系统概述 3.2 文件和文件管理 3.3 基本DOS命令使用 3.4 DOS下汉字处理功能(略)
3.1.1 DOS操作系统简介
操作系统是计算机系统软件中最重要的系统软件。 DOS 是磁盘操作系统(Disk Operating System) 的 英文缩写,它是微机上使用得最早也是普及的一个 操作系统。其中以美国微软公司开发的MS-DOS最 具代表性,DOS 自1980年问世, 81年推出MS-DOS V1.0版以来,随着计算机技术的不断发展,DOS也 在不断改进和更新,到95年Windows95的正式推出, DOS已推出多达十几个版本,其中使用最为广泛的 是MS-DOS6.22。

DOS命令及使用方法

DOS命令及使用方法

DOS命令及使用方法DOS(Disk Operating System)是一种操作系统,它使用命令行界面来管理和操作计算机上的文件和程序。

在这篇文章中,我们将介绍一些常用的DOS命令及其使用方法。

1. dir命令:用于显示当前目录下的文件和文件夹列表。

使用命令“dir”即可列出当前目录下的所有文件和文件夹。

2. cd命令:用于切换当前目录。

使用命令“cd 目录名”即可进入指定的目录,使用“cd ..”可以返回上一级目录。

3. md命令:用于创建新的文件夹。

使用命令“md 文件夹名”即可创建指定的文件夹。

4. rd命令:用于删除文件夹。

使用命令“rd 文件夹名”即可删除指定的文件夹。

5. copy命令:用于复制文件。

使用命令“copy 源文件目标文件”即可将源文件复制到目标文件。

6. move命令:用于移动文件。

使用命令“move 源文件目标文件夹”即可将源文件移动到目标文件夹。

7. del命令:用于删除文件。

使用命令“del 文件名”即可删除指定的文件。

8. ren命令:用于重命名文件。

使用命令“ren 原文件名新文件名”即可将文件重命名为新的文件名。

9. type命令:用于显示文件的内容。

使用命令“type 文件名”即可显示指定文件的内容。

10. find命令:用于查找文件中的字符串。

使用命令“find 字符串文件名”即可在指定文件中查找包含指定字符串的行。

11. attrib命令:用于设置文件或文件夹的属性。

使用命令“attrib 文件名/+属性”可以添加属性,使用“attrib 文件名/-属性”可以移除属性。

12. format命令:用于格式化磁盘驱动器。

使用命令“format 目标驱动器:”即可格式化指定的磁盘。

13. chkdsk命令:用于检查和修复磁盘驱动器上的错误。

使用命令“chkdsk 目标驱动器:”即可对指定磁盘进行检查和修复。

15. tree命令:用于显示指定目录以及其子目录的树状结构。

操作系统课程设计---模拟DOS文件的建立与使用

操作系统课程设计---模拟DOS文件的建立与使用

课程设计说明书题目: 模拟DOS文件的建立与使用院系:计算机科学与工程专业班级:计算机10-3学号:学生姓名:指导教师:2013年 1月 9 日课程设计(论文)任务书计算机科学与工程学院计算机科学与技术系2012年 11月 20日摘要操作系统是管理计算机硬件资源,控制其他程序运行并为用户提供交互操作界面的系统软件的集合。

操作系统是计算机系统的关键组成部分,负责管理与配置内存、决定系统资源供需的优先次序、控制输入与输出设备、操作网络与管理文件系统等基本任务。

文件管理是操作系统的五大职能之一,主要涉及文件的逻辑组织和物理组织,目录的结构和管理。

所谓文件管理,就是操作系统中实现文件统一管理的一组软件、被管理的文件以及为实施文件管理所需要的一些数据结构的总称(是操作系统中负责存取和管理文件信息的机构)文件管理是操作系统中一项重要的功能。

其重要性在于,在现代计算机系统中,用户的程序和数据,操作系统自身的程序和数据,甚至各种输出输入设备,都是以文件形式出现的。

可以说,尽管文件有多种存储介质可以使用,如硬盘、软盘,光盘,闪存,记忆棒,网盘等等,但是,它们都以文件的形式出现在操作系统的管理者和用户面前。

磁盘管理是一项计算机使用时的常规任务,它是以一组磁盘管理应用程序的形式提供给用户的,主要研究的问题包括磁盘调度的算法,访存时延,调度算法的优劣性和适用场合等等。

关键词:模拟dos文件的建立和使用,索引存贮,链式存贮,磁盘调度目录1 设计目的 (1)2 设计要求 (1)2.1模拟设计DOS操作系统中磁盘文件的存储结构 (1)2.1.1算法分析: (2)2.2模拟设计便于直接存取的索引文件结构 (3)2.2.1算法分析: (4)3 模拟算法的实现 (5)3.1流程图 (5)3.1.1主窗口(main函数) (5)3.1.2直接存取的索引文件结构 (6)3.2程序源代码 (7)3.3运行效果图 (11)总结 (13)参考文献 (14)1 设计目的磁盘文件是磁盘上存储的重要信息,通过本实验模拟DOS文件的建立和使用情况,理解磁盘文件的物理结构。

计算机系统实训-DOS操作系统

计算机系统实训-DOS操作系统

DOS发展史
1991年8月, 名称MS-DOS, 版本5.00, 这是一个重要的版本。它所具有更好的 内存管理特 性——HIMEM.SYS和 EMM386.EXE的出现,使我们可以 把驱动甚至于DOS本身的一部分放置在 640K到1024K的高端内存中,以节约常 规内存给应用程序。出现了全屏幕命令 行编辑器和别名、添加了undelete和 unformat命令并拥有硬盘分区表 备分程序,将GW-BASIC换成了基于 QuickBASIC的Qbasic。
计算机系统实训
DOS操作系统
DOS概述
现在家用电脑的操作系统大多都是用的 Windows,但在1995年Windows 95推出以前, 占统治地位的操作系统是DOS(Disk Operation System 磁盘操作系统)。
DOS发展史
1973年,Gary Kildall使用他的PL/M语言 编写了一个简单的操作系统,他把它叫做 CP/M 1980年4月, Tim Patterson开始着手为 基于8086的计算机编写一个操作系统. 决 定编写他们自己的磁盘操作系统(DOS) 1980年9月, 名称QDOS, Tim Patterson 向Microsoft展示了他为8086芯片编写的 86-DOS
DOS的特点
在DOS环境下,开机后,我们面对的不是 桌面和图标,而是这样的电脑屏幕:这个 C:\>叫做提示符,这个闪动的横线叫做光 标。这样就表示电脑已经准备好,在等待 我们给它下命令了。
DOS的特点
文件与目录 在DOS中,文件与目录是最重要的概念, 这和Windows一样,不同的是,“目录” 在Windows中叫做“文件夹”。如果想查 看电脑中的文件,可以输入dir命令,然后 回车。
DOS的特点

dos命令教程

dos命令教程

dos命令教程DOS(磁盘操作系统)是一种使用命令行界面的操作系统,常见于早期的个人电脑。

学会使用DOS命令对于理解计算机系统和进行一些基本操作非常重要。

下面是一个关于DOS命令的简单教程。

DOS命令以命令行方式输入,用户可以直接在屏幕上输入命令并执行。

这些命令被用于执行各种操作,包括文件和文件夹的管理、系统设置等。

首先,让我们学习一些基本的DOS命令。

"dir"命令用于列出当前目录中的文件和文件夹。

输入"dir"命令后,系统会显示当前目录中的所有文件和文件夹的列表。

接下来,我们来学习如何在DOS中创建文件夹和文件。

使用"md"命令可以创建文件夹。

例如,输入"md newfolder"将在当前目录下创建一个名为"newfolder"的新文件夹。

使用"cd"命令可以切换当前目录。

例如,输入"cd newfolder"将进入名为"newfolder"的文件夹。

要创建一个新文件,可以使用"copy con"命令。

例如,输入"copy con test.txt",然后输入一些文本,最后按下Ctrl + Z键保存文件。

这将在当前目录下创建一个名为"test.txt"的新文件,并将输入的文本保存到其中。

DOS命令还可以用于复制、移动和删除文件。

要复制文件,可以使用"copy"命令。

例如,输入"copy file1.txt file2.txt"将文件"file1.txt"复制为"file2.txt"。

要移动文件,可以使用"move"命令。

例如,输入"move file1.txt newfolder"将文件"file1.txt"移动到名为"newfolder"的文件夹中。

DOS操作系统教案

DOS操作系统教案

DOS操作系统基本知识和常用目录命令一、学时:2学时二、教学目的和要求:1、掌握磁盘文件、目录、路径的基本概念以及启动的三种方式;2、掌握常用内部命令――目录命令:DIR、MD、CD、RD、PROMPT的功能和应用;3、熟悉DOS的组成。

三、教学重点和难点:1、重点讲解DOS的基本概念和三种启动方式。

2、DOS的目录命令既是重点又是难点。

四、本课与其他课程或已学的基础知识的联系:注意和已学《信息技术基础》(一)的内容多联系,尤其结合Windows操作系统来学习和理解DOS操作系统,为以后学习《常用工具软件》打下基础。

五、教学媒体:多媒体教室或计算机机房。

六、教学内容和教学过程的具体安排:回顾:简单回顾上学期《信息技术基础》(一)所学内容,重点是Windows操作系统的内容。

提问:“我的电脑”和“Windows资源管理器”的主要作用是什么?引入:目前流行Windows,为什么还要学习“DOS操作系统”?(主要是省等考大纲要求,向学生展示四川省计算机等级考试一级考试大纲)新课:第一节DOS操作系统概述一、DOS简介:DOS是磁盘操作系统(Disk Operating System)的简称。

典型的版本有DOS3.X和DOS6.X等主要特点:(1)字符用户界面系统。

(2)单用户单任务操作系统。

(3)硬件要求低。

(4)受常规内存640KB的限制,运行大程序速度比较慢,甚至会出现死机。

二、DOS的组成:DOS采用层次模块结构,由一个引导程序(BOOT)和三个系统模块(、MSDOS.SYS、IO.SYS)组成。

其层次结构及调用关系如下:各模块的功能为:(1)引导程序(BOOT):是一个很小的程序,它不是以文件的形式存在。

驻留在磁盘的0面0磁道1扇区上,每次DOS系统启动时自动装入内存。

它的主要职责是检查启动盘中是否有DOS的两个系统文件IO.SYS、MSDOS.SYS(注意:这两个文件是系统的隐含文件)。

(2)命令处理模块():是DOS最上层的模块,直接面向用户;是操作系统与用户之间的接口,主要负责接收、识别用户通过键盘终端输入的命令,完成内部命令的解释和处理以及外部命令在内存的装入。

DOS操作系统的使用

DOS操作系统的使用

第2章 DOS操作系统的使用2008-08-09 09:00:06 作者:高级网管员来源:网络浏览次数:755 文字大小:【大】【中】【小】第2章 DOS操作系统的使用首先来了解一下什么是操作系统。

操作系统是直接控制和管理计算机系统资源,方便用户充分而有效地使用这些资源的程序集合。

它负责组织和管理整个计算机系统的软、硬件资源;协调计算机各个部分之间以及用户与用户之间的关系,使整个计算机系统能够高效率地运转,从而为用户提供了一个开发和使用计算机软件的良好环境。

本章主要内容:=操作系统概述= DOS操作系统= DOS系统下的常用命令=批处理文件=系统配置文件CONFIG.SYS2.1 操作系统概述概括地说,一个完整的计算机系统是由四个部分组成的:硬件、操作系统、各种语言支持系统和用户。

其中硬件是最基本的计算机资源,语言支持系统提供了用户使用计算机的各种手段,而操作系统则控制和协调各个用户合理、高效地使用计算机资源。

2.1.1 操作系统的五大功能操作系统对计算机资源进行管理和分配,它按照一定的原则将计算机资源合理地分配给用户和程序。

从这个意义上说,操作系统的功能主要有五大方面:处理机管理、存储器管理、设备管理、文件管理和作业管理。

1. 处理机管理在硬件系统中,处理机(即CPU)是核心部分,也是最宝贵的资源。

操作系统处理机管理的功能主要表现在:当有多个用户或程序请求服务时,协调各用户或程序之间的运行,合理地发挥处理机的作用,使其充分高效地工作。

2. 存储器管理如何把有限的主存储器(内存)空间进行合理地分配,满足多个用户或程序的需求,是操作系统存储器管理的任务。

它主要表现在:当有多个程序运行时,防止程序或数据对操作系统的破坏;使各个程序和数据相互分隔,以免互相干扰;使各个程序共享公共的程序和数据,以节省内存空间、方便程序间的通信;当程序运行过程中,发现内存不足时,及时做出必要的处理,以保证程序的正常运行。

C语言在windos内的应用课程设计说明书

C语言在windos内的应用课程设计说明书

一、设计方案概述为了学习C语言在windos内的应用,我们在MFC环境下设计一款满足依据用户的需求,进行简单的点,线,矩形的绘制的程序.二、设计步骤1.编译过程①新建一个MFC单文档程序②在资源视图中添加一个含有三个菜单项的菜单,分别为点、线、矩形。

③为菜单项添加命令响应(类向导)并编译④为了根据用户的选择绘制图形,插入一个UINT类型的私有变量SUN,将用户的选择保存在该变量中。

为了确定画图的起始点,需要插入一个CPoint型私有变量MOON。

并在构造方法中将其初始化为0。

⑤根据用户不同的选择,给SUN 不同的值:点1,线2,矩形3。

⑥为了完成绘图功能,需要对用户鼠标左键的起落分别进行捕获,于是添加两个Windos 消息处理器:WM_LButtonDown 与 WM_LButtonup 。

⑦鼠标左键按下时我们将点的位置保存在之前定义的MOON之中⑧鼠标左键抬起时我们根据用户的选择进行画图(用户的选择保存在SUN里),使用CClient语句画图,用一个Switch 语句选择用户的需求,调用不同的函数(包括dc.SetPixel、、、)。

⑨为了图形的美观,添加了一个空白画刷和一个画笔。

2.程序的演示结果1.矩形的绘制2.矩形与直线3.源代码// 课程设计: implementation of the CAssignView class //#include ""#include "课程设计"#include "课程设计"#include "课程设计"#ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE[] = __FILE__;#endif/////////////////////////////////////////////////////////////////////////////// CAssignViewIMPLEMENT_DYNCREATE(CAssignView, CView)BEGIN_MESSAGE_MAP(CAssignView, CView) //{{AFX_MSG_MAP(CAssignView)ON_COMMAND(IMD_DOT, OnDot)ON_COMMAND(IMD_LINE, OnLine)ON_COMMAND(IMD_RECTANGLE, OnRectangle) ON_WM_LBUTTONDOWN()ON_WM_LBUTTONUP()//}}AFX_MSG_MAP// Standard printing commandsON_COMMAND(ID_FILE_PRINT, CView::OnFilePrint)ON_COMMAND(ID_FILE_PRINT_DIRECT, CView::OnFilePrint)ON_COMMAND(ID_FILE_PRINT_PREVIEW, CView::OnFilePrintPreview) END_MESSAGE_MAP()/////////////////////////////////////////////////////////////////////////////// CAssignView construction/destructionCAssignView::CAssignView(){// TODO: add construction code hereSUN=0;MOON=0;}CAssignView::~CAssignView(){}BOOL CAssignView::PreCreateWindow(CREATESTRUCT& cs){// TODO: Modify the Window class or styles here by modifying// the CREATESTRUCT csreturn CView::PreCreateWindow(cs);}/////////////////////////////////////////////////////////////////////////////// CAssignView drawingvoid CAssignView::OnDraw(CDC* pDC){CAssignDoc* pDoc = GetDocument();ASSERT_V ALID(pDoc);// TODO: add draw code for native data here}/////////////////////////////////////////////////////////////////////////////// CAssignView printingBOOL CAssignView::OnPreparePrinting(CPrintInfo* pInfo){// default preparationreturn DoPreparePrinting(pInfo);}void CAssignView::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/) {// TODO: add extra initialization before printing}void CAssignView::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/) {// TODO: add cleanup after printing}/////////////////////////////////////////////////////////////////////////////// CAssignView diagnostics#ifdef _DEBUGvoid CAssignView::AssertV alid() const{CView::AssertValid();}void CAssignView::Dump(CDumpContext& dc) const{CView::Dump(dc);}CAssignDoc* CAssignView::GetDocument() // non-debug version is inline {ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CAssignDoc)));return (CAssignDoc*)m_pDocument;}#endif //_DEBUG/////////////////////////////////////////////////////////////////////////////// CAssignView message handlersvoid CAssignView::OnDot(){// TODO: Add your command handler code hereSUN=1;}void CAssignView::OnLine(){// TODO: Add your command handler code hereSUN=2;}void CAssignView::OnRectangle(){// TODO: Add your command handler code hereSUN=3;}void CAssignView::OnLButtonDown(UINT nFlags, CPoint point){// TODO: Add your message handler code here and/or call defaultMOON=point;CView::OnLButtonDown(nFlags, point);}void CAssignView::OnLButtonUp(UINT nFlags, CPoint point){// TODO: Add your message handler code here and/or call defaultCView::OnLButtonUp(nFlags, point);CClientDC dc(this);CPen pen(PS_SOLID,2,RGB(0,255,0));(&pen);CBrush *pBrush=CBrush::FromHandle((HBRUSH)GetStockObject(NULL_BRUSH));(pBrush);switch(SUN){case 1:(point,RGB(255,0,0));break;case 2:(MOON);(point);break;case 3:(CRect(MOON,point));break;} }。

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

课程设计说明书题目: 模拟DOS文件的建立与使用院系:计算机科学与工程专业班级:计算机10-3学号: **********学生姓名:***指导教师:**2013年 1月 9 日安徽理工大学课程设计(论文)任务书计算机科学与工程学院计算机科学与技术系2012年 11月 20日安徽理工大学课程设计(论文)成绩评定表摘要操作系统是管理计算机硬件资源,控制其他程序运行并为用户提供交互操作界面的系统软件的集合。

操作系统是计算机系统的关键组成部分,负责管理与配置内存、决定系统资源供需的优先次序、控制输入与输出设备、操作网络与管理文件系统等基本任务。

文件管理是操作系统的五大职能之一,主要涉及文件的逻辑组织和物理组织,目录的结构和管理。

所谓文件管理,就是操作系统中实现文件统一管理的一组软件、被管理的文件以及为实施文件管理所需要的一些数据结构的总称(是操作系统中负责存取和管理文件信息的机构)文件管理是操作系统中一项重要的功能。

其重要性在于,在现代计算机系统中,用户的程序和数据,操作系统自身的程序和数据,甚至各种输出输入设备,都是以文件形式出现的。

可以说,尽管文件有多种存储介质可以使用,如硬盘、软盘,光盘,闪存,记忆棒,网盘等等,但是,它们都以文件的形式出现在操作系统的管理者和用户面前。

磁盘管理是一项计算机使用时的常规任务,它是以一组磁盘管理应用程序的形式提供给用户的,主要研究的问题包括磁盘调度的算法,访存时延,调度算法的优劣性和适用场合等等。

关键词:模拟dos文件的建立和使用,索引存贮,链式存贮,磁盘调度目录1 设计目的 (1)2 设计要求 (1)2.1模拟设计DOS操作系统中磁盘文件的存储结构 (1)2.1.1算法分析: (2)2.2模拟设计便于直接存取的索引文件结构 (3)2.2.1算法分析: (4)3 模拟算法的实现 (5)3.1流程图 (5)3.1.1主窗口(main函数) (5)3.1.2直接存取的索引文件结构 (6)3.2程序源代码 (7)3.3运行效果图 (11)总结 (13)参考文献 (14)1 设计目的磁盘文件是磁盘上存储的重要信息,通过本实验模拟DOS文件的建立和使用情况,理解磁盘文件的物理结构。

文件管理是操作系统中重要的内容之一,不同的文件系统提供了不同的物理结构,通过实验,深入理解文件的物理结构与存取方法之间的关系,以便更好的掌握文件系统的概念。

2 设计要求2.1 模拟设计DOS操作系统中磁盘文件的存储结构DOS操作系统对磁盘文件的管理采用链接结构,将所有的链接指针集中在一起,存放在文件分配表(FAT)中。

连接文件的第一个物理块号登记在文件目录中。

其设计思想是:假定磁盘上共有N个物理块可供使用,当要存放文件时,从FAT表中寻找其值为0的项,用其对应的物理块存放文件信息,并把文件占有的各物理块用链接指针登记在FAT表中,再把文件的第一个物理块号登记在文件目录中。

文件目录及FAT表如图所示:图2-1在DOS中FAT表的前两项用来记录磁盘的类型。

而从第2项开始记录磁盘的分配情况和文件各物理块的链接情况。

在FAT表中第三项的值如果为0,表示对应的第三块空闲。

由图还知道文件A的各记录依次存放在第2、第4、第15、第16、第50等六个物理块中。

第50块中的指针为FFF,表示文件A的结束。

文件B的各记录依次存放在第7、第10、第20等三个物理块中。

第20块中的指针为FFF。

假定磁盘存储空间共有100个物理块,设计一个文件分配表。

为了简单,文件分配表可用一个数组定义,其中每一个元素与一个物理块对应。

当第 i 个元素为 0 时,表示第 i 块空闲;当第 i 个元素既不为 0 也不为 FFF 时,其值表示该文件的下一个物理块号。

另外,再设一个空闲块总数变量记录系统还有的空闲块数。

为了简单,假定一个物理块指存放一个逻辑记录,要求设计一个程序,把文件的逻辑记录结构转换成 DOS 的链接结构。

当用户要求将已在主存的文件保存在磁盘上时,给出文件名及文件的记录个数,系统应能在磁盘上正确地保存文件。

或当用户要求给指定文件增加记录时,也应正确的实现,并插在指定记录之后。

为了正确地执行模拟程序,可用键盘模拟输入用户的要求。

输入格式为: write(文件名,记录个数) 或i nsert(文件名,逻辑记录号)2.1.1算法分析:void write(char *tmpname,int tmplength){int last,i,j;strcpy(file[filenumber].name,tmpname);//复制文件名和文件块个数file[filenumber].length=tmplength;for(i=2;i<N;i++){ //存文件if(FAT[i]==0){file[filenumber].start=i;//首个空闲块为文件开始块last=i;FAT[last]=FFF;break;}}for(i=1;i<tmplength;i++){ //last为上个记录的位置for(j=2;j<N;j++)if(FAT[j]==0){FAT[last]=j; last=j;FAT[last]=FFF; break;}}FAT[last]=FFF;//文件末存结束标记freespace-=tmplength;//改变空闲块个数filenumber++;printf("文件名和长度:%s %d\n",tmpname,tmplength);}void insert(char *tmpname,int insertpoint){int i;int last,brpoint;for(i=0;i<filenumber;i++)//寻找要执行插入操作的文件,将其数组下标存入last{if(strcmp(file[i].name,tmpname)==0)//比较插入文件名与已存在文件名是否相同{last=i;break;}}brpoint=file[last].start; //brpoint记录当前文件扫描到的位置for(i=0;i<insertpoint-1;i++){ brpoint=FAT[brpoint]; //扫描直到找到插入位置 }for(i=0;i<N;i++)//寻找一个空闲块插入{ if(FAT[i]==0){ FAT[i]=FAT[brpoint];FAT[brpoint]=i;break;}}file[last].length++; //改变空闲块个数与文件长度freespace--;printf("\t文件名和长度:%s %d\n",tmpname,file[last].length);}2.2 模拟设计便于直接存取的索引文件结构为了便于用户直接存取文件的各个逻辑记录,在 MS-DOS 中通过文件目录,再沿着链查找FAT表,便可直接找到指定逻辑记录对应的物理块。

在小型机或更高级的文件系统中,直接存取文件的方法是为每个文件建立一个索引表,指出各逻辑记录与物理块的对应关系。

最简单的形式是一个逻辑记录对应一个物理块。

文件目录与索引表的关系如图所示。

图2-2通常索引表按照逻辑记录顺序建立,这样既有利于顺序存储,又有利于直接存储。

为了标识哪些记录已经建立,哪些记录还没建立,故在索引表中增设一个标志位。

写文件或插入一个记录的过程是寻找一个空闲物理块,然后将其填入索引表对应项中。

其建立过程同第一题,即 write(文件名,记录号)和 insert (文件名,记录号)。

要求用位示图描绘出磁盘的使用情况,并要求模拟程序执行过程的每一步都能显示文件目录、位示图、索引表。

2.2.1算法分析:void search(char *tmpname){int i;for(i=0;i<filenumber;i++){if(strcmp(file[i].name,tmpname)==0)//比较插入文件名与已存在文件名是否相同{printf("\t找到了!\n");printf("\t文件名起始块号文件长度\n");printf(" %s %d %d\n",file[i].name,file[i].start,file[i].length);}}}void search2(int searchpoint){ int i; int m;if(FAT[searchpoint]==0)printf("\t该点空缺,没有文件!");elseif(FAT[searchpoint]==-1&&FAT[searchpoint-1]==-2||FAT[searchpoint]==-2&&FAT[searchpoint +1]==-1){ printf("\t此处为系统空间!"); }else if(FAT[searchpoint]==-1&&FAT[searchpoint+1]==0){ printf("\t找到了!此处的文件名为:%s",file[i].name); }else if(FAT[searchpoint]!=0&&FAT[searchpoint+1]!=-1){for(m=searchpoint;;m++){if(FAT[m]==-1)printf("\t找到了!此处的文件名为:%s",file[i].name);break;}}else if(FAT[searchpoint]!=0&&FAT[searchpoint+1]==-1){printf("找到了!此处的文件名为:%s",file[i].name);}}3 模拟算法的实现3.1流程图3.1.1主窗口(main函数)3.1.2直接存取的索引文件结构3.2程序源代码#include<string.h>#include<conio.h>#include<stdio.h>#include<stdlib.h>const int FDF=-2;const int FFF=-1;const int N=100;//存储空间(FAT表长度)int filenumber;//文件数量struct FILEINFO{char name[10];int start;int length;};FILEINFO file[10];int FAT[N],freespace; //FAT表和剩余空间void printfmenu(){int i;printf("\t文件个数:%d \n",filenumber);printf("\t文件名起始块号文件长度\n");for(i=0;i<filenumber;i++){printf(" %s %d %d\n",file[i].name,file[i].start,file[i].length);}}void printFAT(){int i;printf("\t空闲块数:%d\n",freespace);printf("\t-2代表FDF,-1代表FFF\n");for(i=0;i<N;i++){printf(" No.%d %d\n",i,FAT[i]);}}void search(char *tmpname){int i;for(i=0;i<filenumber;i++){if(strcmp(file[i].name,tmpname)==0)//比较插入文件名与已存在文件名是否相同{printf("\t找到了!\n");printf("\t文件名起始块号文件长度\n");printf(" %s %d %d\n",file[i].name,file[i].start,file[i].length);}}}void search2(int searchpoint){int i;int m;if(FAT[searchpoint]==0)printf("\t该点空缺,没有文件!");elseif(FAT[searchpoint]==-1&&FAT[searchpoint-1]==-2||FAT[searchpoint]==-2&&FAT[searchpoint+ 1]==-1){printf("\t此处为系统空间!");}else if(FAT[searchpoint]==-1&&FAT[searchpoint+1]==0){printf("\t找到了!此处的文件名为:%s",file[i].name);}elseif(FAT[searchpoint]!=0&&FAT[searchpoint+1]!=-1){for(m=searchpoint;;m++){if(FAT[m]==-1)printf("\t找到了!此处的文件名为:%s",file[i].name);break;}}else if(FAT[searchpoint]!=0&&FAT[searchpoint+1]==-1){printf("找到了!此处的文件名为:%s",file[i].name);}}void write(char *tmpname,int tmplength){int last,i,j;strcpy(file[filenumber].name,tmpname);//复制文件名和文件块个数file[filenumber].length=tmplength;for(i=2;i<N;i++){ //存文件if(FAT[i]==0){file[filenumber].start=i;//首个空闲块为文件开始块last=i;FAT[last]=FFF;break;}}for(i=1;i<tmplength;i++){ //last为上个记录的位置for(j=2;j<N;j++)if(FAT[j]==0){FAT[last]=j;last=j;FAT[last]=FFF;break;}}FAT[last]=FFF;//文件末存结束标记freespace-=tmplength;//改变空闲块个数filenumber++;printf("文件名和长度:%s %d\n",tmpname,tmplength);}void insert(char *tmpname,int insertpoint){int i;int last,brpoint;for(i=0;i<filenumber;i++)//寻找要执行插入操作的文件,将其数组下标存入last {if(strcmp(file[i].name,tmpname)==0)//比较插入文件名与已存在文件名是否相同{last=i;break;}}brpoint=file[last].start; //brpoint记录当前文件扫描到的位置for(i=0;i<insertpoint-1;i++){brpoint=FAT[brpoint]; //扫描直到找到插入位置}for(i=0;i<N;i++)//寻找一个空闲块插入{if(FAT[i]==0){FAT[i]=FAT[brpoint];FAT[brpoint]=i;break;}}file[last].length++; //改变空闲块个数与文件长度freespace--;printf("\t文件名和长度:%s %d\n",tmpname,file[last].length);}int main(){int i;char tmpname[10];int tmplength;//要写入文件长度int m;//命令filenumber=0;for(i=0;i<N;i++){ //初始化FAT表FAT[i]=0;}FAT[0]=FDF;FAT[1]=FFF;//FAT[3]=999;freespace=98;while(true){printf("\n");printf("*********************************************************\n");printf(" ****欢迎进入**** \n");printf(" \n");printf(" <<<< 模拟DOS文件的建立和使用>>>> \n");printf(" 0.退出\n");printf(" 1.写入文件 2.插入文件 3.显示文件目录\n");printf(" 4.显示FAT表 5.搜索文件 6.搜索索引点\n");printf("*********************************************************\n");printf("\n");printf("\t选择服务菜单:");scanf("%d",&m);switch(m){case 0: exit(0);case 1: printf("\t输入要写入的文件名:");scanf("%s",&tmpname);printf("\t输入要写入的文件长度:");scanf("%d",&tmplength);write(tmpname,tmplength);break;case 2: printf("\t输入要插入的文件名:");scanf("%s",&tmpname);int insertpoint;printf("\t输入要插入的点:");scanf("%d",&insertpoint);insert(tmpname,insertpoint);break;case 3: printfmenu();break;case 4: printFAT();break;case 5: printf("\t请输入要搜索的文件名:");scanf("%s",&tmpname);search(tmpname);break;case 6: printf("\t请输入要搜索的索引点:");int searchpoint;scanf("%d",&searchpoint);search2(searchpoint);break;}}printFAT();}3.3运行效果图A、模拟设计DOS操作系统中磁盘文件的存储结构运行结果B、FAT()列表C、模拟设计便于直接存取的索引文件结构运行效果总结通过本次的课程设计学习对dos文件的管理系统有了初步的了解。

相关文档
最新文档