操作系统实验报告

操作系统实验报告
操作系统实验报告

操作系统实验报告

计算机应用技术

201102120132

谢慧晨

指导老师:齐灿

2012-12-24

实验一处理机管理

1.4按时间片轮转法进行CPU调度的实例1?5实验要求

(1)给出所选实验题目。

按时间片轮转法进行CPU调度

(2)给出程序中源程序名和执行程序名。

sl.cpp /*定义建立就绪队列函数水/imreadyprocess()

/*立义判断就绪队列是否有进程函数*/int readydata() int mnprocess() /*定义运行进程函*/ /*-/£义建立进程函数*/void inputprocess() /*--定义建立进程函数*/void inputprocess 1() void rimprocessl() 义运行进程函数*/ void main()主函数

(3)给出程序中使用的数据结构及符号说明。static char R='r\C=V;

# define N 20宏疋义unsigned long current; 严记录系统当前时间的变虽:*/

void

inputprocess();

int

/*建立进程函数*/

/*建立就绪队列函数5*7

/*判断进程是否就绪函数*/

int nmprocessO;

typedef stmet peb 产运行进程函数*/ /*进程控制块左义=*7

(4)给出程序流程图和源程序,源程序中要附有详细的注释」

图1-1进程控制块:进程名一链接指针一到达时间一估计运行时间一进程状态

图1-2进程控制块:进程名一链接指针一进程的优先级一估计运行时间一进程状态

5)打印程序运行时的初值和运行结果,要求如下:①各进程控制块的初始状态:②选中运行进程的名、运行后各进程控制块状态以及每次调度时,就绪队列的进程排列顺序。

(6)总结收获体会及对该题解的改进意见和见解。

程序很长需要用心阅读分析,基本看得懂:实践出真知多做才能发现问题解决问题要虚心学习向他人请教改进额目前还没什么想法

fcinie 1=1 HWM tine sLice

How mani^ processes do ynu uant to run: 3 No

1 pycicess input pname:ppol

i*untin)e :22

ai*i*ivotimc :40

input pnanc:pro2

runtime:82

ai*i*iuctir)c :92 in

put pnctine : pro 3

runtime:42

arrivetiwe=112

I ine slice is40000;Process Dr ol start.

lin)R slice is62HWM62>;Process prol end?

line slice is92WWW(time92>;P POCRRS pro2start

line slice is112WWW112>;Process ppo3stai?t

T ine slice ie196000

T ine slice ie216000(time216〉;Pi*oceee pro 2end?

process

实验二死锁的避免

2.4资源分配算法的示例2. 5实验要求

(1)给出所选实验题目

用银行家算法和随机算法实现资源分配

(2)给出程序中源程序名和执行程序名。

void rand(vector&resource, vector&pgrp);随机算法函数

void banker (vector&resource, vector&pgrp);银行家算法函数 int mainO主函数//输入各进程申请的资源总量,以及初始化务个进程:辻(current->p_apply>Rcs_lef t) //满足该进程当前的申请

//看该进程是否已满足 if (current->p_occupyp_require)

〃假泄对申请资源的进程分配资源//检查是否还有标志位未设置的进程 for(p=pgrp?

begin();p!=pgrp? end();p++)

resource? insert (resource? bigin(), current->p_apply, current->p_pid) ; //分配安全, 可对进程进行实际的分配

resource? insert(resource? end 0, current->p_apply, current->p_pid);

//归还全部系统资源resource, clear 0 ;

(3)程序中使用的数据结构及符号说明。

const int TASK_RUNNING=O;const int TASK_SUCCEED二1;

const int TASK_WAITTING=2;const int RLength=10; class pcb 定义块对象

(4)给出程序流程图和源程序,源程序中要附有详细的注释。

(5)收获体会及对该题解的改进意见和见解。

银行家算法很实用对于死锁问题,

c开始r

航*c: \Use rDat a\AdMinist rat or \ 桌面\D@bugms:l:2. exe* ENIER THE MAX NUMBER FOR IHE REQUESIED RESOURCE: ID REQUESTED

13

25

3?

49

ALOGKITHM

KandomCR? Banhor

ANV OTHER KEV TO QUIT

i*

NOW ----------- BfiNKER ALOGBUHn

ENTER THE APPLY FOR THE PROCESS

42

2resources arc accepted for4

EHIEP THE APPLY FOR THE PROCESS

33

tl resources ore accepted for3

ENIER THE APPLY FOR THE PROCESS

2 5

5resources apeaccepted f o>*2

L JJ t*i)cess 2 lias succeed! ?HEIB

I冬I 2-4钝i彳亍氛廿去

实验三主存空间的分配与回收

3?4程序实例3. 4.1釆用可变式分区管理方式,空闲区釆用 分区说明表时,使用首次适应算法实现主存的分配与回收

3. 5实验要求

(1) 实验题目。

采用可变式分区管理方式,使用首次适应算法实现主存的分配与回收。 空闲区采用分表说明。

(2) 程序中使用的数据结构及符号说明。

1、struct freearea /*左义一个空闲区说明表结构体,并初始化变量*/ { int startaddress;/*空闲区始址*/int size; /*空闲区大小*/

int state; /*空闲区状态:0为空表目。1为可用空闲块*/} freeblockEN]; 2^int alloc (int applyarea)左义为作业分配主存空间的函数alloc() .applyarea 为作业申请量。3、void setfree0义主存回收函数:setfreeO,使用tagl 标识释放区的髙地址是否邻接一个空 闲区,tag2标识释放区的髙低地址是否都邻接一个空闲区,tag3标识释放区的低地址是否 邻接一个空闲区。4、void adjustO^义对空闲区表中的空闲区调整的函数adjust (),使 空闲区按始地址从小到大排列,空表目放在后面。5. void print0怎义打印空闲区说明 表函数:print ()?

(3)给出程序流程图和源程序,打印一份附有详细注释的源程序

(5)运行结果

(4) 收获体会及对该题解的改进意见和见解。

1表示内存空闲块0为空表目;1是分配块2是回收块

c 、*C: \DocuMrnits an

d Sett inesXAdainist ratorX^ffikOS\Dcbu^\s3~ 1. exe* ?

1 start size state

1 1 20

2

1 1 .......... 1 80

1

1

! 1S0 100 1 ?

! 60S 10(3 1 1

D

start si2C state

I is there any job request

OP n :y

lat £i>*st the fwe nenory is this :

please choose the item; recjuest me WKI ry: 2.frce nenory: 1

input rcQuest menory 3isc :50

after allocation^thc free ncraory i3 this :

操作和理解都很简单也很好玩:和别人讨论会很有效果交换思维

图3-2首次适应弓法分配甲图

「开始)

图3-6空闲区链的首次适应算法分配框图

相关主题