操作系统实验模板1资料.docx

上传人:b****4 文档编号:3769007 上传时间:2022-11-25 格式:DOCX 页数:16 大小:45.84KB
下载 相关 举报
操作系统实验模板1资料.docx_第1页
第1页 / 共16页
操作系统实验模板1资料.docx_第2页
第2页 / 共16页
操作系统实验模板1资料.docx_第3页
第3页 / 共16页
操作系统实验模板1资料.docx_第4页
第4页 / 共16页
操作系统实验模板1资料.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

操作系统实验模板1资料.docx

《操作系统实验模板1资料.docx》由会员分享,可在线阅读,更多相关《操作系统实验模板1资料.docx(16页珍藏版)》请在冰豆网上搜索。

操作系统实验模板1资料.docx

操作系统实验模板1资料

 

课内实验报告

课程名:

操作系统

任课教师:

沈超

专业:

信息管理与信息系统

学号:

B13111809

姓名:

邵园

二○一五至二○一六年度第一学期

南京邮电大学管理学院

《操作系统》课程实验第一次实验报告

实验内容及基本要求:

一、实验目的与基本要求

1、理解磁盘调度算法的设计

2、理解提高磁盘访问速度的原理

二、实验仪器与设备

硬件:

微型计算机。

中央处理器PentiumIV以上;显示器256色VGA以上;内存使用128兆;硬盘300M以上。

软件:

学生可以采用任何一种自己熟悉的编程语言完成算法的程序设计,如C/C++、Delphi、VB、VC、C#等。

三、实验内容:

模拟实现磁盘调度算法:

最短寻道时间优先(SSTF)和扫描(SCAN)算法。

实验结果:

实验代码:

#include 

#include 

#include 

using namespace std; 

const int MaxNumber=100; 

int TrackOrder[MaxNumber]; 

int MoveDistance[MaxNumber];//移动距离

int FindOrder[MaxNumber];//寻好序列

double AverageDistance;//平均寻道长度

bool direction;//方向true时为向外,false为向里

int BeginNum;//开始磁道号

int M=500;//磁道数

int N;//提出磁盘I/O申请的进程数

int SortOrder[MaxNumber];//排序后的序列

bool Finished[MaxNumber]; 

void Inith() 

 cout<<"请输入提出磁盘I/O申请的进程数:

 "; 

 cin>>N; 

 cout<<"请依次输入要访问的磁道号:

"; 

 for(int i=0;i

 cin>>TrackOrder[i]; 

for(int j=0;j

 MoveDistance[j]=0; 

cout<<"请输入开始磁道号:

"; 

cin>>BeginNum; 

for(int k=0;k

 Finished[k]=false;

for(int l=0;l

SortOrder[l]=TrackOrder[l]; 

}

void Sort() 

int temp; 

for(int i=N-1;i>=0;i--) 

for(int j=0;j

 { 

 if(SortOrder[j]>SortOrder[j+1]) 

 { 

temp=SortOrder[j]; 

SortOrder[j]=SortOrder[j+1]; 

SortOrder[j+1]=temp; 

}

//SSTF,最短寻道法

void SSTF() 

int temp,n; 

int A=M; 

temp=BeginNum;  

for(int i=0;i

for(int j=0;j

{

if(abs(TrackOrder[j]-temp)

A=abs(TrackOrder[j]-temp); 

n=j; 

else continue; 

Finished[n]=true; 

MoveDistance[i]=A; 

temp=TrackOrder[n]; 

A=M; 

FindOrder[i]=TrackOrder[n]; 

}

//SCAN,扫描算法

void SCAN() 

int m,n,temp; 

temp=BeginNum; 

Sort(); 

cout<<"请选择开始方向:

1--向外;0---向里:

 "; 

cin>>m; 

if(m==1) 

direction=true; 

else if(m==0) 

direction=false; 

else cout<<"输入错误!

"; 

for(int i=0;i

if(SortOrder[i]

continue; 

else 

n=i; 

break; 

if(direction==true) 

for(int i=n;i

{

MoveDistance[i-n]=abs(SortOrder[i]-temp); 

temp=SortOrder[i]; 

FindOrder[i-n]=SortOrder[i]; 

for(int j=n-1;j>=0;j--) 

MoveDistance[N-1-j]=abs(SortOrder[j]-temp); 

temp=SortOrder[j]; 

FindOrder[N-1-j]=SortOrder[j]; 

else 

for(int i=n-1;i>=0;i--) 

MoveDistance[N-i-4]=abs(SortOrder[i]-temp); 

temp=SortOrder[i];

FindOrder[N-i-4]=SortOrder[i]; 

for(int j=n;j

MoveDistance[j]=abs(SortOrder[j]-temp); 

temp=TrackOrder[j]; 

FindOrder[j]=SortOrder[j]; 

}

//计算平均寻道时间

void Count()

int Total=0; 

for(int i=0;i

Total+=MoveDistance[i]; 

AverageDistance=((double)Total)/((double)N); 

void Show() 

cout<

for(int i=0;i

cout<

 cout<

"<

cout<

int main() 

int y=1; 

int s; 

Inith(); 

while(y) 

cout<<"请选择寻道方式:

1--FCFS; 2--SSTF; 3--SCAN;4--CSCSN:

 "; 

cin>>s; 

switch(s) 

case 1:

FCFS();Count();Show();break; 

case 2:

SSTF();Count();Show();break; 

case 3:

SCAN();Count();Show();break; 

case 4:

CSCAN();Count();Show();break; 

cout<<"是否继续选择寻道算法?

1--是;0--否:

 "; 

int p; 

cin>>p; 

y=p; 

exit; 

return 0; 

}

实验结果:

实验心得:

十几天的课设时间很快就过去了,

其中既有欢乐又有痛苦。

通过这次的课程

设计,

我认识到要将操作系统这门计算机专业的课学好不仅仅是要把书上的基本

知识学好,

还要不断进行实践,

将所学的跟实践操作结合起来才能更好地巩固所

学,才能提高自己实践能力

.

通过这次的设计使我认识到只停留在表面理解问题是很难使问题得到很好的解决的,

实践能力与理论知识同样重要。

这次试验的理

论难度并不大,

但是若要深入发掘其中的东西,

并且实际去编程实现,

就遇到了

相当大的难度。

我们的编程能力并不是特别突出,

又要在很短的时间内给出算法

的实现,

非常困难。

因此我们不仅要在课上认真试验,

课后还要查资料、

做实验,

终于经过不懈的努力,

我们克服了以上的种种困难,

按时完成了课设的任务,

次感谢帮助我们的老师和同学。

成绩评定:

该生对待本次实验的态度□认真□良好□一般□比较差。

本次实验的过程情况□很好□较好□一般□比较差

对实验结果的分析□很好□良好□一般□比较差

文档书写符合规范程度□很好□良好□一般□比较差

综合意见:

成绩

指导教师签名

沈超

日期

12.22

《操作系统》课程实验第二次实验报告

实验内容及基本要求:

一、实验目的与基本要求

1、了解操作系统中文件系统的结构和管理过程。

2、掌握经典的算法:

混合索引与成组链接法等方法。

二、实验仪器与设备

硬件:

微型计算机。

中央处理器PentiumIV以上;显示器256色VGA以上;内存使用128兆;硬盘300M以上。

软件:

学生可以采用任何一种自己熟悉的编程语言完成算法的程序设计,如C/C++、Delphi、VB、VC、C#等。

三、实验内容:

编程模拟实现混合索引和成组链接法算法。

实验结果:

实验代码:

#include 

  int MA[4];     /*空闲块数组*/ 

  int A[9][4]={{3,1,2,3},{3,4,5,6},{0,0,0,0},{0,0,0,0},{3,0,7,8}, 

             {0,0,0,0},{0,0,0,0},{0,0,0,0},{0,0,0,0}};  /*磁盘空间*/ 

  int mark[9];       /*存放已分配的块*/ 

  int No=0;              /*已分配的块数*/

void display1() 

{   int i,j,temp,count; 

    No=0; 

    if(MA[1]!

=0) 

       {   i=MA[0]; 

   printf("\ngroup1:

"); 

   for(j=1;j<=i;j++)   

      {   printf("%d   ",MA[j]);  

            mark[++No]=MA[j];

 }            

   temp=MA[1]; 

   count=2; 

   while(A[temp][1]!

=0) 

      {   printf("\ngroup%d:

",count); 

         i=A[temp][0]; 

        for(j=1;j<=i;j++) 

  {   printf("%d   ",A[temp][j]); 

        mark[++No]=A[temp][j];

 } 

          count++; 

          temp=A[temp][1];   }

   printf("\ngroup%d:

",count); 

   i=A[temp][0]; 

   for(j=2;j<=i+1;j++) 

      if(A[temp][j]>0) 

         {   printf("%d   ",A[temp][j]); 

         mark[++No]=A[temp][j];  }  } 

 else 

       {     i=MA[0];   

   if(i==1) 

   printf("\nThe blocks are all assigned"); 

   else    

      {   printf("\ngroup1:

"); 

 for(j=2;j<=i;j++) 

     {   printf("%d   ",MA[j]); 

   mark[++No]=MA[j];  } } } 

 void display()  /*显示分组情况*/ 

  {   int i,j; 

      if(MA[0]!

=0) 

      display1(); 

else 

       {   i=MA[1]; 

           for(j=0;j<=3;j++) 

           MA[j]=A[i][j];  

           display1();   } } 

 void assign()      /*分配空闲块*/ 

 {   int s,i; 

    if(MA[0]>1)       /*若该组不止一个空闲块*/ 

       {   i=MA[0]; 

           s=MA[i]; 

           MA[0]--; 

           printf("number of the block:

%d",s);   } 

    else if(MA[0]==1)      /*只剩一个空闲块*/ 

       {   if(MA[1]!

=0)           /*还有其它空闲块组*/ 

              {   s=MA[1]; 

                  for(i=0;i<=3;i++) 

                  A[0][i]=A[s][i]; 

                  MA[0]--; 

                  printf("number of the block:

%d",s);     } 

           else                    /*没有其它空闲块组*/ 

              {   printf("There isn't any space"); 

                  return;    }    } 

    else                    /*当前组已分配完*/ 

       {     for(i=0;i<=3;i++) 

              MA[i]=A[0][i]; 

              assign();     } 

    display();         /*显示分组情况*/    } 

 void callback()         /*回收空闲块*/ 

 {   int i,j,temp; 

     printf("input the No. of the block you want to callback:

"); 

     scanf("%d",&j); 

     getchar();             /*得到待回收的空闲块号*/ 

     for(temp=1;temp<=No;temp++) 

       {   if(mark[temp]==j) 

           break;     } 

    if(temp

       {   printf("\nThe block is in the disk");

        return; 

       }

if(MA[0]<3)         /*当前组不满3块*/ 

       {   i=MA[0]; 

           MA[i+1]=j; 

           MA[0]++; } 

    else              /*已有3块*/ 

       {   for(i=0;i<=3;i++) 

           A[j][i]=MA[i]; 

           MA[0]=1; 

           MA[1]=j;    }    

    display();      /*显示*/    } 

 void menu()                /*功能选择函数*/ 

 {  int choice; 

    char judge; 

    printf("\ninput your choice:

(1--assign,2--callback):

"); 

    scanf("%d",&choice); 

    getchar(); 

    if(choice==1) 

       assign(); 

    else if(choice==2) 

       callback(); 

    else 

       printf("\ninvalid command!

"); 

    printf("\ncontinue or not?

(y--Yes,n--Not):

"); 

    scanf("%c",&judge); 

    getchar(); 

    if(judge=='y') 

       menu(); 

    else 

       {  printf("Now the graph is:

"); 

   display(); 

          printf("\npress any key to quit"); 

          getch();  }  } 

main() 

{   int i; 

    for(i=0;i<=3;i++) 

    MA[i]=A[0][i]; 

    display(); 

menu();  }

实验心得:

我们每天都在用文件系统,已经习惯了有文件路径寻找的方便,每次找文

件时,感觉好容易,可实际去设计这个程序时,却很难。

用树形结构图去设计,

要有较好的全局思想,

而且一些节点的分配。

在设计此系统时,

发觉自己对文件

系统理解得不够透彻。

不知道如何来具体设计这个实验,

后来耐心回到本学期学

习的课本内容上,

再次翻看了大二第一学期所学的数据结构的书,

才觉悟对文件

系统的理解,

总而言之,

操作系统的设计,

不仅提升了自己的程序设计及编写技

巧,更大大地加深了对操作系统的文件管理的了解。

在本学期的操作系统课程设计的实验中,完成了进程控制,请求分页管理,设备

管理,文件管理和进程调度等一系列实验项目,收获颇丰。

在该门课程中通过实验的

方法,模拟了当今操作系统的部分子系统的实现,进一步加深了对操作系统的理解。

掌握了与操作系统相关的重要算法,相信这些内容会牢牢记在我的脑海中,并在以后

的学习生活中派上用场。

成绩评定:

该生对待本次实验的态度□认真□良好□一般□比较差。

本次实验的过程情况□很好□较好□一般□比较差

对实验结果的分析□很好□良好□一般□比较差

文档书写符合规范程度□很好□良好□一般□比较差

综合意见:

成绩

指导教师签名

沈超

日期

12.22

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 求职职场 > 简历

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1