操作系统实验报告_第1页
操作系统实验报告_第2页
操作系统实验报告_第3页
操作系统实验报告_第4页
操作系统实验报告_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、许昌学院操作系统实验报告书学号: 5006140057 姓名: 闫金科 班级: 14物联网工程 成绩: 2016年02月实验一 Linux的安装与配置 一、实验目的1. 熟悉Linux系统的基本概念,比如Linux发行版、宏内核、微内核等。2. 掌握Linux系统的安装和配置过程,初步掌握Linux系统的启动和退出方法。3. 熟悉Linux系统的文件系统结构,了解Linux常用文件夹的作用。二、实验内容1. 从网络上下载VMware软件和两个不同Linux发行版镜像文件。2. 安装VMware虚拟机软件。3. 在VMware中利用第一个镜像文件完成第一个Linux的安装,期间完成网络信息、用户

2、信息、文件系统和硬盘分区等配置。4. 在VMware中利用第二个镜像文件完成第二个Linux的安装,并通过LILO或者GRUB解决两个操作系统选择启动的问题。5. 启动Linux系统,打开文件浏览器查看Linux系统的文件结构,并列举出Linux常用目录的作用。三、 实验过程及结果1、启动VMware,点击新建Linux虚拟机,如图所示:2、点击下一步,选择经典型,点击下一步在选择客户机页面选择Linux,版本选择Red Hat Enterprise Linux 5,如图所示:3、点击下一步创建虚拟机名称以及所要安装的位置,如图所示:4、点击下一步,磁盘容量填一个合适大小,此处选择默认值大小1

3、0GB,如图所示:5、点击完成,点击编辑虚拟机设置,选择硬件选项中的CD-ROM (IDE.)选项,在右侧连接中选择“使用ISO镜像(I)”选项,点击“浏览”,找到Linux的镜像文件,如图所示:6点击确定按钮后,点击启动虚拟机按钮,来到Linux的安装界面,如图所示:7、到此页面之后,等待自动检测安装,如图所示:8、等到出现如图所示页面后点击“skip”按钮,跳过检测,直接进入安装设置界面,如图所示:9、安装设计界面如图所示:10、点击Next按钮进入设置语言界面,设置语言为“简体中文”,如图所示:11、点击Nest按钮进入系统键盘设置按钮,设置系统键盘为“美国英语式”,如图所示:12、点击

4、下一步按钮,弹出“安装号码”对话框,选择跳过输入安装号码,如图所示:13、按照提示,一直点击下一步按钮,如图所示:14、到设置最后一步,点击下一步按钮进入开始安装Red Hat Enterprise Linux Sever界面,如图所示:15、安装完成后,进入欢迎界面,按照提示点击前进按钮知道进入Linux桌面,如图所示:16、安装成功的Linux系统桌面如图所示,桌面包含五个图标,分别为:计算机、jks Home、回收站、RHEL/5.3 i386DVD。四、实验总结 通过安装虚拟机等操作让我认识到Linux这系统一些基本特点,本次试验学会了安装虚拟机并且使用虚拟机安装操作系统,掌握了红帽L

5、inux系统的安装和配置过程,以及对镜像ISO文件的使用,有别于我们机器上使用的系统,通过虚拟机这个软件还可以在已有系统的基础上使用其他操作系统。安装过程中一定要注意选择版本的时候要选择Red Hat Enterprise Linux 5版本,否则安装不能成功。自己动手成功的安装了Linux系统,自己对Linux的学习产生更大的兴趣。实验二 Linux操作系统的运行模式 一、实验目的1. 熟悉Linux系统终端工作环境的使用,了解Linux命令的格式,使用学会利用常用的Linux命令来完成系统的管理和维护。2. 了解X-Windows的特点,熟悉Linux图形用户接口的使用,掌握GNOME桌面

6、环境的基本操作。3. 了解和掌握在Linux环境下安装软件包的方法,如QQ for Linux等用软件的安装方法。二、实验内容1. 启动Linux系统打开虚拟终端界面,使用Linux的在线帮助指令man或help获得ls、uname、date、cal、mkdir、cp等Linux命令的帮助手册,了解这些命令的具体使用方法。同时,也可以通过执行“命令名 help”来显示该命令的帮助信息,如“ls help”,试用这些命令。2. 通过uname命令的执行,查看并给出相关系统信息:操作系统的名称、系统域名、系统CPU名称等。3. 在主目录下创建一个名为myetc的子目录,将/etc目录下与网络相关的

7、文件和子目录拷贝到该目录,并将这些文件的执行权限设置为可执行。4. 在主目录/home下创建目录program、music 和temp,然后在program下建立目录java和C,列出完成该过程的所有命令。5. 在图形界面环境中,查看GNOME桌面的面板和桌面,设置GNOME,包括屏幕保护程序、更改背景和指定关联程序等。6. 实现对光盘的加载和访问,然后卸载。三、实验过程及结果1、打开终端,输入 【ls help】来查看【ls】指令的使用方法,同理查看uname、date、cal、mkdir、cp的使用方法。2、在终端中输入【uname a】显示操作系统名系统cpu名和系统域名 3、重启系统,

8、用【root】用户名进入系统,以获得权限。在终端中输入【mkdir myetc】,在主目录下创建【myrtc】的目录,【ls】查看是否创建。输入【cd .】返回至【/】文件,输入【cp r etc root/myetc】讲etc中内容复制到myetc中,进入myetc文件【ls】查看。输入【chmod u+x etc】赋予文件可执行的权限,输入【ll】查看。4、在home下,输入【mkdir program,music,temp】,可在home下创立这三个目录,输入【ls】查看。在program下输入【mkdirjava,C】,可创立java和C两个目录,【ls】查看。5、在桌面上方选择【系统

9、】-【首选项】,即可设置屏幕保护程序和更改背景和指定关联程序5、在桌面上可见看到有CD光盘,双击浏览,右键【弹出】即卸载。四、实验总结和体会Linux的指令系统是学习Linux操作系统很重要的一部分,指令系统相当于在Windows操作系统下的doc,可以省去图形化界面。通过这次的实验让我了解了Linux的强大功能,了解到Linux有许多方便快捷的设置基本配置的方法,这使我更喜欢上Linux的使用。在使用指令的过程中,有时候对文件的操作需要一定的权限,这时需要在登陆时用户名使用【root】,而不是我们在安装时使用的用户名,这样就获得了管理员权限,可以对一些系统文件进行操作。实验三 Linux应用

10、软件与系统管理 一、实验目的1. 了解OpenOffice.Org集成办公软件,掌握利用OpenOffice.Org的套件来完成文档和图片的处理。2. 了解Linux网络管理的知识,熟悉Linux网络配置的方法,掌握在Linux环境下配置Web服务器和ftp服务的方法。二、实验内容1. 配置Linux系统的网络环境,安装FTP和Web服务器,并配置相关的属性,利用FTP实现WINDOWS和Linux之间的数据交换。2. 利用FTP程序上传自己的照片到FTP服务器,利用OpenOffice的文字处理工具OpenOffice Writer制作一份表格形式的个人简历。个人简历中至少包含学号、姓名、性

11、别、专业、照片和学习经历等内容,并保存为网页格式(html格式)。3. 将个人简历网页设置为WEB服务器的首页,然后在客户端利用浏览器访问WEB服务器,查看效果。4. 通过读取proc文件系统,获取系统各种信息(如主机名、系统启动时间、运行时间、版本号、所有进程信息、CPU使用率等),并以比较容易的方式显示。三、实验过程及结果1.配置网络环境:在 (服务.cmd).里面进行以下操作:在服务里选择3按回车完成后,可在本地连接看到VMware已连接上网络在虚拟机设置中设置以太网网络连接方式为网关地址填虚拟机的网管,IP地址设为虚拟机的一个子网:四、总结:在linux系统下,make是我们经常用到的

12、编译命令,所以关于make代码和他的操作指令一定要记清楚。所以,熟练掌握了make和makefile工具之后,源码安装软件就变的像windows下安装软件一样简单。实验四 进程控制与管理 一、实验目的1. 掌握GCC编译器的用法,学会利用GCC编辑器来编辑C语言程序,学会利用GDB调试器来调试C语言程序。2. 理解进程和程序的区别和联系,3. 掌握在Linux环境下观察进程运行情况和CPU工作情况的命令。4. 了解fork()系统调用,掌握利用fork()创建进程的方法。5. 了解Linux系统其他与进程相关的系统调用,如exec、wait和exit等。6. 了解Linux常用的进程通信机制。

13、二、实验内容1. 利用Linux的进程管理命令ps、top来监视和跟踪进程,体会进程和程序的关系。2. 利用Linux的文字编辑器编写文件复制的C语言程序,并用gcc编译该程序,然后运行该程序。3. 编写一段程序,使用系统调用fork( )创建两个子进程。当此程序运行时,在系统中有一个父进程和两个子进程活动。让每一个进程在屏幕上显示一个字符:父进程显示'a',子进程分别显示字符'b'和字符'c'。试观察记录屏幕上的显示结果,并分析原因。4. 修改上述程序,每一个进程循环显示一句话。子进程显示'daughter '及'son

14、 ',父进程显示 'parent ',观察结果,分析原因。5. 用fork( )创建一个进程,再调用exec( )用新的程序替换该子进程的内容。三、实验过程及结果1、利用Linux的进程管理命令ps、top来监视和跟踪进程,体会进程和程序的关系。<1>从用户身份切换到ROOT身份<2>输入命令 ps 查看进程<2>输入命令 top 跟踪进程2、利用Linux的文字编辑器编写一个计算机100个自然数和的C语言程序,并用gcc编译该程序,然后运行该程序。<1>创建一个.C文件 并进入进行编辑<2>用GCC 进行编译

15、,再查看文件,发现产生执行文件 a.out <3>执行这个可执行文件得到结果50501、 编写一段程序,使用系统调用fork( )创建两个子进程。当此程序运行时,在系统中有一个父进程和两个子进程活动。让每一个进程在屏幕上显示一个字符:父进程显示'a',子进程分别显示字符'b'和字符'c'。试观察记录屏幕上的显示结果,并分析原因。<1>穿件一个.C文件 并进行编写程序代码<2>反复执行2次该程序<3>可以看出两次执行的结果 a b c 出现的顺序不同,原因是,3个进程的输出次序是随机的,并不会按规定的

16、顺序出现,所以会出现上述结果。4、修改上述程序,每一个进程循环显示一句话。子进程显示'daughter '及'son ',父进程显示 'parent ',观察结果,分析原因。<1>重新修改代码<3>执行这段程序<4>原分析:因和之前一样,可以看出执行的结果 3个单词出现的顺序不同,原因是,3个进程的输出次序是随机的,并不会按规定的顺序出现,所以会出现上述结果。5、用fork( )创建一个进程,再调用exec( )用新的程序替换该子进程的内容。<1>编写代码<2>执行的结果 结果表明 ex

17、ecl 替代了的内容四、实验总结和体会这个实验考察的是进程之间存在很多可能性以及对编辑器的使用。本次实验学习了在linux环境下用gcc编译器运行c语言程序,在linux环境下编写程序用到了vi编辑器,知道了该编辑器也需要各种命令来操作。编写C语言程序时用到了fork()函数,再调用execl()用新的程序替换该子进程的内容。实验五 进程调度模拟程序的设计与实现 一、实验目的1. 了解进程调度的概念,掌握常用进程调度算法的原理。2. 掌握Linux程序设计编辑、编译和调试的技巧。二、实验内容1. 编写程序实现进程调度调度算法先来先服务、优先级高优先和时间片轮转调度算法。(编程语言不限)2. 输

18、入数据,输出运行结果。三、实验过程及结果1先来先服务 i nclude<stdio.h> float t,d;  struct  int id; float ArriveTime; float RequestTime; float StartTime; float EndTime; float RunTime; float DQRunTime; int S

19、tatus; arrayTask4;GetTask()  int i; float a; for(i=0;i<4;i+) arrayTaski.id=i+1; printf("input the number"); printf("input the the ArriveTime of arrayTask%d:",i); scanf("%f",&

20、;a); arrayTaski.ArriveTime=a; printf("input the RequestTime of arrayTask%d:",i); scanf("%f",&a); arrayTaski.RequestTime=a; arrayTaski.StartTime=0; arrayTaski.EndTime=0; arrayTaski.RunTime=0; arrayTaski.Status=0; 

21、;   int fcfs()    int i,j,w=0; for(i=0;i<4;i+)    if(arrayTaski.Status=0)    t=arrayTaski.ArriveTime;  w=1;    if(w=1)  break;    for(i=0;i<4;i+

22、)     if(arrayTaski.ArriveTime<t&&arrayTaski.Status=0)  t=arrayTaski.ArriveTime;    for(i=0;i<4;i+)    if (arrayTaski.ArriveTime=t)  return i;      int sjf(

23、) int i,x=0,a=0,b=0; float g; for(i=0;i<4;i+)  if(arrayTaski.Status=1) g=arrayTaski.EndTime; x=1;   if(x=0) t=arrayTask0.ArriveTime; for(i=0;i<4;i+)  if(arrayTaski.ArriveTime<t)  t=arrayTaski.ArriveTim

24、e; a=i;   return a; else  for(i=0;i<4;i+) if(arrayTaski.EndTime>g) g=arrayTaski.EndTime;  for(i=0;i<4;i+) if(arrayTaski.Status=0&& arrayTaski.ArriveTime<=g) t=arrayTaski.RequestTime; a=i; b=1;

25、60;/*判断有没有进程在前个进程完成前到达*/  if(b!=0) /*有进程到达则按SJF*/ for(i=0;i<4;i+)  if(arrayTaski.Status=0&&arrayTaski.ArriveTime<=g&&arrayTaski.RequestTime<t) t=arrayTaski.RequestTime; a=i;  return a; else /*否则按FCFS*/ for

26、(i=0;i<4;i+) if(arrayTaski.Status=0) t=arrayTaski.ArriveTime;  for(i=0;i<4;i+)  if(arrayTaski.Status=0&&arrayTaski.ArriveTime<t) t=arrayTaski.ArriveTime; a=i;   return a;   new(int s) /*定义执行进程后相关数据的

27、修改*/   int i,g=0; for(i=0;i<4;i+)  if(arrayTaski.Status=0) continue; else  g=1; break;   if(g=0) /*当处理的是第一个未执行的进程时执行*/  arrayTasks.StartTime=arrayTasks.ArriveTime; arrayTasks.EndTime=arrayTasks.RequestT

28、ime+arrayTasks.ArriveTime; arrayTasks.RunTime=arrayTasks.RequestTime; arrayTasks.Status=1; g=2;  if(g=1) /*当处理的不是第一个未执行的进程时执行*/  arrayTasks.Status=1; for(i=0;i<4;i+)  if(arrayTaski.Status=1) d=arrayTaski.EndTime;  for(i=0;i<

29、4;i+) /*查找最后执行的进程的完成时间*/  if(arrayTaski.EndTime>d&&arrayTaski.Status=1) d=arrayTaski.EndTime;  if(arrayTasks.ArriveTime<d) /*判断修改的进程的到达时间是否在前一个执行的进程的完成时间前面*/ arrayTasks.StartTime=d; else arrayTasks.StartTime=arrayTasks.ArriveTime; 

30、arrayTasks.EndTime=arrayTasks.StartTime+arrayTasks.RequestTime; arrayTasks.RunTime=arrayTasks.EndTime-arrayTasks.ArriveTime;  arrayTasks.DQRunTime=arrayTasks.RunTime/arrayTasks.RequestTime;  Printresult(int j) /*定义打印函数*/   printf("%dt",arra

31、yTaskj.id); printf("%5.2ft",arrayTaskj.ArriveTime); printf("%5.2ft",arrayTaskj.RequestTime); printf("%5.2ft",arrayTaskj.StartTime); printf("%5.2ft",arrayTaskj.EndTime); printf("%5.2ft",arrayTaskj.RunTime); printf("%

32、5.2fn",arrayTaskj.DQRunTime);  main()  int i,b,k,a,c=0; int d4; clrscr(); printf("t F. FCFS n"); printf("t S. SFJ  n"); printf("t Q. EXIT n"); for(i=0;i+)&

33、#160;if(c) break; printf("please input the number a:n"); scanf("%d",&a); switch(a)  case Q: c=1; break; case F:printf("please input the different-ArriveTime of arrayTasksn"); Get

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论