广工操作系统实验2014 2015

合集下载

大学计算机实验2 实验报告

大学计算机实验2 实验报告

深圳大学实验报告课程名称:计算机导论实验名称:操作系统与工具软件学院:建筑与城市规划学院专业:建筑学报告人:XXX学号:2015XXXX班级:XXXXXX 同组人:指导教师:李炎然实验时间:2015年10月14日实验报告提交时间:2015年10月20日教务处制一.实验目的①掌握Windows 的基本操作。

②掌握文件管理和磁盘操作。

③掌握Windows 系统的基本设置。

④了解Windows 注册表的使用。

⑤了解常用软件的使用。

二.实验步骤与结果2.3.2Windows 基本操作1.Windows 桌面的组成(如图2-1)2.窗口的组成(如图2-2)2.3.3文件与文件夹图2-1Windows 桌面的组成图2-2窗口的组成1.“资源管理器”和“我的电脑”(1)我的电脑(如图2-3所示)图2-3“这台电脑”窗口(2)资源管理器图2-4“开始”菜单执行“开始”→“所有程序”→“Windows资源管理器”命令,启动资源管理器。

(如图2-4)所示)打开“资源管理器”并浏览。

(如图2-5“资源管理器”窗口2.3.4磁盘管理1.磁盘清理①在“这台电脑”窗口中,右击需要进行磁盘清理的驱动器,在弹出的快捷菜单中选择“属性”命令。

(如图2-6所示)②在“常规”选项卡中单击“磁盘清理”按钮,出现“磁盘清理”对话框。

③选中“磁盘清理”选项卡,在“要删除的文件”列表框中,选中相应的复选框来确认需要删除的文件类型。

单击“确定”按钮,然后在要求确认的对话框中单击“删除文件”按钮。

系统开始自动清理。

(如图2-7所示)2.磁盘碎片整理程序①在“这台电脑”窗口中,右击需要进行碎片整理的驱动器,在弹出的快捷菜单中选择“属性”。

②选择“工具”选项卡,在“碎片整理”框架中单击“优化”按钮,出现“优化驱动器”窗口。

③单击“优化”按钮,系统自动进行碎片整理。

(如图2-8所示)图2-7“磁盘清理”窗口图2-8“属性”和“优化驱动器”窗口3.格式化磁盘①在“这台电脑”窗口中,在地址栏选择“这台电脑”,在显示区右击需要格式化的磁盘。

工作报告之win7系统操作实验报告

工作报告之win7系统操作实验报告

win7系统操作实验报告【篇一:操作系统实验报告1】实验一进程同步与互斥实验报告【篇二:计算机基础1实验报告win7基本操作】《大学计算机基础Ⅰ》课程实验报告学院年级专业姓名学号任课教师上机地点实验教师(以上由学生填写)西南大学计算机与信息科学学院计算机基础教育系2015年10 月18 日实验成绩记载课程实验报告一一、实验题目:win7的基本操作、文件管理与控制面板的使用二、实验目的:1.掌握桌面主题的设置2. 掌握任务栏的使用和设置3. 掌握任务切换的方法4. 掌握?开始?菜单的组织5.掌握快捷方式的创建6. 掌握文件夹的显示方式7.掌握文件夹和文件的创建/属性查看和设置 8.熟悉文件和文件夹的搜索9.体验文件和文件夹的压缩存储与解压缩三、实验主要内容及过程(实验主要内容的介绍、主要的操作步骤)1.在本地机上建立文件夹,对文件夹进行复制,设为只读并创建快捷方式a.点击硬盘d,右击鼠标新建文件夹b.选择?复制?对文件夹进行操作c.选中新建文件夹,选择?属性?→?常规?→勾选?隐藏?使文件夹隐藏,选?只读?使文件夹显示。

如下图,d.选中新建文件夹,右击鼠标选择?创建快捷方式?即可为文件创建快捷方式。

如下图篇三:win7系统实践报告实验报告一实验名称:操作系统基础知识及操作实验日期:2012年9月3日实验人员:李媛媛经济2011 2011011780一、windows 7 的基本选项1、选择一个图形或图片作为桌面背景,观察效果2、使用幻灯片作为桌面背景,观察效果单击“开始”按钮;单击“控制面板”;单击“更改桌面背景”;选择“桌面背景”;单击“更改图片时间间隔”,选择幻灯片变换图片的时间间隔;单击“保存修改”。

3、将屏幕保护设置为三维文字,等待时间3分钟,不设密码4、通过更改主题来更改颜色单击“开始”;单击“控制面板”;单击“显示”;单击“调整分辨率”6、使屏幕上的文本或其他项目(如图表)变得更大,更易于查看。

电大操作系统(本科)实验报告1-5

电大操作系统(本科)实验报告1-5

中央广播电视大学计算机科学与技术专业操作系统(本科)实验报告院系:______ _________班级:___ _____学生姓名:____ _________学号: _ _____指导教师:___ __ ___完成日期 2015 年月日一、实验题目:Linux 应用及shell编程二、实验目的和要求:目的1.掌握Linux一般命令格式和常用命令。

2.学会使用vi编辑器建立、编辑文本文件。

3.了解shell的作用和主要分类。

4.学会bash脚本的建立和执行方式。

5.理解bash的基本语法。

6.学会编写简单的shell脚本。

要求1.登录进入系统,修改个人密码。

2.使用简单命令:date,cal,who,echo,clear等,了解Linux命令格式。

3.进入vi。

建立一个文件,如file.c。

进入插入方式,输入一个C语言程序的各行内容,故意制造几处错误。

最后,将该文件存盘。

回到shell状态下。

4.运行gcc file.c -o myfile,编译该文件,会发现错误提示。

理解其含义。

5.利用vi建立一个脚本文件,其中包括date,cal,pwd,ls等常用命令。

然后以不同方式执行该脚本。

6.对主教材第2章中的适当例题进行编辑,然后执行。

从而体会通配符、引号、输入输出重定向符、成组命令的作用;能正确使用自定义变量、位置参数、环境变量、输入/输出命令;能利用if语句、while语句、for语句和函数编写简单的脚本。

三、实验内容:1.正确地登录和退出系统。

2.熟悉使用ls,cp,cat,等常用命令。

3.进入和退出vi。

利用文本插入方式建立一个文件。

5.建立简单shell脚本并执行它。

四、实验技术和方法:Linux中各种脚本语言五、实验环境:虚拟机,ubuntu server版,shell六、实验步骤和结果:1.正确地登录和退出系统。

使用exit命令退出系统2.熟悉使用cat,cd,cp,ls,mor,rm,vi,who等常用命令。

操作系统实验(一)

操作系统实验(一)

操作系统实验年级2014 级专业学号姓名指导教师年月日实验一 Windows任务管理器的使用一、实验目的通过在Windows 任务管理器中对程序进程进行响应的管理操作,熟悉操作系统进程管理的概念,学习观察操作系统运行的动态性能.二、实验内容启动并进入Windows环境,单击Ctrl + Alt + Del键,或者右键单击任务栏,在快捷菜单中单击“任务管理器”命令,打开“任务管理器”窗口.1.分别查看每个选项卡的内容,了解相关参数的含义及其当前内容.2.在“进程”选项卡上单击“查看”菜单,然后单击“选择列”命令.单击要增加显示为列标题的项目,然后单击“确定”.分别了解“进程”选项卡各列的含义及其当前内容.3.为更改正在运行的程序的优先级,可在“进程”选项卡上右键单击您要更改的程序,指向“设置优先级”,然后单击所需的选项.更改进程的优先级可以使其运行更快或更慢(取决于是提升还是降低了优先级) ,但也可能对其他进程的性能有相反的影响.(查看进程管理器,说明按照名字序号前5个进程的主要用途和功能.)4、修改windows服务选项,将windows的远程用户修改注册表的服务设置成禁止. :打开控制面板→管理工具→服务→找到"Remote Registry",双击,启动类型设置为禁用.5、修改windows的磁盘管理并设定配额选项。

设定配额的磁盘格式必须是NTFS,如果你的硬盘是FAT32格式;可通过以下命令:convert 盘符:/fs:ntfs 将某一磁盘分区转为NTFS。

6、修改windows启动选项,将其中的前三个自动启动的选项去掉. :开始→运行→输入msconfig,到启动页.7、修改windows的虚拟内存交换空间.8、修改windows使得windows启动时,显示操作系统列表时间为5秒,并写出启动文件的具体内容. :右键我的电脑→属性→高级→启动和故障恢复的设置→显示列表时间设为5,→点击编辑→列出具体内容,一般是:[boot loader]timeout=0default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS[operating systems]multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional" /noexecute=optin /fastdetect9、查看windows本地安全策略,并修改为定期强制修改密码.写出本地安全策略的审核的内容. :开始→运行→输入gpedit.msc →计算机设置→Windows设置→安全设置→账户策略→密码策略→密码最长存留期设置为需要的天数即可.10、获得此计算机网卡的网络配置及mac地址.开始→运行→输入cmd回车→输入ipconfig /all回车即是.11、在D盘新建一个文件夹,以自己的拼音缩写命名,并利用命令将其映射为I盘,例如为aaa,命令:subst I: d:\aaa.即将c:\aaa映射为I盘. (注:I盘是虚拟盘,不是实际的硬盘)语法subst [drive1:[drive2:}Path}subst drive1:/d参数drive1:指定要为其指派路径的虚拟驱动器.drive2:指定包含指定路径的物理驱动器(如果不是当前的驱动器).Path指定要指派给虚拟驱动器的路径./d删除虚拟驱动器./?在命令提示符显示帮助.注释以下命令在subst 命令中使用的驱动器上无法工作(或不应使用):chkdskDiskcompDiskcopyformatlabelrecoverdrive1 参数必须在lastdrive 命令指定的范围之内.如果没有,subst 将显示下列错误消息:Invalid parameter - drive1:范例若要为路径B:\User\Betty\Forms 创建虚拟驱动器Z,请键入:subst z:b:\user\betty\forms现在,不用键入完整路径,而是通过键入虚拟驱动器号,后跟冒号,即可到达该目录,如下所示:z:winxp中的映射盘符命令:subst另附上软件extrasubst.zip(创建虚拟驱动器)12、通过设备管理器查看系统所有组件配置.包括驱动程序,装载的所有程序,windows组件,硬件组件的IRQ等.13、查看windows的版本及注册信息. :开始→运行→输入winver回车14、利用windows自带的聊天工具,进行局域网内的聊天,并写出详细步骤. 首先启动服务中的Messager服务,Sp2以后版本默认为禁止的,将其设为自动,然后要发消息就开始→运行→输入net send 对方IP地址信息内容.回车即可15、利用命令查看windows进程中每个进程所提供的服务.命令:tasklist /SVC (注:查看svchost进程情况)实验二 Windows进程观测一、背景知识Windows提供了创建控制台应用程序的能力,使用户可以利用标准的C++工具,如iostream库中的cout和cin对象,来创建小型应用程序。

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

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

《计算机操作系统》课程实验报告题目实验一进程调度学院: 计算机学院专业: 计算机科学与技术姓名班级学号2015年10月21日实验一进程调度1.实验目的:通过对进程调度算法的模拟,进一步理解进程的基本概念,加深对进程运行状态和进程调度过程、调度算法的理解。

2.实验内容:用C语言实现对N个进程采用某种进程调度算法先来先服务调度、短作业优先调度的调度。

3.设计实现:要求给出设计源码,设计源码要有详细注释,#include <stdio.h>#include<iostream>using namespace std;struct program{char name; /*进程名*/int atime; /*到达时间*/int stime; /*服务时间*/int ftime; /*完成时间*/int rtime; /*周转时间*/float qrtime; /*带权周转时间*/};void xianshi(struct program a[],int n){int i,j;struct program t;/*将进程按时间排序*/printf("根据到达时间重新排序:\n");printf("*****进程*************到达时间***************服务时间*****\n");for(j=0;j<n-1;j++)for(i=0;i<n-1-j;i++)if(a[i].atime>a[i+1].atime){t.atime=a[i].atime;a[i].atime=a[i+1].atime;a[i+1].atime=t.atime;=a[i].name;a[i].name=a[i+1].name;a[i+1].name=;t.stime=a[i].stime;a[i].stime=a[i+1].stime;a[i+1].stime=t.stime;}for(i=0;i<n;i++)printf(" %c %d %d |\n",a[i].name,a[i].atime,a[i].stime);printf("----------------------------------------------------\n"); }void fcfs(struct program a[],int n){int i;int time=0;for(i=0;i<n;i++){time=time+a[i].stime;a[i].ftime=a[0].atime+time;a[i].rtime=a[i].ftime-a[i].atime;a[i].qrtime=(float)a[i].rtime/a[i].stime;}printf("\nFCFS算法:\n");printf("*****进程****到达时间****完成时间******周转时间*******带权周转时间*****\n");for(i=0;i<n;i++){printf(" %c %d %.2d %.2d %.2f |\n",a[i].name,a[i].atime,a[i].ftime,a[i].rtime,a[i].qrtime);}printf("-----------------------------------------------------------------------\n");}void main(){int i,m;struct program pro[4];/*创建进程 */printf(" ******先来先服务算法****** \n");printf("请输入进程的数目:\n");scanf("%d",&m);i=m;for(i=0;i<m;i++){printf("请输入进程%d的进程名,到达时间,服务时间\n",i+1);cin>>pro[i].name>>pro[i].atime>>pro[i].stime;}xianshi(pro,m);fcfs(pro,m);getchar();}#include <stdio.h>#include<iostream>using namespace std;struct program{char name; /*进程名*/float atime; /*到达时间*/float stime; /*服务时间*/float ftime; /*完成时间*/float rtime; /*周转时间*/float qrtime; /*带权周转时间*/};void xianshi(struct program a[],int n){int i,j;struct program t;/*将进程按时间排序*/printf("重新排序:\n");printf("*****进程*************到达时间***************服务时间*****\n");for(j=0;j<n-1;j++)for(i=1;i<n-1-j;i++)if(a[i].stime>a[i+1].stime){t.atime=a[i].atime;a[i].atime=a[i+1].atime;a[i+1].atime=t.atime;=a[i].name;a[i].name=a[i+1].name;a[i+1].name=;t.stime=a[i].stime;a[i].stime=a[i+1].stime;a[i+1].stime=t.stime;}for(i=0;i<n;i++)printf(" %c %f %f |\n",a[i].name,a[i].atime,a[i].stime);printf("----------------------------------------------------\n"); }void SJF(struct program a[],int n){int i;a[0].ftime=a[0].atime+a[0].stime;a[0].rtime=a[0].ftime-a[0].atime;a[0].qrtime=a[0].rtime/a[0].stime;for(i=1;i<n;i++){a[i].ftime=a[i-1].ftime+a[i].stime;a[i].rtime=a[i].ftime-a[i].atime;a[i].qrtime=a[i].rtime/a[i].stime;}printf("\nSJF算法:\n");printf("*****进程****到达时间****完成时间******周转时间*******带权周转时间*****\n");for(i=0;i<n;i++){printf(" %c %.2f %.2f %.2f %.2f |\n",a[i].name,a[i].atime,a[i].ftime,a[i].rtime,a[i].qrtime);}printf("-----------------------------------------------------------------------\n");}void main(){int i,m;struct program pro[4];/*创建进程 */printf(" ******短作业优先算法****** \n");printf("请输入进程的数目:\n");scanf("%d",&m);i=m;for(i=0;i<m;i++){printf("请输入进程%d的进程名,到达时间,服务时间\n",i+1);cin>>pro[i].name>>pro[i].atime>>pro[i].stime;}xianshi(pro,m);SJF(pro,m); getchar(); }4.实验结果5.实验过程中出现的问题及解决办法先来先服务调度算法就是根据进程达到的时间为依据,哪一个进程先来那么该进程就会先执行;最短进程优先调度算法则是以每个进程执行所需时间长短为依据,某一个进程执行所需花的时间要短些那么该进程就先执行。

《Linux操作系统》实验报告模板

《Linux操作系统》实验报告模板

课程编号:B080103040Linux操作系统实验报告姓名姚柯杰学号******** 班级软工1212 指导教师石凯实验名称Linux操作系统实验开设学期2014-2015第一学期开设时间第11周——第18周报告日期评定成绩评定人石凯评定日期东北大学软件学院实验一熟悉Linux环境一、举例列出常用的shell命令使用方法1.目录操作(1)mkdir abc 创建一个目录abc(2)cd /abc 将工作目录改变到abc(3)cd 改变当前目录到主目录(4)ls 列出当前目录的内容(5)ls -l 输出当前目录内容的长列表,每个目录或文件占一行(6)pwd 显示当前目录的全路径(1)cat mx.c 显示mx.c文件内容(2)more mx.c 分屏显示mx.c内容(3)cat file1 file2 连接file1 和file2(1) cp file1 file2 将文件1复制到文件2(2)mv file1 file2 将文件重命名为file2(3)rm filename 删除文件filename二、通过实例写出Linux下C程序编辑运行过程。

在终端命令下输入vi filename 命令,这里我输入vi helloworld.c 创建并打开helloworld.c 文件按i进入编辑模式,输入下列code:# include <stdio.h>void main(void){Printf(“hello world!\n”);}输入:wq保存退出输入cc helloworld.c编译,在输入./a.out运行三、实验总结在实验一中,我初步对linux有了初步的了解,能熟练目录和文件进行操作,并且能用linux进行基本简单的基于c的编程。

师傅领进门,修行在个人,算是通过这个实验进入了linux的门。

实验二文件操作一、实现CP命令实现思路:提取出源路径和目标路径到函数中,放于定义的两个int变量,定义缓冲区buf,对两个变量进行判断,如果符合要求打开读取源文件信息存于缓冲区,然后写到目标文件中,关闭两个文件以实现等同cp效果。

《操作系统实验》课件

《操作系统实验》课件

文件以块为单位进行存 储,通过逻辑块号和物 理块号的映射来实现文 件的访问。同时,可以 采用不同的文件组织方 式,如顺序存储和链式 存储等。
通过目录来实现对文件 的组织和访问,目录中 包含文件名、文件的位 置信息和访问权限等信 息。常见的目录结构有 单级目录、二级目录和 树形目录等。
通过访问控制表(ACL )或安全标签等机制来 实现对文件的访问控制 ,以确保文件的安全性 和完整性。
03
[6] 张丽芬. 操作系统实验教程[M]. 北京: 中国人民大学出版 社, 2014.
THANKS
操作系统基本类型
总结词
根据不同的应用场景和功能,操作系统 可以分为多种类型,如批处理操作系统 、分时操作系统、实时操作系统等。
VS
详细描述
根据不同的应用需求,操作系统可以分为 多种类型。批处理操作系统主要用于大规 模数据处理,分时操作系统允许多个用户 同时使用计算机,实时操作系统则用于需 要快速响应的场合。
结果分析与讨论
01
进程管理实验结果 分析
分析实验过程中出现的问题和解 决方法,讨论进程调度策略和优 先级分配的合理性。
02
内存管理实验结果 分析
分析内存分配算法的效率和公平 性,讨论内存碎片化问题及其解 决方案。
03
文件系统实验结果 分析
分析文件系统性能瓶颈和优化方 法,讨论文件存储和检索的效率 问题。
内存管理是操作系统的核心功能之一,包括 内存分配、回收、内存保护等。
详细描述
内存管理是操作系统的核心功能之一,负责 分配和回收内存资源。同时,它还需要保证 各个进程之间的隔离,防止相互干扰和破坏 。内存管理算法有分区管理、分页管理、段 式管理和段页式管理等。
文件系统

计算机操作系统上机实验报告

计算机操作系统上机实验报告

计算机操作系统(cāo zuò xì tǒnɡ)上机实验报告
云南师范大学信息(xìnxī)学院
实验报告
学号:134100010姓名:姜兴玲班级:计科13A 课程名称:操作系统实验名称:存储管理
实验性质:①综合性实验②设计性实验③验证性实验试验时间:2015年5月5日试验地点:睿智4栋212
本试验所用的设备:计算机一台
实验目的
了解计算机的存储并学会管理。

实验内容及过程:
1.右键单击工具栏,打开任务管理器查看性能来了解CPU
使用和页面文件使用。

2、单击开始设置控制面板系统
单击高级然后选择性能的设置来设置系统、管理系统
3、性能和维护打开控制面板切换到分类视图,选择性能和维护来进行操作。

小结:
通过对控制面板的熟悉我们能更好的了解计算机并且能对存储管理更好的了解和学习!
任课教师评语
教师签字: 年月日
注:每学期至少一次设计性实验。

每学期结束请任课教师按时按量统一(tǒngyī)交到教学秘书处
内容总结
(1)计算机操作系统上机实验报告。

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

操作系统实验报告学生学院计算机学院专业班级X级网络工程2班学号 311X学生姓名 X指导教师 X 2013年12月26 日计算机学院网络工程专业 2 班学号:X 姓名:X 协作者:________ 教师评定:实验__一__题目_实验一进程调度实验__二__题目_实验二作业调度实验__三__题目_实验三储存管理空间的分配与回收模拟计算机学院网络工程专业 2 班学号:31X6姓名:X 协作者:________ 教师评定:实验题目___实验一进程调度一、实验目的用高级语言编写和调试一个进程调度程序,以加深对进程的概念及进程调度算法的理解。

二、实验原理设计一个有N个进程并发的进程调度程序。

要求采用最高级优先数优先算法。

每个进程有一个进程控制块PCB表示。

进程控制块可以包含如下信息:进程名、优先数、到达时间、需要运行时间、已用CPU时间、进程状态等等。

进程的优先数以及需要的运行时间可以事先人为地指定。

进程的到达时间为进程输入的时间。

进程的运行时间以及时间片为单位进行计算。

每个进程的状态可以是未准备N(no ready)、就绪W(wait)、运行R(run)、完成F(finish)四种状态之一。

就绪进程获得CPU后就只能进行一个时间片。

用已占用CPU时间加1来表示。

如果运行一个时间片后,进程的已占用CPU时间已达到所需要的运行时间,则撤销该进程,如果运行一个时间片后进程的已占用CPU时间还未到达所需要的运行时间,也就是进程还需要继续运行,此时,应将进程的优先数减1,然后把它插入就绪队列等待CPU。

每进行一次调度程序都打印一次运行进程、就绪队列、以及各个进程的PCB,以便进程检查。

重复以上过程,知道所有进程完成为止。

三、实验方法、步骤、方案1、动态优先数时间片轮转法:采用时间片轮转法和动态优先数算法的混合思想:一开始给予任务赋予优先数,如果运行一个时间片后,进程的已占用CPU时间已达到所需要的运行时间,则撤销该进程,如果运行一个时间片后进程的已占用CPU时间还未到达所需要的运行时间,也就是进程还需要继续运行,此时,应将进程的优先数减1(即满足动态优先数),然后比较队列的优先数,并把该任务插入比该任务现在的优先数还大的进程的最前面。

然后继续进行下一个时间片,直到所有进程完成为止。

2、开放式多级反馈队列调度算法:采用多级反馈队列调度算法。

其基本思想是:当一个新进程进入内在后,首先将它放入第一个队列的末尾,按FCFS原则排队等待高度。

当轮到该进程执行时,如能在该时间片内完成,便可准备撤离系统;如果它在一个时间片结束时尚为完成,调度程序便将该进程转入第二队列的末尾,再同样地按FCFS原则等待调度执行,以此类推。

开放式实现:允许完成一个时间片后插入进程,对该进程的插入方式是:插入第一队队列的末端。

四、重要函数、数据结构说明动态优先数时间片轮转法:struct pcb{//进程控制块char name[10];//进程名char state;//进程状态int super;//优先数int ntime;//需要运行时间int rtime;//已占用CPU时间int pieces;//时间片struct pcb* link;}sort()//对进程进行优先级排列函数{PCB *first,*second;int insert=0;if((ready==NULL)||((p->super)>(ready->super))){p->link=ready;ready=p;}//优先数最大进入队列头else{first=ready;second=first->link;while(second!=NULL){if((p->super)>(second->super))//插入进程优先数大于当前进程优先数{//插入到当前进程前面p->link=second;first->link=p;second=NULL;insert=1;}else{//否则进入对尾first=first->link;second=second->link;}}if(insert==0){//不插入则继续first->link=p;}}running()//建立进程就绪函数{if(p->pieces==1){p->rtime+=3;//时间片运行}else{(p->rtime)++;}if(p->rtime==p->ntime||p->rtime>p->ntime){destroy();}else{(p->super)--;p->state='W';sort();}}开放式多级反馈队列调度算法:typedef struct pcb{//进程控制块char name[10];//进程名char state;//进程状态int queue;//进程所在队列int ntime;//需要运行时间int rtime;//已占用CPU时间int qtime;//进程在当前队列可运行的时间块struct pcb* link;}findpos()//找到队列函数{PCB *ps=pfend;if(!ps||!ps->link||(ps->link->queue-ps->queue)>1){ pinsert=ps;}else{while(ps->link&&ps->link->queue!=(pfend->queue+2)){ ps=ps->link;}pinsert=ps;}}insert()插入函数{if(!ready){ready=p;pfend=p;pinsert=p;}else if(ready->queue==1){p->link=pfend->link;pfend->link=p;pfend=p;findpos();}else{p->link=ready;ready=p;findpos();}}sort()//插入队列过程函数{if(!ready->link||ready->queue<ready->link->queue){ return;}p=ready->link;ready->link=pinsert->link;pinsert->link=ready;pinsert=ready;ready=p;if(ready&&ready->queue==pinsert->queue){findpos();}}五、实验效果动态优先数时间片轮转法:输入:第一个时间片:第二个时间片:第三个时间片:第八个时间片:开放式多级反馈队列调度算法:输入:第一个时间片:第三个时间片:插入进程third:第六个时间片:第十个时间片:六、失败案例一、优先数溢出:出现原因:needtime>优先数,而动态优先数规则是逐步-1.参考解决方案:添加个判断语句规定优先数最少为0,即当所有进程优先数为0该算法转变为FCFS算法。

二、老进程饿死:12出现原因:即在开放性的条件下出现不停插入新进程,导致永远无法执行老进程。

解决方案:1)添加一个强制执行机构,给予他一个值t,用户可以自行输入t的大小,当队列的进程大于t时,则插入下一个队列里。

2)引用HRN高响应比算法。

13计算机学院网络工程专业 2 班学号:X姓名:X 协作者:________ 教师评定:实验题目___实验二作业调度一、实验目的本实验要求学生模拟作业调度的实现,用高级语言编写和调试一个或多个作业调度的模拟程序,了解作业调度在操作系统中的作用,以加深对作业调度算法的理解。

二、实验原理模拟批处理多道操作系统的作业调度(1)、编写并调试一个作业调度模拟程序。

(2)、作业调度算法:分别采用先来先服务(FCFS),最短作业优先(SJF)、响应比高者优先(HRN)的调度算法。

(3)、在批处理系统中,要假定系统中具有各种资源及数量、调度作业时必须考虑到每个作业的资源要求,所需要的资源是否得到满足。

作业调度程序负责从输入井选择若干个作业进入主存,为他们分配必要的资源,当他们能够被进程调度选中时,就可占用处理器运行。

作业调度选择一个作业的必要条件是系统中现有的尚未分配的资源可满足该作业的资源要求。

但有时系统中现有的尚未分配的资源既可满足某个作业的要求也可满足其他一些作业的要求,那么,作业调度必须按一定的算法在这些作业中做出选择。

当作业正常运行完毕或发生错误非正常终止时,作业进入完成状态,此时,系统将收回该作业所占用的全部资源,并清除有关的JCB。

并输出显示作业运行情况及作业输出结果。

(4)、每个作业由一个作业控制块JCB表示,JCB可以包含如下信息:作业名、提交时间、所需的运行时间、所需的资源、作业状态、链指针等等。

作业的状态可以是等待W(Wait)、运行R(Run)和完成F(Finish)三种状态之一。

每个作业的最初状态总是等待W。

(5)、对每种调度算法都要求打印每个作业开始运行时刻、完成时刻,并比较各种算法的优缺点。

三、实验方法、步骤、方案编写并调度一个多道程序系统的作业调度模拟程序。

作业调度算法:采用基于先来先服务(FCFS)的调度算法或短作业优先(SJF)调度算法。

可参考课本中的方法自行设计。

对于多道程序系统,要假设系统中具有的各种资源及数量、调度作业时必须考虑到每个作业的资源要求。

要求打印每选择一个作业后的作业表变化情况以及作业被选中执行的次序。

[提示]:假定某系统可供用户使用的主存空间共100KB,并有5台磁带机。

由于本实验是模拟作业调度,假定程序已经把一批作业的信息存放在输入井,并为他们建立如下的作业表:14后备状态——作业已在输入井,但尚未被选中执行;执行状态——作业被选中,正在执行;完成状态——作业执行结束。

1)先来先服务算法:是按照作业进入输入井的先后次序来挑选作业,先进入输入井的作业优先被挑选,当系统中现有的尚未分配的资源不能满足先进入输入井的作业时,那么顺序挑选后面的作业。

2)短作业优先算法:总是按作业要求运行的时间来挑选作业,每次挑选要求运算时间短且资源要求能满足的作业先进入主存执行。

3)当作业执行结束进入完成状态时,做好释放资源等善后工作。

4)本实验主要模拟作业调度,所对处理器调度,作业控制过程简化。

用输入随机数模拟处理器调度,用输入“用户名,作业名”模拟一个作业已经执行结束。

5)为作业分配资源可用修改资源分配表来代替。

四、重要函数、数据结构说明先来先服务(FCFS):typedef struct JCB{//作业控制块char uname[10];//用户名char jname[10];//作业名char state;//作业状态int atime;//到达时间)int rtime;//运行时间RESOURCE resource;//资源量struct JCB *link;}JCB;sendsource()//送入内存(运行){JCB *p;p=pjcb->link;while(p){if(p->state=='W'&&source.memory-p->resource.memory>=0&&source.tape-p->resource.tape>=0 ){p->state='R';source.memory-=p->resource.memory;source.tape-=p->resource.tape;printf("Now,the %s %s is into the RAM\n",p->uname,p->jname);}15p=p->link;}}running(){if(check()){printf("All assignments were done\n");getchar();exit(0);}JCB *p=pjcb->link;int time;while(p){time=nowtime-(p->atime);if(p->state=='R'&&time>=p->rtime){p->state='F';source.memory+=p->resource.memory;source.tape+=p->resource.tape;printf("\nThe %s %s was done\n",p->uname,p->jname);break;}p=p->link;}p=pjcb->link;while(p){if(nowtime==p->atime&&p->state=='N'){p->state='W';printf("\nNow,the %s %s assignment was arrived\n",p->uname,p->jname);}p=p->link;}sendsource();disp();}短作业优先(SJF):typedef struct JCB{//作业控制块char uname[10];//用户名char jname[10];//作业名char state;//作业状态int atime;//到达时间)int rtime;//运行时间16RESOURCE resource;//资源量struct JCB *link;int stime;}JCB;JCB *pjcb;sendsource()//排队函数{JCB *p;p=pjcb->link;int min=99;while(p){//做一个min运算求出最短运行时间if(p->state=='W'){min=min<(p->rtime)?min:(p->rtime);}p=p->link;}p=pjcb->link;while(p){if(p->state=='W'&&p->rtime<=min&&source.memory-p->resource.memory>=0&&source.tape-p ->resource.tape>=0){p->stime=nowtime;p->state='R';source.memory-=p->resource.memory;source.tape-=p->resource.tape;printf("Now,the %s %s is into the RAM\n",p->uname,p->jname);}p=p->link;}p=pjcb->link;while(p){if(p->state=='W'&&source.memory-p->resource.memory>=0&&source.tape-p->resource.tape>=0 ){p->stime=nowtime;p->state='R';source.memory-=p->resource.memory;source.tape-=p->resource.tape;printf("Now,the %s %s is into the RAM\n",p->uname,p->jname);}p=p->link;}}17高响应比优先算法(HRN):struct jcb //作业控制块{char name[10]; //作业名int reachtime; //作业到达时间int starttime; //作业开始时间int needtime; //作业需要运行的时间float super; //作业的响应比int finishtime; //作业完成时间int cycletime; //作业周转时间float cltime; //作业带权周转时间char state; //作业状态struct jcb *next; //结构体指针}*ready=NULL,*p,*q;typedef struct jcb JCB;void running(JCB *p,int m) //运行作业{if(p==ready) //先将要运行的作业从队列中分离出来{ready=p->next;p->next=NULL;}else{q=ready;while(q->next!=p) q=q->next;q->next=p->next;}p->starttime=times; //计算作业运行后的完成时间,周转时间等等p->state='R';p->finishtime=p->starttime+p->needtime;p->cycletime=(int)(p->finishtime-p->reachtime);p->cltime=(int)(p->cycletime/p->needtime);T1+=p->cycletime;T2+=p->cltime;disp(p,m); //调用disp()函数,显示作业运行情况times+=p->needtime;p->state='F';printf("\n\n%s was finished!\n",p->name);free(p); //释放运行后的作业getch();}void super() //计算队列中作业的高响应比18{JCB *padv;padv=ready;do{ if(padv->state=='W'&&(padv->reachtime)<=times){padv->super=(float)(times-padv->reachtime+padv->needtime)/padv->needtime;}padv=padv->next;}while(padv!=NULL);}五、实验效果先来先服务(FCFS):时间片Nowtime=0时,运行A(先来先服务原则)。

相关文档
最新文档