太原理工大学操作系统实验报告2022

上传人:橙** 文档编号:333371005 上传时间:2022-09-01 格式:PDF 页数:41 大小:2.09MB
返回 下载 相关 举报
太原理工大学操作系统实验报告2022_第1页
第1页 / 共41页
太原理工大学操作系统实验报告2022_第2页
第2页 / 共41页
太原理工大学操作系统实验报告2022_第3页
第3页 / 共41页
太原理工大学操作系统实验报告2022_第4页
第4页 / 共41页
太原理工大学操作系统实验报告2022_第5页
第5页 / 共41页
亲,该文档总共41页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《太原理工大学操作系统实验报告2022》由会员分享,可在线阅读,更多相关《太原理工大学操作系统实验报告2022(41页珍藏版)》请在金锄头文库上搜索。

1、课程名称:操作系统 B实验项目:操作系统实验实验地点:逸夫楼 402、逸夫楼 502 教室专业班级:软件 1415 班学生姓名:朱伟学号:2014005960 指导教师:张俊花2016 年 11 月 28 日名师资料总结-精品资料欢迎下载-名师精心整理-第 1 页,共 41 页 -名师资料总结-精品资料欢迎下载-名师精心整理-第 2 页,共 41 页 -实验一几种操作系统的界面一、目的和要求(一)目的本实验的目的是使学生熟悉12 种操作系统的界面,在熟练使用机器的基础上,能了解各种操作命令和系统调用在系统中的大致工作过程。也就是通过操作系统的外部特征,逐步深入到操作系统的内部实质内容中去。(二

2、)要求1.能熟练的在12 种操作系统的环境下工作,学会使用各种命令,熟悉系统提供的各种功能,主动而有效地使用计算机。2.熟悉系统实用程序的调用方法和各种系统调用模块的功能和作用二、实验内容在某种操作系统的环境下建立、修改、运行、打印源程序和结果,最后撤消一个完整的程序。提示:可按下述步骤进行1 编写一个完整的源程序,通过编辑命令送入机器,建立源程序文件;2 编译该源文件,建立相应的目标文件;3 编译有错时,再用编辑命令修改源文件,消除全部词法和语法错误;4 连接目标文件,形成可执行文件;5 执行该文件,得到结果;6 打印输出源程序和运行结果;7 撤消本次实验中形成的所有文件。三、实验步骤及程序

3、流程图1、按住 Windows键+R输入 notepad 回车调出记事本。2、编辑一个java 程序选择另存为F:。名师资料总结-精品资料欢迎下载-名师精心整理-第 3 页,共 41 页 -3、按住 Windows键+R输入 cmd回车。4、进入 Dos界面输入F:。5、输入 dir查看 java 文件,使用javac 命令进行编辑名师资料总结-精品资料欢迎下载-名师精心整理-第 4 页,共 41 页 -四、程序清单class demo public static void main(String args)System.out.print(软件 1415 班 朱伟 2014005960);五

4、、实验心得这次实验是在win7 操作系统下进行的,通过编译连接一个java小程序熟悉DOS命令的使用。实验中用到的 DOS 工具:dir:列出当前控制台所在的路径下的所有文件以及文件夹。名师资料总结-精品资料欢迎下载-名师精心整理-第 5 页,共 41 页 -javac:编译。这次实验,通过查找一些常用的DOS命令,进一步熟悉了DOS命令的使用,了解了部分操作命令和系统调用在系统中的工作过程。名师资料总结-精品资料欢迎下载-名师精心整理-第 6 页,共 41 页 -名师资料总结-精品资料欢迎下载-名师精心整理-第 7 页,共 41 页 -名师资料总结-精品资料欢迎下载-名师精心整理-第 8 页

5、,共 41 页 -实验二进程调度程序设计一、目的和要求(一)目的进程是操作系统最重要的概念之一,进程调度是操作系统的主要内容,本实验要求学生独立地用高级语言编写一个进程调度程序,调度算法可任意选择或自行设计,本实验可使学生加深对进程调度和各种调度算法的理解。(二)要求1 设计一个有几个进程并发执行的进程调度程序,每个进程由一个进程控制块(PCB)表示,进程控制块通常应包括下述信息:进程名,进程优先数,进程需要运行的时间,占用CPU的时间以及进程的状态等,且可按照调度算法的不同而增删。2 调度程序应包含23 种不同的调度算法,运行时可以任选一种,以利于各种方法的分析和比较。3 系统应能显示或打印

6、各进程状态和参数的变化情况,便于观察。二、示例1 题目本程序可选用优先数法或简单轮转法对五个进程进行调度。每个进程处于运行R(run)、就绪 W(wait)和完成 F(finish)三种状态之一,并假定起始状态都是就绪状态W。为了便于处理,程序中进程的运行时间以时间片为单位计算。各进程的优先数或轮转时间片数、以及进程需要运行的时间片数,均由伪随机数发生器产生。进程控制块结构如表2-1 所示:表 2-1PCB进程标识符链指针优先数/轮转时间片数占用 CPU时间片数进程所需时间片数进程状态进程控制块链结构如图2-1 所示:RUN HEAD TAIL,图 2-1 进程控制块链结构其中:RUN 当前运

7、行进程指针;HEAD 进程就绪链链首指针;1 R3 W5 WW0 2 名师资料总结-精品资料欢迎下载-名师精心整理-第 9 页,共 41 页 -TAIL进程就绪链链尾指针。2.算法与框图程序框图如图2-2 所示。图 2-2 进程调度框图(1)优先数法。进程就绪链按优先数大小从大到小排列,链首进程首先投入运行。每过一个时间片,运行进程所需运行的时间片数减1,说明它已运行了一个时间片,优先数也减3。理由是该进程如果在一个时间片中完成不了,优先级应降低一级。接着比较现行进程和就绪链链首进程的优先数,如果仍是现行进程高或者相同,就让现行进程继续运行,否则,调度就绪链链首进程投入运行。原运行进程再按其优

8、先数大小插入就绪链,且改变它们对应的进程状态,直至所有进程都运行完各自的时间片数。(2)简单轮转法。进程就绪链按各进程进入的先后次序排列,链首进程首先投入运行。进程每次占用处理机的轮转时间按其重要程度登入进程控制块中的轮转时间片数记录项(相应于优先数法的优先数记录项priority是输入调度算法alog 开始alog=priority/round robin?生成并按优先数大小排列进程控制块链进程时间片数为 0?从链首取一个进程投入运行生成并按进入次序排列进程控制块链链首进程投入运行时间片到,进程时间片数减 1,优先数减3 运行进程退出,排到进程链尾部撤消该进程链首进程投入运行时间片到,进程时

9、间片数减 1,占用 CPU 时间加 1 优 先 数大 于 链首进程?进程时间片数为 0?撤消该进程运行进程退出,按优先数插入进程链从 链 首 取一 个进程投入运行结束结束进程队列空?进程队列空?是是是否否否否否是round robin占 用 处理 机 时间片到?否是名师资料总结-精品资料欢迎下载-名师精心整理-第 10 页,共 41 页 -位置)。每过一个时间片,运行进程占用处理机的时间片数加1,然后比较占用处理机的时间片数是否与该进程的轮转时间片数相等,若相等说明已到达轮转时间,应将现运行进程排到就绪链末尾,调度链首进程占用处理机,且改变它们的进程状态,直至所有进程完成各自的时间片。三、实验

10、代码:#include#include#define furthest 5 struct process /*PCB STRUCTURE*/int id;int priority;int cputime;int alltime;char state;int next;prochainfurthest-1;int procnum;int rand();int algo;int run,head,tail,j;void print();void insert(int q);void insert2();void timesch();void init();void prisch();int mai

11、n()/*MAIN PROGRAM*/agan:printf(type the algorithm is(1:RR,2:PRIO):);scanf(%d,&algo);if (algo=2)printf(output of priority.n);名师资料总结-精品资料欢迎下载-名师精心整理-第 11 页,共 41 页 -init();prisch();else if (algo=1)printf(output of round robin.n);init();timesch();else printf(try again,pleasen);goto agan;for (j=1;j=40;j+

12、)printf(=);printf(nn);for (j=1;j=40;j+)printf(=);printf(nn);printf(system finishedn);getchar();void print()/*PRINT THE RUNNING PROCESS,WAITING QUEUE AND PCB SEQUENCE LIST*/int k,p;名师资料总结-精品资料欢迎下载-名师精心整理-第 12 页,共 41 页 -for (k=1;k=40;k+)printf(=);printf(nrunning proc.);printf(waiting queue.);printf(n%

13、d ,prochainrun.id);p=head;while (p!=0)printf(%5d,p);p=prochainp.next;printf(n);for (k=1;k=40;k+)printf(=);printf(n);printf(id );for (k=1;kfurthest+1;k+)printf(%5d,prochaink.id);printf(n);printf(priority );for (k=1;kfurthest+1;k+)printf(%5d,prochaink.priority);printf(n);printf(cputime );for (k=1;kfur

14、thest+1;k+)printf(%5d,prochaink.cputime);printf(n);printf(alltime );for (k=1;kfurthest+1;k+)printf(%5d,prochaink.alltime);printf(n);printf(state );for (k=1;kfurthest+1;k+)printf(%5c,prochaink.state);名师资料总结-精品资料欢迎下载-名师精心整理-第 13 页,共 41 页 -printf(n);printf(next );for (k=1;kfurthest+1;k+)printf(%5d,proc

15、haink.next);printf(n);void insert(int q)/*INSERT A PROCESS*/int p,s;p=head;s=prochainhead.next;while (prochainq.priorityprochains.priority)&(s!=0)p=s;s=prochains.next;prochainp.next=q;prochainq.next=s;void insert2()/*PUT A PROCESS ONTO THE TAIL OF THE QUEUE*/prochaintail.next=run;tail=run;prochainru

16、n.next=0;void init()/*CREATE A WAITING QUEUE*/int i;head=0;if (algo=2)for (i=1;ifurthest+1;i+)名师资料总结-精品资料欢迎下载-名师精心整理-第 14 页,共 41 页 -prochaini.id=i;prochaini.priority=(rand()+11)%41;prochaini.cputime=0;prochaini.alltime=(rand()+1)%7;prochaini.state=W;prochaini.next=0;if (prochaini.priorityprochainhead.priority)&(head!=0)insert(prochaini.id);else prochaini.next=head;head=prochaini.id;else for (i=1;ifurthest+1;i+)prochaini.id=i;prochaini.priority=(rand()+1)%3+1;prochaini.cputime=0;prochaini.alltime

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 中学教育 > 初中教育

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号