计算机操作系统Word文件下载.docx

上传人:b****6 文档编号:19794909 上传时间:2023-01-10 格式:DOCX 页数:60 大小:54.62KB
下载 相关 举报
计算机操作系统Word文件下载.docx_第1页
第1页 / 共60页
计算机操作系统Word文件下载.docx_第2页
第2页 / 共60页
计算机操作系统Word文件下载.docx_第3页
第3页 / 共60页
计算机操作系统Word文件下载.docx_第4页
第4页 / 共60页
计算机操作系统Word文件下载.docx_第5页
第5页 / 共60页
点击查看更多>>
下载资源
资源描述

计算机操作系统Word文件下载.docx

《计算机操作系统Word文件下载.docx》由会员分享,可在线阅读,更多相关《计算机操作系统Word文件下载.docx(60页珍藏版)》请在冰豆网上搜索。

计算机操作系统Word文件下载.docx

while(n==1)

clrscr();

printf("

\n********************************************"

);

\n*进程演示系统*"

\n1.创建新的进程2.查看运行进程"

\n3.换出某个进程4.杀死运行进程"

\n5.进程之间通信6.退出系统"

\n请选择(1~6)"

a=getche();

switch(a)

{case'

1'

:

create();

break;

case'

2'

run();

3'

huanchu();

4'

kill();

5'

tongxun();

6'

exit(0);

default:

n=0;

}

create()/*创建一个进程的示例(不完整的程序)*/

{

if(shumu>

=20)

\n内存已满,请先结束或换出进程\n"

else

printf("

\n请输入新进程的pid\n"

scanf("

%d"

&

neicun[shumu-1].pid);

\n请输入新进程的优先级\n"

neicun[shumu-1].youxian);

\n请输入新进程的大小\n"

neicun[shumu-1].daxiao);

shumu++;

}

5.实验运行结果

********************************************

*进程演示系统*

1.创建新的进程2.查看运行进程

3.换出某个进程4.杀死运行进程

5.进程之间通信6.退出系统

请选择(1~6)

然后根据你选择的不同,出现不同的结果。

实验二进程调度

进程调度是处理机管理的核心内容。

本实验要求用C语言编写和调试一个简单的进程调度程序。

通过本实验可以加深理解有关进程控制块、进程队列的概念,并体会和了解优先数和时间片轮转调度算法的具体实施办法。

①设计进程控制块PCB表结构(与实验一的结构相同),分别适用于优先数调度算法和循环轮转调度算法。

②建立进程就绪队列。

对两种不同算法编制入链子程序。

③编制两种进程调度算法:

1)优先数调度;

2)循环轮转调度

同实验一

①本程序用两种算法对五个进程进行调度,每个进程可有三个状态,并假设初始状态为就绪状态。

②为了便于处理,程序中的某进程运行时间以时间片为单位计算。

各进程的优先数或轮转时间数以及进程需运行的时间片数的初始值均由用户给定。

③在优先数算法中,优先数可以先取值为98,进程每执行一次,优先数减3,CPU时间片数加1,进程还需要的时间片数减1。

在轮转算法中,采用固定时间片(即:

每执行一次进程,该进程的执行时间片数为已执行了2个单位),这时,CPU时间片数加2,进程还需要的时间片数减2,并排列到就绪队列的尾上。

④对于遇到优先数一致的情况,采用FIFO策略解决。

TYPETHEALGORITHM(PRIORITY/ROUNDROBIN):

若选择了PRIORITY(优先数算法),则进一步显示:

INPUTNAMEANDNEEDTIME

A12

A23

A34

A42

A54

OUTPUTOFPRIORITY:

CPUTIME:

1

NAMECPUTIMENEEDTIMEPRIORITYSTATE

A11145working

A20347ready

A30446ready

A40248ready

A50446ready

2

A12145ready

A41145working

3

A13145ready

A21244working

A42245ready

4

A14145working

A22244ready

A43245ready

5

A15145ready

A23244ready

A31343working

A44245ready

6

A16145ready

A24244ready

A32343ready

A45245ready

A51343working

7

A17042finish

A25244ready

A33343ready

A46245ready

A52343ready

8

A26244ready

A34343ready

A47142working

A53343ready

9

A27141working

A35343ready

A48142ready

A54343ready

10

A29141ready

A37240working

A49142ready

A55343ready

11

A210141ready

A38240ready

A410142ready

A56240working

12

A211141ready

A39240ready

A411039finish

A57240ready

13

A212038finish

A411042finish

A310137working

A58240ready

14

A311137ready

A59137working

15

A312034finish

A510137ready

16

A511034finish

若选择了ROUNDROBIN(时间片轮转算法),则进一步显示:

OUTPUTOFROUNDROBIN:

NAMECPUTIMENEEDTIMECOUNTSTATE

……………

时间片轮转调度算法输出与上大致相同,但要将PRIORITY项换为COUNT项。

有关实验的改进意见:

在实验操作过程中,发现用户输入的数据量太大且每次用户输入的大多数数据为重复数据,因此考虑采用文件输入方式,用户只需指定特定的输入文件的文件名来输入数据。

另一方面,程序的输出量较大,可以考虑采用文件输出的方式来储存程序的运行结果。

也可以用实时的输出界面来输出程序结果。

实验二的示例程序如下:

#include<

stdio.h>

#include<

dos.h>

stdlib.h>

conio.h>

iostream.h>

#defineP_NUM5

#defineP_TIME50

enumstate{

ready,

execute,

block,

finish

};

structpcb{

charname[4];

intpriority;

intcputime;

intneedtime;

intcount;

intround;

stateprocess;

pcb*next;

pcb*get_process();

pcb*get_process(){

pcb*q;

pcb*t;

pcb*p;

inti=0;

cout<

<

"

inputnameandtime"

endl;

while(i<

P_NUM){

q=(structpcb*)malloc(sizeof(pcb));

cin>

>

q->

name;

needtime;

q->

cputime=0;

priority=P_TIME-q->

process=ready;

next=NULL;

if(i==0){

p=q;

t=q;

}

else{

t->

next=q;

i++;

}//while

returnp;

voiddisplay(pcb*p){

name"

"

cputime"

needtime"

priority"

state"

while(p){

cout<

p->

;

cputime;

priority;

switch(p->

process){

caseready:

cout<

ready"

break;

caseexecute:

execute"

caseblock:

block"

casefinish:

finish"

p=p->

next;

intprocess_finish(pcb*q){

intbl=1;

while(bl&

&

q){

bl=bl&

needtime==0;

q=q->

returnbl;

voidcpuexe(pcb*q){

pcb*t=q;

inttp=0;

while(q){

if(q->

process!

=finish){

q->

if(q->

needtime==0){

q->

process=finish;

}

if(tp<

priority&

tp=q->

if(t->

needtime!

=0){

t->

priority-=3;

needtime--;

process=execute;

cputime++;

voidpriority_cal(){

pcb*p;

p=get_process();

intcpu=0;

while(!

process_finish(p)){

cpu++;

cputime:

cpu<

cpuexe(p);

display(p);

sleep

(2);

clrscr();

Allprocesseshavefinished,pressanykeytoexit"

getch();

voiddisplay_menu(){

CHOOSETHEALGORITHM:

1PRIORITY"

2ROUNDROBIN"

3EXIT"

pcb*get_process_round(){

round=0;

count=0;

voidcpu_round(pcb*q){

q->

cputime+=2;

needtime-=2;

if(q->

needtime<

0){

needtime=0;

count++;

round++;

pcb*get_next(pcb*k,pcb*head){

pcb*t;

t=k;

do{

t=t->

while(t&

t->

process==finish);

if(t==NULL){

t=head;

while(t->

next!

=k&

process==finish){

t=t->

returnt;

voidset_state(pcb*p){

if(p->

p->

process==execute){

voiddisplay_round(pcb*p){

NAME"

CPUTIME"

NEEDTIME"

COUNT"

ROUND"

STATE"

count;

round;

voidround_cal(){

pcb*r;

p=get_process_round();

r=p;

cpu+=2;

cpu_round(r);

r=get_next(r,p);

cpu"

display_round(p);

set_state(p);

sleep(5);

voidmain(){

display_menu();

intk;

k);

switch(k){

case1:

priority_cal();

case2:

round_cal();

case3:

display_menu();

scanf("

实验三存储管理

存储管理的主要功能之一是合理地分配空间。

请求页式管理是一种常用的虚拟存储管理技术。

本实验的目的是通过请求页式存储管理中页面置换算法模拟设计,了解虚拟存储技术的特点,掌握请求页式管理的页面置换算法。

1.用随机数产生一个指令序列,共320条指令。

其地址按下述原则生成:

①50%的指令是顺序执行的;

②25%的指令是均匀分布在前地址部分;

③25%的指令是均匀分布在后地址部分;

#具体的实施方法是:

A.在[0,319]的指令地址之间随机选区一起点M;

B.顺序执行一条指令,即执行地址为M+1的指令;

C.在前地址[0,M+1]中随机选取一条指令并执行,该指令的地址为M’;

D.顺序执行一条指令,其地址为M’+1;

E.在后地址[M’+2,319]中随机选取一条指令并执行;

F.重复A—E,直到执行320次指令。

2.指令序列变换成页地址流

设:

(1)页面大小为1K;

(2)用户内存容量为4页到32页;

(3)用户虚存容量为32K。

在用户虚存中,按每K存放10条指令排列虚存地址,即320条指令在虚存中的存放方式为:

第0条—第9条指令为第0页(对应虚存地址为[0,9]);

第10条—第19条指令为第1页(对应虚存地址为[10,19]);

第310条—第319条指令为第31页(对应虚存地址为[31

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 幼儿教育 > 少儿英语

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1