太原理工操作系统实验报剖析_第1页
太原理工操作系统实验报剖析_第2页
太原理工操作系统实验报剖析_第3页
太原理工操作系统实验报剖析_第4页
太原理工操作系统实验报剖析_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

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

文档简介

1、课程名称:实验项目:实验地点:操作系统F操作系统实验实验室110机房专业班级:物联网工程1403学生姓名:赵羽龙学号: 2014002091指导教师:方旳2016年 12 月实验一几种操作系统的界面、目的和要求(一)目的本实验的目的是使学生熟悉 1 2种操作系统的界面,在熟练使用机器的基础上,能了 解各种操作命令和系统调用在系统中的大致工作过程。也就是通过操作系统的外部特征,步深入到操作系统的内部实质内容中去。(二)要求1. 能熟练的在1 2种操作系统的环境下工作,学会使用各种命令,熟悉系统提供的 各种功能,主动而有效地使用计算机。2. 熟悉系统实用程序的调用方法和各种系统调用模块的功能和作用

2、、内容在某种操作系统的环境下建立、修改、运行、打印源程序和结果,最后撤消一个完整的 程序。三、实验步骤1. 编写一个完整的源程序,通过编辑命令送入机器,建立源程序文件;2. 编译该源文件,建立相应的目标文件;3. 编译有错时,再用编辑命令修改源文件,消除全部词法和语法错误;4. 连接目标文件,形成可执行文件;5. 执行该文件,得到结果;6. 打印输出源程序和运行结果;7. 撤消本次实验中形成的所有文件。四、实验结果与分析1.源文件#i ncludestdio.hmain ()prin tf(hello worldn);图一源文件2.Lplg图二目标文件3.Ml 12016/11/22 &41应

3、用程序169 KB諂 12016/11/22 8:41Incremental Link.169 KB图三可执行文件4.图四打印输出5.! O Uff-ID也ng咅1rTjiiC+y 臥L?叫沁1衲i _ * J7J7laaj图五删除生成的文件五讨论、心得通过熟悉了在 Windows系统下建立、修改、运行、打印源程序和结果。熟悉了操作系统的界面, 在熟练使用机器的基础上,能了解各种操作命令和系统调用在系统中的大致工作过程。 操作系统的外部特征,认识到了操作系统的内部实质内容。实验二进程调度程序设计一、目的和要求(一) 目的进程是操作系统最重要的概念之一, 进程调度是操作系统的主要内容, 本实验要

4、 求学生独立地用高级语言编写一个进程调度程序,调度算法可任意选择或自行设计, 本实验可使学生加深对进程调度和各种调度算法的理解。(二) 要求1. 设计一个有几个进程并发执行的进程调度程序,每个进程由一个进程控制块(PCB) 表示,进程控制块通常应包括下述信息:进程名,进程优先数,进程需要运行的时间,占用CPU的时间以及进程的状态等,且可按照调度算法的不同而增删。2. 调度程序应包含 23种不同的调度算法,运行时可以任选一种,以利于各种方法 的分析和比较。3. 系统应能显示或打印各进程状态和参数的变化情况,便于观察。二、实验内容1.题目本程序可选用优先数法或简单轮转法对五个进程进行调度。每个进程

5、处于运行R(run)、就绪W(wait)和完成F(finish) 三种状态之一,并假定起始状态都是就绪状态W为了便于处理,程序中进程的运行时间以时间片为单位计算。各进程的优先数或轮转时间片数、以及进程需要运行的时间片数,均由伪随机数发生器产生。进程控制块结构如表 2-1所示:表 2-1PCB进程标识符链指针优先数/轮转时间片数 占用CPU寸间片数 进程所需时间片数进程状态进程控制块链结构如图2-1所示:RUNHEADTAIL图2-1进程控制块链结构其中:RUN 当前运行进程指针;HEAD 进程就绪链链首指针;TAIL 进程就绪链链尾指针。实验步骤及程序流程图程序框图如图2-2所示。开始输入调度

6、算法alogpriorityround robin生成并按优先数大小 排列进程控制块链生成并按进入次序排列进程控制块链11链首进程投入运行链首进程投入运行alog=priority/round robin?14 时间片到,进程时间片 数减1,优先数减3是时间片到,进程时间片数 减1,占用CPU时间加1否否进程时为0?间片数优先数大于链首进程?占用处理机时间片到?否进程时为0?间片数Y是Y否撤消该进程运行进程退岀,按1优先数插入进程链从链首取一个进程投入运行是Y是运行进程退岀,撤消该进程排到进程链尾部从链首取一个进程投入运行否进程队列空?是结束否进程队列空?是结束图2-2进程调度框图(1)优先数

7、法。进程就绪链按优先数大小从大到小排列,链首进程首先投入运行。每过一个时间片,运行进程所需运行的时间片数减1,说明它已运行了一个时间片,优先数也减 3。理由是该进程如果在一个时间片中完成不了,优先级应降低一级。接着比较现行进程 和就绪链链首进程的优先数, 如果仍是现行进程高或者相同, 就让现行进程继续运行, 否则, 调度就绪链链首进程投入运行。 原运行进程再按其优先数大小插入就绪链, 且改变它们对应 的进程状态,直至所有进程都运行完各自的时间片数。(2) 简单轮转法。 进程就绪链按各进程进入的先后次序排列,链首进程首先投入运行。进程每次占用处理机的轮转时间按其重要程度登入进程控制块中的轮转时间

8、片数记录项 (相 应于优先数法的优先数记录项位置) 。每过一个时间片,运行进程占用处理机的时间片数加 1,然后比较占用处理机的时间片数是否与该进程的轮转时间片数相等,若相等说明已到达 轮转时间, 应将现运行进程排到就绪链末尾, 调度链首进程占用处理机, 且改变它们的进程 状态,直至所有进程完成各自的时间片。四 程序清单#include #include / 头文件#define furthest 5 / 宏定义init();prisch();timesch(); / 函数申明struct process /*PCB STRUCTURE*/ int id;int priority;int cpu

9、time;int alltime;char state;int next; prochainfurthest-1;int procnum;int rand();int algo;int run,head,tail,j;int main() /*MAIN PROGRAM*/ agan: printf(type the algorithm is (1:RR,2:PRIO):);scanf(%d,&algo); /输入调度算法 alogif (algo=2) printf(output of priority.n);init(); /生成并按优先数大小排列进程控制块链prisch();else if

10、 (algo=1) printf(output of round robin.n);init(); / 生成并按进入次序排列进程控制块链 timesch();else printf(try again,pleasen);goto agan;for (j=1;j=40;j+) printf(=); printf(nn);for (j=1;j=40;j+) printf(=); printf(nn);printf(system finishedn);return 0;int print() /*PRINT THE RUNNING PROCESS,WAITINGQUEUE AND PCB SEQUE

11、NCE LIST*/ int k,p;for (k=1;k=40;k+) printf(=);printf(nrunning proc. );printf(waiting queue.);printf(n %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); pr

12、intf(priority );for (k=1;kfurthest+1;k+) printf(%5d,prochaink.priority);printf(n);printf(cputime );for (k=1;kfurthest+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,pr

13、ochaink.state);printf(n);printf(next );for (k=1;kfurthest+1;k+) printf(%5d,prochaink.next);printf(n);return 0;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;return 0;in

14、t insert2() /*PUT A PROCESS ONTO THE TAIL OF THE QUEUE*/ prochaintail.next=run;tail=run;prochainrun.next=0;return 0;int init() /*CREATE A WAITING QUEUE*/int i;head=0;int alog;agan: printf(type the algorithm is (1:RR,2:PRIO):); scanf(%d,&algo);if (alog=2) for (i=1;ifurthest+1;i+) prochaini.id=i; proc

15、haini.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.priorit

16、y=(rand()+1)%3+1; prochaini.cputime=0;prochaini.alltime=(rand()+1)%7; prochaini.state=W;prochaini.next=(i+1)%(furthest+1);head=1;tail=furthest;prochainfurthest.next=0; run=head; prochainrun.state=R; head=prochainhead.next;prochainrun.next=0;print();return 0;int prisch() /*THE PROCESS WITH PRIO ALGOR

17、ITHM*/ while(run!=0) prochainrun.cputime+=1; prochainrun.priority-=3; prochainrun.alltime-=1;if(prochainrun.alltime=0) prochainrun.state=F;prochainrun.next=0; if(head!=0) run=head; prochainrun.state=R; head=prochainhead.next; else prochain0.id=prochainrun.id;run=0;else if(prochainrun.priority%dt,p2i.pagenumber,replacedpage);for(i=0;i0 斗-独5- 21- 32- *6- M*1绝对地址si?e 83* 9231 IMS 519* *48移位51页号612操作*存ress页内地址5615玄1S

温馨提示

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

评论

0/150

提交评论