文档库 最新最全的文档下载
当前位置:文档库 › 操作系统 二级文件系统(报告+源代码)天津科技大学

操作系统 二级文件系统(报告+源代码)天津科技大学

操作系统 二级文件系统(报告+源代码)天津科技大学
操作系统 二级文件系统(报告+源代码)天津科技大学

操作系统课程设计报告

专业:软件工程

学号:11103303

姓名:程路峰

提交日期:2014/1/2

【设计目的】

1、本实验的目的是通过一个简单多用户文件系统的设计,加深理解文件系统的内部功能和内部实现。

2、结合数据结构、程序设计、计算机原理等课程的知识,设计一个二级文件系统,进一步理解操作系统。

……………………………………..

【设计内容】

为Linux系统设计一个简单的二级文件系统。要求做到以下几点:

①可以实现下列几条命令:

login 用户登录

dir 列目录

Attrib 修改文件属性

create 创建文件

delete 删除文件

open 打开文件

close 关闭文件

read 读文件

write 写文件

cd 进出目录

②列目录时要列出文件名,物理地址,保护码和文件长度

③源文件可以进行读写保护

………………………………….

【实验环境】

Windows7操作平台

Visual Studio2010

【相关知识综述】

理解二级目录的文件系统的组织;掌握常用的数据结构;系统采用两级目录,其中第一级对应于用户账号,第二级对应于用户帐号下的文件;使用文件来模拟外存,进行数据结构设计和操作算法的设计,实现一个文件系统并实现基本的文件操作(为了简便文件系统,不考虑文件共享,文件系统安全以及管道文件与设备文件等特殊内容)。

【设计思路】

采用的数据结构、主要的函数说明、程序流程设计等

本文件系统采用两级目录,其中第一级对应于用户账号,第二级对应于用户帐号下的文件。另外,为了简便文件系统未考虑文件共享,文件系统安全以及管道文件与设备文件等特殊内容。

首先应确定文件系统的数据结构:主目录、子目录及活动文件等。主目录和子目录都以文件的形式存放于磁盘,这样便于查找和修改。

用户创建的文件,可以编号存储于磁盘上。如:file0,file1,file2…并以编号作为物理地址,在目录中进行登记

1.主要的数据结构

#define MAXNAME 25 /*the largest length of mfdname,ufdname,filename表示三种文件的长度都为25*/

#define MAXCHILD 50 /*the largest child每个用户下可以有50个文件*/

#define MAX (MAXCHILD*MAXCHILD) /*the size of fpaddrno定义一个常量2500个扇区*/

typedef struct /*the structure of OSFILE*/

{

int fpaddr; /*file physical address物理地址*/

int flength; /*file length文件长度*/

int fmode; /*file mode:0-Read Only;1-Write Only;2-Read and Write; 3-Protect;*/ char fname[MAXNAME]; /*file name文件名*/

} OSFILE;

typedef struct /*the structure of OSUFD*/

{

char ufdname[MAXNAME]; /*ufd name*/

OSFILE ufdfile[MAXCHILD]; /*ufd own file*/

}OSUFD;/*osf文件的数据结构*/

typedef struct /*the structure of OSUFD'LOGIN*/

{

char ufdname[MAXNAME]; /*ufd name*/

char ufdpword[8]; /*ufd password*/

} OSUFD_LOGIN;

typedef struct /*file open mode*/

{

int ifopen; /*ifopen:0-close,1-open*/

int openmode; /*0-read only,1-write only,2-read and write,3-initial*/

}OSUFD_OPENMODE;

2.主要函数

void LoginF(); /*LOGIN FileSystem*/

void DirF(); /*Dir FileSystem*/

void CdF(); /*Change Dir*/

void CreateF(); /*Create File*/

void DeleteF(); /*Delete File*/

void ModifyFM(); /*Modify FileMode*/

void OpenF(); /*Open File*/

void CloseF(); /*Close File*/

void ReadF(); /*Read File*/

void WriteF(); /*Write File*/

void QuitF(); /*Quit FileSystem退出文件系统*/

void help();

3.总体功能程序结构图

①打开命令的程序流程图②关闭命令的程序流程图

③写命令程序流程图

④删除命令的程序流程图:

【部分源程序清单】

打开函数

void OpenF()

{

int fc,i;

char fname[MAXNAME],fmode[25];

int fm;

printf("\nPlease input FileName:");

gets(fname);

ltrim(rtrim(fname));

if (ExistF(fname)<0) {

printf("\nError. Name \'%s\' is not existed.\n",fname);

wgetchar=1; } else

{

i=ExistD(username);

for(int a=0;a

{

if(strcmp(fname,ufd[i]->ufdfile[a].fname)==0)

{

fc=a;

break;

}

}

ifopen[i][fc].ifopen=1;

printf("Please input OpenMode(0-Read Only, 1-Write Only, 2-Read and Write, 3-Protect):");

gets(fmode);

fm=atoi(fmode);

ifopen[i][fc].openmode=fm;

printf("\nOpen successed");

wgetchar=1;

}

}

关闭函数

void CloseF()

{

char fname[MAXNAME];

int i,k;

if (strcmp(strupr(dirname),strupr(username))!=0)

{

printf("\nError.You can only modify filemode in yourself dir.\n");

}

else

{

printf("\nPlease input FileName:");

gets(fname);

ltrim(rtrim(fname));

i=ExistF(fname);

if (i>=0)

{

k=ExistD(username);

if(ifopen[k][i].ifopen==0)

{

printf("\nError. \'%s\' has been closed. you can not close it again.\n",fname);

}

else {

ifopen[k][i].ifopen=0;

ifopen[k][i].openmode=4;

printf("\'%s\' has been closed successfully!",fname);

}

}

else

{

printf("\nError. \'%s\' dose not exist.\n",fname);

}

}

}

删除函数

void DeleteF() /*Delete File*/

{

char fname[MAXNAME],str[50],str1[50];

int i,k,j;

int fpaddrno1;

if (strcmp(strupr(ltrim(rtrim(dirname))),"")==0) {

printf("\nError.Please convert to ufd dir before delete.\n");

wgetchar=1;

}

if (strcmp(strupr(dirname),strupr(username))!=0) {

printf("\nError.You can only modify filemode in yourself dir.\n");

wgetchar=1;

}

else

{

printf("\nPlease input FileName:");

gets(fname);

ltrim(rtrim(fname));

i=ExistF(fname);

if (i>=0)

{

k=ExistD(username);

if(ifopen[k][i].ifopen==1)

{

printf("\nError.\'%s\' is in open status. Close it before delete.\n",fname); wgetchar=1; }

else

{

if(ufd[k]->ufdfile[i].fmode==3)

{

printf("\nError.\'%s\' is in protect status. Close it before delete.\n",fname); wgetchar=1; }

else

{

fpaddrno1=ufd[k]->ufdfile[i].fpaddr;

fpaddrno[fpaddrno1]=0;

for(j=i;j

{

ufd[k]->ufdfile[j]=ufd[k]->ufdfile[j+1];

}

strcpy(str,"d:\\osfile\\file\\file");

itoa(fpaddrno1,str1,10);

strcat(str,str1);

strcat(str,".txt");

remove(str);

fcount[k]--;

printf("\n \'%s\'is deleted successfully.\n",fname);

wgetchar=1;

}

}

}

else

{

printf("\nError. \'%s\' dose not exist.\n",fname);

wgetchar=1;

}

}

}

写入函数

void WriteF()

{

int i,k,m=0;

int length;

char fname[MAXNAME];

char str[255],str1[255];

if (strcmp(strupr(dirname),strupr(username))!=0)

{

printf("\nError.Please convert to ufd dir before write.\n");

wgetchar=1;

return;

}

printf("\nCaution:Open file first\n");

printf("Opened File(s) List:\n");

k=ExistD(dirname);

for(i=0;i

{

if(ifopen[k][i].ifopen==1)

{

printf("%15s",ufd[k]->ufdfile[i].fname);

m++;

}

if((m%4==0)&&(m!=0)) printf("\n");

}

printf("\n%d files openned.\n",m);

if (m==0) wgetchar=1;

if(m!=0)

{

printf("\nPlease input FileName:");

gets(fname);

ltrim(rtrim(fname));

i=ExistF(fname);

if(i>=0)

{

if(ifopen[k][i].ifopen==1)

{

if((ifopen[k][i].openmode==1) ||(ifopen[k][i].openmode==2))

{

itoa(ufd[k]->ufdfile[i].fpaddr,str,10);

strcpy(str1,"file");

strcat(str1,str);

strcpy(str,"c:\\osfile\\file\\");

strcat(str,str1);

strcat(str,".txt");

fp_file=fopen(str,"ab");

length=WriteF1();

ufd[k]->ufdfile[i].flength=ufd[k]->ufdfile[i].flength+length;

printf("\n\n%d Length.\n",ufd[k]->ufdfile[i].flength);

printf("\n\nYou have write file successfully!!");

fclose(fp_file);

wgetchar=0;

}

else if(ifopen[k][i].openmode==0)

{

printf("\nError.\'%s\' has been opened with READ ONL Y mode. It isn\'t write.\n",fname);

wgetchar=1;

}

else

{

printf("\nError.\'%s\' has been opened with PROTECT mode. It isn\'t write.\n",fname);

wgetchar=1;

}

}

else

{

printf("\nError.\'%s\' is in closing status. Please open it before write\n",fname);

wgetchar=1;

}

}

else

{

printf("\nError. \'%s\' does not exist.\n",fname);

wgetchar=1;

}

}

}

【测试结果】

登录用户

创建文件:

打开文件:

关闭文件:

第一次读文件(查看原文件内容):

写文件:

再次读取文件(查看是否写入成功)

列出目录和帮助:

删除文件:

【设计总结】

【源程序】

#include "stdio.h"

#include "string.h"

#include "conio.h"

#include "stdlib.h"

#define MAXNAME 25 /*the largest length of mfdname,ufdname,filename*/ #define MAXCHILD 50 /*the largest child*/

#define MAX (MAXCHILD*MAXCHILD) /*the size of fpaddrno*/

typedef struct /*the structure of OSFILE*/

{

int fpaddr; /*file physical address*/

int flength; /*file length*/

int fmode; /*file mode:0-Read Only;1-Write Only;2-Read and Write; 3-Protect;*/ char fname[MAXNAME]; /*file name*/

} OSFILE;

typedef struct /*the structure of OSUFD*/

{

char ufdname[MAXNAME]; /*ufd name*/

OSFILE ufdfile[MAXCHILD]; /*ufd own file*/

}OSUFD;

typedef struct /*the structure of OSUFD'LOGIN*/

{

char ufdname[MAXNAME]; /*ufd name*/

char ufdpword[8]; /*ufd password*/

} OSUFD_LOGIN;

typedef struct /*file open mode*/

{

int ifopen; /*ifopen:0-close,1-open*/

int openmode; /*0-read only,1-write only,2-read and write,3-initial*/

}OSUFD_OPENMODE;

OSUFD *ufd[MAXCHILD]; /*ufd and ufd own files*/

OSUFD_LOGIN ufd_lp;

int ucount=0; /*the count of mfd's ufds*/

int fcount[MAXCHILD]; /*the count of ufd's files*/

int loginsuc=0; /*whether login successfully*/

char username[MAXNAME]; /*record login user's name22*/

char dirname[MAXNAME];/*record current directory*/

int fpaddrno[MAX]; /*record file physical address num*/

OSUFD_OPENMODE ifopen[MAXCHILD][MAXCHILD]; /*record file open/close*/

int wgetchar; /*whether getchar()*/

FILE *fp_mfd,*fp_ufd,*fp_file_p,*fp_file;

void LoginF(); /*LOGIN FileSystem*/

void DirF(); /*Dir FileSystem*/

void CdF(); /*Change Dir*/

void CreateF(); /*Create File*/

void DeleteF(); /*Delete File*/

void ModifyFM(); /*Modify FileMode*/

void OpenF(); /*Open File*/

void CloseF(); /*Close File*/

void ReadF(); /*Read File*/

void WriteF(); /*Write File*/

void QuitF(); /*Quit FileSystem*/

void help();

char *rtrim(char *str); /*remove the trailing blanks.*/

char *ltrim(char *str); /*remove the heading blanks.*/

void InputPW(char *password); /*input password,use '*' replace*/

void SetPANo(int RorW); /*Set physical address num*/

int ExistD(char *dirname); /*Whether DirName Exist,Exist-i,Not Exist-0*/

int WriteF1(); /*write file*/

int ExistF(char *filename); /*Whether FileName Exist,Exist-i,Not Exist-0*/

int FindPANo(); /*find out physical address num*/

void clrscr()

{

system("cls");

}

void main()

{

int i,choice1;

char choice[50]; /*choice operation:dir,create,delete,open,delete,modify,read,write*/ int choiceend=1; /*whether choice end*/

char *rtrim(char *str); /*remove the trailing blanks.*/

char *ltrim(char *str); /*remove the heading blanks.*/

if((fp_mfd=fopen("c:\\osfile\\mfd.txt","rb"))==NULL)

{

fp_mfd=fopen("c:\\osfile\\mfd.txt","wb");

fclose(fp_mfd);

}

for(i=0;i

//textattr(BLACK*16|WHITE);

clrscr(); /*clear screen*/

LoginF(); /*user login*/

clrscr();

if(loginsuc==1) /*Login Successfully*/

{

while (1)

{

wgetchar=0;

if (choiceend==1)

printf("\n\nC:\\%s>",strupr(dirname));

else

printf("Bad command or file name.\nC:\\%s>",strupr(username));

gets(choice);

strcpy(choice,ltrim(rtrim(strlwr(choice))));

if (strcmp(choice,"dir")==0) choice1=1;

else if(strcmp(choice,"create")==0) choice1=2;

else if(strcmp(choice,"delete")==0) choice1=3;

else if(strcmp(choice,"attrib")==0) choice1=4;

else if(strcmp(choice,"open")==0) choice1=5;

else if(strcmp(choice,"close")==0) choice1=6;

else if(strcmp(choice,"read")==0) choice1=7;

else if(strcmp(choice,"write")==0) choice1=8;

else if(strcmp(choice,"exit")==0) choice1=9;

else if(strcmp(choice,"cls")==0) choice1=10;

else if(strcmp(choice,"cd")==0) choice1=11;

else if(strcmp(choice,"help")==0) choice1=20;

else choice1=12;

switch(choice1)

{

case 1:DirF();choiceend=1;break;

case 2:CreateF();choiceend=1;if(!wgetchar) getchar();break;

case 3:DeleteF();choiceend=1;if(!wgetchar)getchar();break;

case 4:ModifyFM();choiceend=1;if(!wgetchar) getchar();break;

case 5:OpenF();choiceend=1;if (!wgetchar) getchar();break;

case 6:CloseF();choiceend=1;if (!wgetchar) getchar();break;

case 7:ReadF();choiceend=1;if (!wgetchar) getchar();break;

case 8:WriteF();choiceend=1;if (!wgetchar) getchar();break;

case 9:printf("\nYou have exited this system.");

QuitF();exit(0);break;

case 10:clrscr();choiceend=1;break;

case 11:CdF();choiceend=1;break;

case 20:help();choiceend=1;break;

default:choiceend=0;

}

}

}

else

printf("\nAccess denied.");

}

环境科学专业就业前景 其实学环境的挺不好找工作的,如果能考上公务员那是最后,去环境的设计院也很不错,再有就是去污水处理厂,去环保公司。有的工厂也有环保要求得也需要学环境的,如化工厂,制药公司等。其实第一份工作干什么并不重要关键是积累经验。(天津科技大学) 就我们今年这批毕业生来看环境科学专业是比较难就业的几乎没有几个工作理想的大多都改行了没办法啊被逼的我们毕业后总得先养活自己而不能守着环科不放至于发展的话当然还是去政府部门最好了比如市政规划环保局等都不错.如果是进污水处理厂化工厂的话也可以毕竟可以对口,前景也很看好毕竟经济的发展必然回让人们重视环境但那估计是67年后的事假如能在老本行上坚持下来也会很好的.但当前找工作的话从我们学校来看大多对口的转到仪器分析上去了毕竟环科接触的仪器很多^偶尔还有个跑环保仪器设备的(青岛科大) 环境科学最好去环保局,污水处理厂那些单位只是单一的一面,去建设系统的也可以,比如说自来水公司,我是环境科学毕业,就在自来水工作(青岛理工) 最好的是去大型的企业,一般有配套的设设施。这方面要靠机遇。去政府和事业单位也是不错的,当然要考,退而去其次去政府办企业也是不错的。机遇很重要,看准了赶快定,我个人认为工作不是难找,是机遇问题,比如我,就收到好几个大型企业的签约要求,有的同学就一直没找到。找工作,看以后个人的发展环境最重要,一定要挑个有发展前途的(去政府是因为待遇好,稳定,其实发展环境不是很好)。(山东科技大学) 看你是从事什么方向的研究了大气的可以去气象局据说今年宁波气象局今年是硕士年薪8万环保局环境监测站都可以去事业单位工作低待遇好要是有关系以后可以考虑升到局长之类的还还可以去飞机场做天气预报大气污染指数搞水的也可以去自来水厂要是对工作没要求只是要求工作环境事业单位是首选(东北农大) 要当一个体面的白领那当然是去设计院了最好是大点的不要去那些小公司拿人当驴用如果实在没有办法也要屈就一下毕竟做设计要的是经验然后就可以考环境类的工程师有了这个本本混几年能拿到年薪十万左右但是目前环境的就业情况正在好转中.. 行业也在发展中一时可能不会待遇那么好如果确实对此行业有兴趣还是不要抛弃本行做做设计不错的.. 然后可以考公务员嘛那待遇太好了不过可能比较难要求比较高... 然后就是去化工企业那就不是做设计了可能是搞生产管理之类的发展的好的话比去做设计起点高一些前途大一些你要是硕士毕业的还可以去一些科研单位博士毕业的还可以去大学搞教学、科研(哈尔滨工业大学) 目前国内的就业单位,分为公职(公务员、教师)和企业用工。企业内的岗位主要分为(研发、生产、市场、销售、行政、财务、法律等岗位),所以,有一些专业,是通用型专业,比如市场营销、财会、法律、行政管理等,到那个企业都可以。 而其他的非通用型的专业,则需要选择相应的行业就业。比如学医药的,可以去医药行业的不同岗位(比如去医疗机构做市场推广、做销售、做研发等等),学环境的,当然也是去环境类企业的不同岗位。

linux源代码分析:Linux操作系统源代码详细分析 疯狂代码 https://www.wendangku.net/doc/ed17566063.html,/ ?:http:/https://www.wendangku.net/doc/ed17566063.html,/Linux/Article28378.html 内容介绍: Linux 拥有现代操作系统所有功能如真正抢先式多任务处理、支持多用户内存保护虚拟内存支持SMP、UP符合POSIX标准联网、图形用户接口和桌面环境具有快速性、稳定性等特点本书通过分析Linux内核源代码充分揭示了Linux作为操作系统内核是如何完成保证系统正常运行、协调多个并发进程、管理内存等工作现实中能让人自由获取系统源代码并不多通过本书学习将大大有助于读者编写自己新 第部分 Linux 内核源代码 arch/i386/kernel/entry.S 2 arch/i386/kernel/init_task.c 8 arch/i386/kernel/irq.c 8 arch/i386/kernel/irq.h 19 arch/i386/kernel/process.c 22 arch/i386/kernel/signal.c 30 arch/i386/kernel/smp.c 38 arch/i386/kernel/time.c 58 arch/i386/kernel/traps.c 65 arch/i386/lib/delay.c 73 arch/i386/mm/fault.c 74 arch/i386/mm/init.c 76 fs/binfmt-elf.c 82 fs/binfmt_java.c 96 fs/exec.c 98 /asm-generic/smplock.h 107 /asm-i386/atomic.h 108 /asm- i386/current.h 109 /asm-i386/dma.h 109 /asm-i386/elf.h 113 /asm-i386/hardirq.h 114 /asm- i386/page.h 114 /asm-i386/pgtable.h 115 /asm-i386/ptrace.h 122 /asm-i386/semaphore.h 123 /asm-i386/shmparam.h 124 /asm-i386/sigcontext.h 125 /asm-i386/siginfo.h 125 /asm-i386/signal.h 127 /asm-i386/smp.h 130 /asm-i386/softirq.h 132 /asm-i386/spinlock.h 133 /asm-i386/system.h 137 /asm-i386/uaccess.h 139 //binfmts.h 146 //capability.h 147 /linux/elf.h 150 /linux/elfcore.h 156 /linux/errupt.h 157 /linux/kernel.h 158 /linux/kernel_stat.h 159 /linux/limits.h 160 /linux/mm.h 160 /linux/module.h 164 /linux/msg.h 168 /linux/personality.h 169 /linux/reboot.h 169 /linux/resource.h 170 /linux/sched.h 171 /linux/sem.h 179 /linux/shm.h 180 /linux/signal.h 181 /linux/slab.h 184 /linux/smp.h 184 /linux/smp_lock.h 185 /linux/swap.h 185 /linux/swapctl.h 187 /linux/sysctl.h 188 /linux/tasks.h 194 /linux/time.h 194 /linux/timer.h 195 /linux/times.h 196 /linux/tqueue.h 196 /linux/wait.h 198 init/.c 198 init/version.c 212 ipc/msg.c 213 ipc/sem.c 218 ipc/shm.c 227 ipc/util.c 236 kernel/capability.c 237 kernel/dma.c 240 kernel/exec_do.c 241 kernel/exit.c 242 kernel/fork.c 248 kernel/info.c 255 kernel/itimer.c 255 kernel/kmod.c 257 kernel/module.c 259 kernel/panic.c 270 kernel/prk.c 271 kernel/sched.c 275 kernel/signal.c 295 kernel/softirq.c 307 kernel/sys.c 307 kernel/sysctl.c 318 kernel/time.c 330 mm/memory.c 335 mm/mlock.c 345 mm/mmap.c 348 mm/mprotect.c 358 mm/mremap.c 361 mm/page_alloc.c 363 mm/page_io.c 368 mm/slab.c 372 mm/swap.c 394 mm/swap_state.c 395 mm/swapfile.c 398 mm/vmalloc.c 406 mm/vmscan.c 409

简单文件系统的设计及实现 一、实验目的: 1、用高级语言编写和调试一个简单的文件系统,模拟文件管理的工作过程。从而对各种文件操作命令的实质内容和执行过程有比较深入的了解 2、要求设计一个 n个用户的文件系统,每次用户可保存m个文件,用户在一次运行中只能打开一个文件,对文件必须设置保护措施,且至少有Create、delete、open、close、read、write等命令。 二、实验内容: 1、设计一个10个用户的文件系统,每次用户可保存10个文件,一次运行用户可以打开5个文件。 2、程序采用二级文件目录(即设置主目录[MFD])和用户文件目录(UED)。另外,为打开文件设置了运行文件目录(AFD)。 3、为了便于实现,对文件的读写作了简化,在执行读写命令时,只需改读写指针,并不进行实际的读写操作 4、算法与框图 ?因系统小,文件目录的检索使用了简单的线性搜索。 ?文件保护简单使用了三位保护码:允许读写执行、对应位为 1,对应位为0,则表示不允许读写、执行。 ?程序中使用的主要设计结构如下:主文件目录和用户文件目录( MFD、UFD); 打开文件目录( AFD)(即运行文件目录) 文件系统算法的流程图如下

三、工具/准备工作: 在开始本实验之前,请回顾教科书的相关内容。并做以下准备: 1) 一台运行Windows 2000 Professional或Windows 2000 Server的操作系统的计算机。 2) 计算机中需安装Visual C++ 6.0专业版或企业版 四、实验要求: (1)按照学校关于实验报告格式的要求,编写实验报告(含流程图); (2)实验时按两人一组进行分组,将本组认为效果较好的程序提交检查。

操作系统实验报告实验名称:文件管理 专业班级:网络工程1301 学号: 姓名: 2015 年6 月16 日

实验一文件管理 一、实验目的 文件管理是操作系统的一个非常重要的组成部分。学生应独立用高级语言编写和调试一个简单的文件系统,模拟文件管理的工作过程。从而对各种文件操作命令的实质容和执行过程有比较深入的了解,掌握它们的实施方法,加深理解课堂上讲授过的知识。 二、预备知识 1.VS2010的使用 2.C#的学习 3.文件主目录与子目录的理解 三、实验容与步骤 用高级语言编写和调试一个简单的文件系统,模拟文件管理的工作过程。要求设计一个10 个用户的文件系统,每次用户可保存10 个文件,一次运行用户可以打开5 个文件。系统能够检查打入命令的正确性,出错时能显示出错原因。对文件必须设置保护措施,例如只能执行,允许读等。在每次打开文件时,根据本次打开的要求,在此设置保护级别,即有二级保护。文件的操作至少有Create、delete、open、close、read、write 等命令。 所编写的程序应采用二级文件目录,即设置主文件目录和用户文件目录。前者应包含文件主及它们的目录区指针;后者应给出每个文件占有的文件目录,即文件名,保护码,文件长度以及它们存放的位置等。另外为打开文件设置运行文件目录(AFD),在文件打开时应填入打开文件号,本次打开保护码和读写指针等。 程序流程图:

逻辑设计: 使用线性数组表表示MFD,泛型数组表示UFD,每个元素包括用户ID、保存的文件数、再使用线性表表示文件信息,每个元素包括文件名,文件属性(保护码),文件的状态等信息。 物理设计: //主目录 private FileUser[] mfd; //当前用户 private FileUser currentuser; ///

/// 文件 /// public class FileObject { public string filename; public int size=20; public int read=0; public int write = 0; public string author; } /// /// 文件系统用户 /// public class FileUser { public string username;

从传统ASP到https://www.wendangku.net/doc/ed17566063.html, 摘要: https://www.wendangku.net/doc/ed17566063.html,是微软公司应对网络应用程序发展的新产品。在https://www.wendangku.net/doc/ed17566063.html,内部的革新对于这个产品导致了重大的工业普及意义。因此对于https://www.wendangku.net/doc/ed17566063.html,的教育有一个增长的需求。网络应用程序的发展是大学生在大学三年级时的本科课程。为了满足工业产业和大学生的需求,我们已经改变了从传统ASP到https://www.wendangku.net/doc/ed17566063.html,这个课程的焦点。这篇论文报告了这个改变。https://www.wendangku.net/doc/ed17566063.html,有重大意义的产品特点和对于改变的动机在其中被讨论。在这个过程中,遇到的问题和一些有用的网上学习资源在论文中被描述。 关键词:网络应用程序的发展,传统ASP,https://www.wendangku.net/doc/ed17566063.html,,移动,https://www.wendangku.net/doc/ed17566063.html, 1.介绍 https://www.wendangku.net/doc/ed17566063.html,不仅仅是ASP的一个新版本。它为移动窗口应用到网络应用程序提供了革新。网络服务和微软网络框架已经使愿景成为了一个现实,就是让它作为下一代计算机信息计算处理的平台。伴随着服务器端控件、网页表单和代码隐藏(代码后置)等一系列技术的的应用,我们可以通过完整的面向对象的编制程序设计(OOP)模型发展网络应用程序。这就有助于人们了解https://www.wendangku.net/doc/ed17566063.html,,以及使https://www.wendangku.net/doc/ed17566063.html,在行业中普及。这个行业的项目工程是新西兰国立理工学院(UNITEC)计算机系统学士学位(BCS)的最后的课程,这是大学生们从事现一个现实的真正的工作的工程项目。在我们学校我们已经观察到一个快速增长、快速成长的https://www.wendangku.net/doc/ed17566063.html,的相关产业的项目工程。 这个网络应用程序开发(The Web Application Development)论文是本科大学生大学三年级的课程。它最初提供使用的是ASP 2.0和应用服务器平台(ColdFusion)。为了满足来自产业行业和大学生们的需求情况,我们已经改变了课程的教学内容,它们包括https://www.wendangku.net/doc/ed17566063.html,、Visual https://www.wendangku.net/doc/ed17566063.html, (https://www.wendangku.net/doc/ed17566063.html,) 、和应用服务器平台(ColdFusion)。这些改变已经从2003年的第一学期就开始了。 这篇论文将要调查https://www.wendangku.net/doc/ed17566063.html,的产品功能,以及说明解释为什么https://www.wendangku.net/doc/ed17566063.html, 的产品功能是独一无二的。有关迁移到https://www.wendangku.net/doc/ed17566063.html,的动机我们进行了讨论并进行了分析。我们分析了在我们学校有关https://www.wendangku.net/doc/ed17566063.html,的产品行业工程项目的当前的发展形势,还分析了对我们的学生的短期的调查结果,以及分析了https://www.wendangku.net/doc/ed17566063.html,是否是一个更好的工具对于教育教学。有关迁移到https://www.wendangku.net/doc/ed17566063.html,遇到的问题也被讨论,同时也提出了一些对学习有用的资源。通过预知可知,对于那些想要打算去介绍引进https://www.wendangku.net/doc/ed17566063.html,的老师来说是很有帮助的。 2.为什么使用https://www.wendangku.net/doc/ed17566063.html,是特别的? 在互联网上有许多文章是论述https://www.wendangku.net/doc/ed17566063.html,超过传统的动态服务器网页 (ASP)的优势。例如,https://www.wendangku.net/doc/ed17566063.html,引进了一个综合的完整的开发环境(IDE),,一个单

实验5 文件系统:Linux文件管理 1.实验目的 (1)掌握Linux提供的文件系统调用的使用方法; (2)熟悉文件和目录操作的系统调用用户接口; (3)了解操作系统文件系统的工作原理和工作方式。 2.实验内容 (1)利用Linux有关系统调用函数编写一个文件工具filetools,要求具有下列功能:*********** 0. 退出 1. 创建新文件 2. 写文件 3. 读文件 4. 复制文件 5. 修改文件权限 6. 查看文件权限 7. 创建子目录 8. 删除子目录 9. 改变当前目录到指定目录 10. 链接操作 *********** 代码: #include #include #include #include #include #include #include #include void menu(void); void openfile(void); void writefile(void); void readfile(void); void copyfile(void); void chmd(void); void ckqx(void); void cjml(void); void scml(void); void ggml(void); void ylj(void); int main() { int choose; int suliangjin=1;

menu(); scanf("%d",&choose); while(choose!=0) { switch(choose) { case 1:openfile();break; case 2:writefile();break; case 3:readfile();break; case 4:copyfile();break; case 5:chmd();break; case 6:ckqx();break; case 7:cjml();break; case 8:scml();break; case 9:ggml();break; case 10:ylj();break; } menu(); scanf("%d",&choose); } return 0; } void menu(void) { printf("文件系统\n"); printf("1.创建新文件\n"); printf("2.写文件\n"); printf("3.读文件\n"); printf("4.复制文件\n"); printf("5.修改文件权限\n"); printf("6.查看文件权限\n"); printf("7.创建子目录\n"); printf("8.删除子目录\n"); printf("9.改变目前目录到指定目录\n"); printf("10.链接操作\n"); printf("0.退出\n"); printf("请输入您的选择...\n"); } void openfile(void) { int fd; if((fd=open("/tmp/hello.c",O_CREAT|O_TRUNC|O_RDWR,0666))<0) perror("open");

Linux操作系统源代码详细分析 容简介: Linux 拥有现代操作系统所有的功能,如真正的抢先式多任务处理、支持多用户,存保护,虚拟存,支持SMP、UP,符合POSIX标准,联网、图形用户接口和桌面环境。具有快速性、稳定性等特点。本书通过分析Linux的核源代码,充分揭示了Linux作为操作系统的核是如何完成保证系统正常运行、协调多个并发进程、管理存等工作的。现实中,能让人自由获取的系统源代码并不多,通过本书的学习,将大大有助于读者编写自己的新程序。 第一部分 Linux 核源代码 arch/i386/kernel/entry.S 2 arch/i386/kernel/init_task.c 8 arch/i386/kernel/irq.c 8 arch/i386/kernel/irq.h 19 arch/i386/kernel/process.c 22 arch/i386/kernel/signal.c 30 arch/i386/kernel/smp.c 38 arch/i386/kernel/time.c 58 arch/i386/kernel/traps.c 65 arch/i386/lib/delay.c 73 arch/i386/mm/fault.c 74 arch/i386/mm/init.c 76 fs/binfmt-elf.c 82 fs/binfmt_java.c 96 fs/exec.c 98 include/asm-generic/smplock.h 107 include/asm-i386/atomic.h 108 include/asm-i386/current.h 109 include/asm-i386/dma.h 109 include/asm-i386/elf.h 113 include/asm-i386/hardirq.h 114 include/asm-i386/page.h 114 include/asm-i386/pgtable.h 115 include/asm-i386/ptrace.h 122 include/asm-i386/semaphore.h 123 include/asm-i386/shmparam.h 124 include/asm-i386/sigcontext.h 125 include/asm-i386/siginfo.h 125 include/asm-i386/signal.h 127 include/asm-i386/smp.h 130 include/asm-i386/softirq.h 132 include/asm-i386/spinlock.h 133 include/asm-i386/system.h 137 include/asm-i386/uaccess.h 139

实验四文件系统实验 一 . 目的要求 1、用高级语言编写和调试一个简单的文件系统,模拟文件管理的工作过程。从而对各种文件操作命令的实质内容和执行过程有比较深入的了解。 2、要求设计一个 n个用户的文件系统,每次用户可保存m个文件,用户在一次运行中只能打开一个文件,对文件必须设置保护措施,且至少有Create、delete、open、close、read、write等命令。 二 . 例题: 1、设计一个10个用户的文件系统,每次用户可保存10个文件,一次运行用户可以打开5个文件。 2、程序采用二级文件目录(即设置主目录[MFD])和用户文件目录(UED)。另外,为打开文件设置了运行文件目录(AFD)。 3、为了便于实现,对文件的读写作了简化,在执行读写命令时,只需改读写指针,并不进行实际的读写操作。 4、算法与框图: ①因系统小,文件目录的检索使用了简单的线性搜索。 ②文件保护简单使用了三位保护码:允许读写执行、对应位为 1,对应位为0,则表示不允许读写、执行。 ③程序中使用的主要设计结构如下: 主文件目录和用户文件目录( MFD、UFD) 打开文件目录( AFD)(即运行文件目录)

文件系统算法的流程图如下: 三 . 实验题: 1、增加 2~3个文件操作命令,并加以实现。(如移动读写指针,改变文件属性,更换文件名,改变文件保护级别)。 #include #include #include #include #define MAXSIZE 100 #define ADDSIZE 50 #define PT elem+l-> length #define N 4 typedef struct term{/*班级和学期的结构体*/ char class1[10]; char term1[10]; }term; typedef struct student{/*学生成绩信息的结构体*/ term st;/*班级和学期结构体放于此结构体中*/ char num[10]; char name[12]; float course[4]; float total; float average; int bit; }lnode,*stu; typedef struct{ lnode *elem;/*指向上个结构体的指针*/ int size;/*最大能放lnode结构体成员的个数*/ int length;/*当前长度*/ }sqack,*sq; sqack *l; void init(void)/*动态分配存储空间*/ { l-> elem=(stu)malloc(MAXSIZE*sizeof(lnode)); l-> length =0; l-> size=MAXSIZE; } void input(void)/*输入学生的信息*/ { lnode *newbase,*p; char cla[10],ter[10],ch; int n,i; if(l-> length> =l-> size){ newbase=(stu)realloc(l-> elem,(l-> size +ADDSIZE)*sizeof(lnode));/*追加存储空间*/ l-> elem =newbase; l-> size +=ADDSIZE; } p=l-> elem; do { printf( "输入班级和学期(学期用这种格式,如2005年上学期2005 1,2005年下学期2005 2;先输入班级,回车后再输入学期)\n "); gets(cla); gets(ter); printf( "要输入多少个名单?"); scanf( "%d ",&n); printf( "输入学生的成绩\n学号\t姓名\t科目1\t科目2\t科目3\t科目4\n "); for(i=0;i num ,p-> name,p-> course[0],p-> course[1],p-> course[2],p-> course[3]); strcpy(p-> st.class1,cla); strcpy(p-> st.term1,ter); ++l-> length ; } printf( "要继续吗?(y/n) ");

##include #include #include using namespace std; #define Seat 10 #define Time 500 //顾客来的最大间隔时间 int number = 0; //当前服务的顾客总数 int PrivateNum=0,PublicNum=0,FinancialNum=0; //取号数 int seat_num=10; HANDLE seat,SemaphorePrviate,SemaphorePublic,SemaphoreFinancial;//窗口信号量HANDLE cSemaphorePrviate,cSemaphorePublic,cSemaphoreFinancial; //顾客信号量HANDLE mutex; CRITICAL_SECTION c_seat; //临界区,用来限制同一时刻只能有一个线程来改变座位的数量CRITICAL_SECTION print; //临界区,用来限制同一时刻只能有一个线程来访问资源,防止输出重叠 //对私叫号 DWORD WINAPI PrivateServiceThread(PVOID s1pv) { while(true) { srand((unsigned)time(NULL)); WaitForSingleObject(cSemaphorePrviate,INFINITE); Sleep(1500); EnterCriticalSection(&print); cout<<"对私窗口叫号!"<

实验报告 实验题目:文件系统 姓名: 学号: 课程名称:操作系统 所在学院:信息科学与工程学院 专业班级:计算机 任课教师:

实验项目名称文件系统 一、实验目的与要求: 1、通过一个简单多用户文件系统的设计,加深理解文件系统的内部功能及其内部实现。 2、熟悉文件管理系统的设计方法,加深对所学各种文件操作的了解及其操作方法的特点。 3、通过模拟文件系统的实现,深入理解操作系统中文件系统的理论知识, 加深对教材中的重要算法的理解。 4、通过编程实现这些算法,更好地掌握操作系统的原理及实现方法,提高综合运用各专业课知识的能力。 二、实验设备及软件: 一台PC(Linux系统) 三、实验方法(原理、流程图) 试验方法 (1)首先应当确定文件系统的数据结构:主目录、子目录以及活动文件等。主目录和子 目录都以文件的形式存放于磁盘,这样便于查找和修改。 (2)用户创建文件,可以编号存储于磁盘上。如file0,file1,file2…并以编号作为物理地 址,在目录中登记。 文件系统功能流程图 图1.文件系统总体命令分析

图 2.登录流程图图 3. ialloc流程图 图4.balloc流程图图5.密码修改流程图

图6.初始化磁盘 图 7.显示所有子目录 dir/ls 操作流程图

图8.创建文件 creatfile 、创建目录 mkdir 流程图 图9.改变当前路径 cd 操作流程图

实验原理 1.文件操作 ◆mkdir 创建目录文件模块,输入 mkdir 命令,回车,输入文件名,回车,即会在当前目录文件下创建一个名为刚刚输入的文件名的目录文件。在该创建过程中首先要判断该目录中有没有同名的文件,如果有的话就创建失败,还要判断在该目录下有没有创建文件的权限,有权限才可以创建。具体流程图查看第二节,系统流程图设计部分。 ◆del 删除文件模块,输入 del命令,回车,输入文件名,回车,即会在当前目录文件下删除一个名为刚刚输入的文件名的数据文件。在该删除过程中要判断该目录中是否存在该文件,如果不存在就没有必要执行该操作了,还要判断在该目录下有没有删除文件的权限,有权限才可以删除。具体流程图查看第二节,系统流程图设计部分。 ◆ls 显示当前目录下所有目录的模块,输入 ls 命令,回车 ,即会在屏幕上显示当前目录下的所有目录。在该过程中要判断该目录中是否为空,如果为空就没有必要执行该操作了。执行操作时,要调用 readdir (INode inode )函数 ,先读入文件内容到 content 里面,然后直接输出。如果子目录里面还有子目录,则通过递归,一并输出来。具体流程图查看第二节,系统流程图设计部分。 ◆chmod 改变文件权限模块,输入 chmod 命令,回车,输入文件名,回车,即会根据不同类别的用户在屏幕上提示要改变哪一类用户的权限。如果是文件拥有者执行该操作,他可以选择修改自己、其他用户的权限;如果是文件所属组成员执行该操作,他可以选择修改自己、其他用户的权限;如果是其他用户执行该操作,他只能选择修改自己的权限;在该过程中要判断该目录中是否存在该文件,如果不存在就没有必要执行该操作了。执行操作时,要判断对该文件有没有执行写操作的权利,没有就不能进行。具体流程图查看第二节,系统流程图设计部分。 ◆cd 改变当前所在目录的模块。输入 cd,回车,相应的字符串,回车,则会根据输入字符串的不同跳转到不同的目录下。如果字符串是‘ .’ ,则到当前目录;如果字符串是‘ ..’ ,则到父目录;如果字符串是‘/’ ,则到根目录;如果字符串是当前目录下的子目录,则到该子目录;如果字符串是一个决定路径,则到该绝对路径。当然在执行的时候要判断有没有该子目录或者该绝对路径,如果没有的话,就不能执行。具体流程图查看第二节,系统流程图设计部分。 2. 用户操作 ◆login 用户注销模块,输入 login ,回车,当前用户就退出了,需要重新登录。 ◆pw 用户修改口令模块,输入 pw ,回车,则会提示输入原始密码,输入正确了才可以提示输入新密码,并且要求新密码输入两次,两次一样了才能通过修改密码成功。具体流程图查看第二节,系统流程图设计部分。 ◆logout 用户退出系统模块,输入 logout ,回车,系统自动退出。

第六部分文件管理 1、文件系统的主要目的就是( )。 A、实现对文件的按名存取 B、实现虚拟存储 C、提供外存的读写速度 D、用于存储系统文件 2、文件系统就是指( )。 A、文件的集合 B、文件的目录集合 C、实现文件管理的一组软件 D、文件、管理文件的软件及数据结构的总体 3、文件管理实际上就是管理( )。 A、主存空间 B、辅助存储空间 C、逻辑地址空间 D、物理地址空间 4、下列文件的物理结构中,不利于文件长度动态增长的文件物理结构就是( )。 A、顺序文件 B、链接文件 C、索引文件 D、系统文件 5、下列描述不就是文件系统功能的就是( )。 A、建立文件目录 B、提供一组文件操作 C、实现对磁盘的驱动调度 D、实现从逻辑文件到物理文件间的转换 6、文件系统在创建一个文件时,为它建立一个( )。 A、文件目录 B、目录文件 C、逻辑结构 D、逻辑空间 7、索引式(随机)文件组织的一个主要优点就是( )。 A、不需要链接指针 B、能实现物理块的动态分配 C、回收实现比较简单 D、用户存取方便 8、面向用户的文件组织机构属于( )。 A、虚拟结构 B、实际结构 C、逻辑结构 D、物理结构 9、按文件用途来分,编译程序就是( )。 A、用户文件 B、档案文件 C、系统文件 D、库文件 10、将信息加工形成具有保留价值的文件就是( )。 A、库文件 B、档案文件 C、系统文件 D、临时文件 11、文件目录的主要作用就是( )。 A、按名存取 B、提高速度 C、节省空间 D、提高外存利用率 12、如果文件系统中有两个文件重名,不应采用( )。 A、一级目录结构 B、树型目录结构 C、二级目录结构 D、A与C 13、文件系统采用树型目录结构后,对于不同用户的文件,其文件名( )。 A、应该相同 B、应该不同 C、可以不同,也可以相同 D、受系统约束 14、文件系统采用二级文件目录可以( )。 A、缩短访问存储器的时间 B、实现文件共享 C、节省内存空间 D、解决不同用户间的文件命名冲突

计算机组成原理卷 一、选择题(共15分,每空1分) 1. 计算机中有关ALU的描述,__是正确的。 A.只做算术运算,不做逻辑运算 B.只做加法 C.能存放运算结果D.以上答案都不对 2. 某SRAM芯片,存储容量为64K×16位,该芯片的地址线和数据线的数目分别为 ______。 A.64,16 B. 16,64 C. 64,8 D. 16,16 3. 将变址寄存器的内容与指令地址码给出的位移量之和作为操作数地址或转移地址的 寻址方式称为______寻址。 A.寄存器间接B.变址 C.基址 D.相对 4. 主存贮器和CPU之间增加cache的目的是______。 A. 解决CPU和主存之间的速度匹配问题 B. 扩大主存贮器容量 C. 扩大CPU中通用寄存器的数量 D. 既扩大主存贮器容量,又扩大CPU中通用寄存器的数量 5. 存储字长是指______。 A. 存放在一个存储单元中的二进制代码组合 B. 存放在一个存储单元中的二进制代码位数 C. 存储单元的个数 D. 机器指令的位数 6. 寄存器间接寻址方式中,操作数处在______。 A. 通用寄存器 B. 主存单元 C. 程序计数器 D. 堆栈 7. 微程序控制器中,机器指令与微指令的关系是______。 A. 每一条机器指令由一条微指令来执行 B. 每一条机器指令由一段微指令编写的微程序来解释执行 C. 每一条机器指令组成的程序可由一条微指令来执行 D. 一条微指令由若干条机器指令组成 8. 假定下列字符码中有奇偶校验位,但没有数据错误,采用偶校校验的字符码是_____。 A.11001011 B.11010110 C.11000001 D.11001001 9. 若用GB作计算机主存容量的计量单位,1GB等于_____字节。 A.210 B.220 C.230 D.240 10. DRAM与SRAM相比,______特点是不正确的。 A.集成度高 B.成本低 C.速度快 D.需要刷新 11. 微指令编译法中,控制字段每位代表一个微命令时,采用的是。 A.直接控制法 B. 字段直接编译法 C. 字段间接编译法 D. 常数源字段 12. 有关cache存储器的叙述是错误的。 A. 它介于CPU与主存之间 B. 它保存的字块是主存相应字块的一个副本 C.它的每一块要有一个标记指明其映像的主存块号 D.它的全部管理通过硬、软件系统实现 13. 有关流水线的叙述中,不正确的是。

第1部分操作系统概论名词解释 脱机输入/输出 具体的输入/输出不需要在主计算机上进行的方式也称“脱机输入/输出” 批处理 作业是由操作系统成批地进行处理,操作系统能自动地从输入池读入下一个作业,并予以运行和输出,如此直到整批作业全部处理完毕。 SPOOLING 由操作系统将磁盘模拟为输入/输出设备的处理方式称为SPOOLING(Simultaneous Periph eral Operating On Line),即“并行的外部设备操作联机”,也称“假脱机”。SPOOLING系统是以磁盘为几乎无限巨大的缓冲区来解决低速的I/O设备与高速的CPU之间的速度匹配问题。 分时系统 为了降低交互式系统的等待时间和运行时间的比率,系统通过多台终端同时向很多用户提供运行环境,这种分时系统就能以合理的成本向用户提供交互式使用计算机的方便。 多路性 一台主机可连接多台终端,多个终端用户可以同时使用计算机,共享系统的硬软件资源。 交互性 用户能与系统进行对话。在一个多步骤作业的运行过程中,用户能通过键盘等设备输入数据或命令,系统获得用户的输入后做出响应,显示执行的状况或结果。 实时操作系统 是一种能在限定的时间内对输入进行快速处理并做出响应的计算机处理系统 多处理机系统 一个计算机系统中可具有多个CPU或处理机。一般用微处理器构成阵列系统,其运算速度可以达到上万亿次, 分布式操作系统 分布式系统是一种多计算机系统,这些计算机可以处于不同的地理位置和拥有不同的软硬件资源,并用通信线路连接起来,具有独立执行任务的能力。分布式系统具有一个统一的操作系统,它可以把一个大任务划分成很多可以并行执行的子任务,并按一定的调度策略将它们动态地分配给各个计算机执行,并控制管理各个计算机的资源分配、运行及计算机之间的通信,以协调任务的并行执行。以上所有的管理工作对用户都是透明的。 网络操作系统 计算机网络是指用数据通信系统把分散在不同地方的计算机群和各种计算机设备连接起来的集合,它主要用于数据通信和资源共享,特别是软件和信息共享。

天津科技大学操作系统试卷 一、单项选择题(共20分,每小题1分) 请按序号将正确选项前的字母填下表中。 1.下面关于操作系统的叙述中正确的是( A )。 A、批处理作业必须具有作业控制信息 B、分时系统不一定都具有人机交互功能 C、从响应时间的角度看,实时系统与分时系统差不多 D、由于采用了分时技术,用户可以独占计算机的资源 2.在操作系统中,P、V操作是一种(D )。 A、机器指令 B、系统调用命令 C、作业控制命令 D、低级进程通信原语 3.分配到必要的资源并获得处理机时的进程状态是( B ) A、就绪状态 B、执行状态 C、阻塞状态 D、撤消状态 4.若信号量S的初值为3,当前值为—2,则表示有等待进程(C )。 A、0个 B、1个 C、2个 D、3个 5.下面关于进程的描述中,正确的是( A )。 A、进程获得CPU运行是通过调度得到的 B、优先级是进程调度的重要依据,一旦确定就不能改变 C、在单CPU的系统中,任意时刻都有一个进程处于运行状态 D、进程申请CPU得不到满足时,其状态变为阻塞 6.在可变式分区存储管理中的拼接技术可以( A )。 A、集中空闲区 B、增加内存容量 C、缩短访问周期 D、加速地址转换 7.支持多道程序设计的操作系统在运行过程中,不断地选择新进程运行来实现CPU的共享,但其中( D )不是引起操作系统选择新进程的直接原因。 A、运行进程的时间片用完 B、运行进程出错 C、运行进程要等待某一事件发生 D、有新进程进入就绪队列 8.虚拟存储器的最大容量( B )。 A、为内外存容量之和 B、由计算机的地址结构决定

C、是任意的 D、由作业的地址空间决定 9.一作业8:00到达系统,估计运行时间为l小时。若10:00开始执行该作业,其响应比是( C )。 A、2 B、1 C、3 D、0.5 10.现有3个同时到达的作业J1、J2和J3,它们的执行时问分别是T1、T2和T3,且T1

操作系统的概念和功能 计算机是一个高速运转的复杂系统:它有CPU、内存储器、外存储器、各种各样的输入输出设备,通常称为硬件资源;它可能有多个用户同时运行他们各自的程序,共享着大量数据,通常称为软件资源。如果没有一个对这些资源进行统一管理的软件,计算机不可能协调一致、高效率地完成用户交给它的任务。 从资源管理的角度,操作系统是为了合理、方便地利用计算机系统,而对其硬件资源和软件资源进行管理的软件。它是系统软件中最基本的一种软件,也是每个使用计算机的人员必须学会使用的一种软件。 4.3.1 操作系统功能 操作系统五大管理功能,即作业管理、存储管理、信息管理、设备管理和处理机管理。这些管理工作是由一套规模庞大复杂的程序来完成的。 作业管理解决的是允许谁来使用计算机和怎样使用计算机的问题。在操作系统中,把用户请求计算机完成一项完整的工作任务称为一个作业。当有多个用户同时要求使用计算机时,允许哪些作业进入,不允许哪些进入,对于已经进入的作业应当怎样安排它的执行顺序,这些都是作业管理的任务。 存储管理解决的是内存的分配、保护和扩充的问题。计算机要运行程序就必须要有一定的内存空间。当多个程序都在运行时,如何分配内存空间才能最大限度地利用有限的内存空间为多个程序服务;当内存不够用时,如何利用外存将暂时用不到的程序和数据“滚出”到外存上去,而将急需使用的程序和数据“滚入”到内存中来,这些都是存储管理所要解决的问题。 信息管理解决的是如何管理好存储在磁盘、磁带等外存上的数据。由于计算机处理的信息量很大而内存十分有限,绝大部分数据都是保存在外存上。如果要用户自己去管理就要了解如何将数据存放到外存的物理细节,编写大量程序。在多个用户使用同一台计算机的情况下既要保证各个用户的信息在外存上存放的位置不会发生冲突,又要防止对外存空间占而不用;既要保证任一用户的信息不会被其他用户窃取、破坏,又要允许在一定条件下多个用户共享,这些都是要靠信息管理解决的。信息管理有时也称为文件管理,是因为在操作系统中通常是以“文件”作为管理的单位。操作系统中的文件概念与日常生活中的文件不同,在操作系统中,文件是存储在外存上的信息的集合,它可以是源程序、目标程序、一组命令、图形、图像或其它数据。 设备管理主要是对计算机系统中的输入输出等各种设备的分配、回收、调度和控制,以及输入输出等操作。 处理机管理主要解决的是如何将CPU分配给各个程序,使各个程序都能够得到合理的运行安排。 从资源管理的角度来看,可以把操作系统看作是控制和管理计算机资源的一组程序;从用户的角度看,操作系统是用户和计算机之间的界面。用户看到的是操作系统向用户提供的一组操作命令,用户可以通过这些命令来使用和操作计算机。因而学会正确使用这些命令就成为学会使用计算机的第一步。 4.3.2 操作系统基本类型 计算机上使用的操作系统种类很多,但其基本类型可以划分为三类,即批处理操作系统、分时操作系统和实时操作系统。 批处理操作系统的设计目标是为了最大限度地发挥计算机资源的效率;在这种操作系统环境下,用户要把程序、数据和作业说明一次提交给系统操作员,输入计算机,在处理过程中与外部不再交互。分时操作系统的设计目标是使多个用户可以通过各自的终端互不干扰地同时使用同一台计算机交互进行操作,就好像他自己独占了该台计算机一样。实时操作系统则要

相关文档
相关文档 最新文档