操作系统驱动调度

操作系统驱动调度
操作系统驱动调度

实验三驱动调度

一、实验内容

模拟电梯调度算法,实现对磁盘的驱动调度。

二、实验目的

磁盘是一种高速、大容量、旋转型、可直接存取的存储设备。它作为计算机系统的辅助存储器,担负着繁重的输入输出任务、在多道程序设计系统中,往往同时会有若干个要求访问磁盘的输入输出请求等待处理。系统可采用一种策略,尽可能按最佳次序执行要求访问磁盘的诸输入输出请求。这就叫驱动调度,使用的算法称为驱动调度算法。驱动调度能降低为若干个输入输出请求服务所需的总时间,从而提高系统效率。本实验要求学生模拟设计一个驱动调度程序,观察驱动调度程序的动态运行过程。通过实验使学生理解和掌握驱动调度的职能。

三、数据结构

#define M 20

typedef struct PCB

{

char proc[M];//进程名

int cylinder_num;//柱面号

int track_num;//磁道号

int phy_num;//物理记录号

struct PCB *next;

}PCB;

四、实验题目

模拟电梯调度算法,对磁盘进行移臂和旋转调度。

(1)磁盘是可供多个进程共享的存储设备,但一个磁盘每时刻只能为一个进程服务。当有进程在访问某个磁盘时,其他想访问该磁盘的进程必须等待,直到磁盘一次工作结束。当有多个进程提出输入输出要求而处于等待状态时,可用电梯调度算法从若干个等待访问者中选择一个进程,让它访问磁盘。选择访问者的工作由“驱动调度”进程来完成。

由于磁盘与处理器是可以并行工作的、所以当磁盘在作为一个进程服务时,占有处理器的另一进程可以提出使用磁盘的要求,也就是说,系统能动态地接收新的

输入输出请求。为了模拟这种情况,在本实验中设置了一个“接收请求”进程。

“驱动调度”进程和“接收请求”进程能否占有处理器运行,取决于磁盘的结束中断信号和处理器调度策略。在实验中可用随机数来模拟确定这两个进程的运行顺序,以代替中断处理和处理器调度选择的过程。因而,程序的结构可参考图3—1

(2)“接收请求”进程建立一张“请求I/O ”表,指出访问磁盘的进程要求访问的物理地址,表的格式为:

进程名 柱面号 磁道号 物理记录号

图3—1 程序结构

初始化 输入在[0,1]区间

内的一个随机数

随机数>1/2 开始 驱动调度 接受请求

继续? 结束 是 是 否

假定某个磁盘组共有200个柱面,由外向里顺序编号(0—199),每个柱面上有20个磁道,编号为0—19,每个磁道分成8个物理记录,编号0—7。进程访问磁盘的物理地址可以用键盘输入的方法模拟得到。图3—2是“接收请求”进程的模拟算法。

在实际的系统中必须把等待访问磁盘的进程排入等待列队,由于本实验模拟驱动调度,为简单起见,在实验中可免去队列管理部分,故设计程序时可不考虑“进程排入等待队列”的工作。

(3)“驱动调度”进程的功能是查“请求I/O ”表,当有等待访问磁盘的进程时,按电梯调度算法从中选择一个等待访问者,按该进程指定的磁盘物理地址启动磁盘为其服务。

对移动臂磁盘来说,驱动调度分移臂调度和旋转调度。电梯调度算法的调度策略是与移动臂的移动方向和移动臂的当前位子有关的,所以每次启动磁盘时都应登记移动臂方向和当前位子。电梯调度算法是一种简单而实用的驱动调度方法,这种调度策略总是优先选择与当前柱面号相同的访问请求,从这些请求中再选择一个能使旋转距离最短的等待访问者。如果没有与当前柱面号相同的访问请求,则根据移臂方向来选择,每次总是沿臂移动方向选择一个与当前柱面号最近的访问请求,若沿这个方向没有访问请求时,就改变臂的移动方向。这种调度策略能使移动臂的移动频率极小,从而提高系统效率。用电梯调度算法实现驱动调度的模拟算法如图3-3。

图 3—2 “接收请求”模拟算法

(4)图3-1中的初始化工作包括,初始化“请求I/O ”表,置当前移臂方向为里移;置当前位置为0号柱面,0号物理记录。程序运行前可假定“请求I/O ”表中已经有如干个进程等待访问磁盘。

在模拟实验中,当选中一个进程可以访问磁盘时,并不实际地启动磁盘,而用开始

有请求? 输入:进程 名物理地址

进程排入等待队列

登记“请求I/O 表

返回 是 否

是 是 是 是

是 否 否 否 否 显示:“请求I/O ”表;当前移臂方向;当前柱面号,物理记录号来代替图3-3中的“启动磁盘”这项工作

开始 查”请求I/O 表” 有等待访问者? 有与当前柱面号相同的访问者? 当前移臂方向是向里移? 有比当前柱面号

小的访问请求?

有比当前柱面号大的访问请求? 置当前移臂方向为向外移 置当前移臂方向为向里移 从大于当前柱面号的访问请求中选择一个最小者 从大于当前柱面号的访问

请求中选择一个最小者

选择能使旋转距离最短的访问者 添加当前位置:柱面号;物理记录号 启动磁盘,被选中者退出“请求I/O 表” 返回

返回 图3-3 电梯调度模拟算法

五、源程序

#include"stdio.h"

#include"stdlib.h"

#include"conio.h"

#include"string.h"

#define M 20

typedef struct PCB

{

char proc[M];//进程名

int cylinder_num;//柱面号

int track_num;//磁道号

int phy_num;//物理记录号

struct PCB *next;

}PCB;

PCB *head=NULL;

int direction ;//定义方向,1为up,-1为down PCB *h=NULL; //存放当前运行中的进程的信息

void init () //初始化当前进程

{

h=(PCB *)malloc(sizeof(PCB));

direction=1;

strcpy(h->proc,"p");

h->cylinder_num = 0;

h->track_num= 0;

h->phy_num= 0;

}

//模拟记录当前运行进程

void current_process(PCB *Q)

{

strcpy(h->proc,Q->proc);

h->cylinder_num = Q->cylinder_num;

h->track_num=Q->track_num;

h->phy_num=Q->phy_num;

}

//插入函数

void insert(PCB *p)

{

PCB *q;

q=head;

if(head==NULL)

head=p;

else

{

for(q=head;q->next!=NULL;q=q->next);

p->next=q->next;

q->next=p;

}

}

void out_info()

{//输出进程的信息

printf("┌────┬─────┬───────┬────────┬────┐\n");

printf("│进程名│柱面号│磁道号│物理记录号│方向│\n");

printf("└────┴─────┴───────┴────────┴────┘\n");

printf(" %s \t%d \t%d \t%d",h->proc,h->cylinder_num,h->track_num,h->phy_num);

}

void output()

{

PCB *p;

p=head;

printf("进程名柱面号磁道号物理记录号\n");

if(p==NULL)

{

printf("---*进程表为空,接收请求或按'n'退出*----\n");

}

else

{

while(p!=NULL)

{

printf("%s \t%d \t%d \t%d\n",p->proc,p->cylinder_num,p->track_num,p->phy_num); p=p->next;

}

}

}

//初始化I/O请求表

void create_PCB()

{

PCB *p,*q;

q=head;

int i,n;

printf("\n");

printf("请输入I/O进程表中进程等待的个数:\n");

printf("\n");

scanf("%d",&n);

printf("请依次输入进程的相关信息: (用空格分隔)\n");

printf("━━━━━━━━━━━━━━━\n");

printf("进程名,柱面号,磁道号,物理记录号\n");

for(i=1;i<=n;)

{

i++;

//printf("请输入第%d个进程的信息:\n",i);

p=(PCB *)malloc(sizeof(PCB));

scanf("%s",&p->proc);

scanf("%d",&p->cylinder_num);

scanf("%d",&p->track_num);

scanf("%d",&p->phy_num);

p->next=NULL;

insert(p);

} printf("━━━━━━━━━━━━━━━\n");

}

//接受请求模块

void Receive_requests()

{

PCB *p;

int i,n,m;

printf("请输入一个值: \n");

printf("1.<接收请求> \n");

printf("0.<继续执行> \n");

scanf("%d",&i);

if(i==1)

{

printf("正在运行的进程为:\n");

printf("\n");

/*if(direction==1)

{//启动磁盘

out_info();

printf(" up\n");

printf("\n");

}

if(direction==-1)

{

out_info();

printf(" down\n");

printf("\n");

}*/

printf("\n");

printf("接受请求前的等待进程表为\n");

output();

printf("请输入接受等待进程数量\n");

scanf("%d",&n);

printf("请依次输入进程的信息\n");

printf("进程名,柱面号,磁道号,物理记录号\n"); for(m=1;m<=n;m++)

{

p=(PCB *)malloc(sizeof(PCB));

scanf("%s",&p->proc);

scanf("%d",&p->cylinder_num);

scanf("%d",&p->track_num);

scanf("%d",&p->phy_num);

p->next=NULL;

insert(p);

}

printf("接受请求后的等待进程表为:\n");

}

printf("\n");

output();

}

else

printf("没有接受进程,继续往下运行程

序\n");

//电梯调度算法

void lift()

{

int min,cha,max;

PCB *p,*q,*B;//p为指要删除的节点,q为查找的节点,B指向要删除节点的前一个节点

q=head;

if(q!=NULL)

{

while((q!=NULL)&&(q->cylinder_num!=h->cylinder_num))//找到第一个相同的柱面号

{

q=q->next;

}

if(q==NULL)//没有柱面号相同的等待进程

{

q=head;

if(direction==1)//当前移臂方向up

{

while((q!=NULL)&&(q->cylinder_num cylinder_num))

{

q=q->next;

}

if(q==NULL)//没有比当前柱面号大的等待进程

{

direction=-1;//置当前移臂方向为外移

q=head;//从小于当前柱面号的访问中选择一个最大的,p指向

p=q;

max=q->cylinder_num;

q=q->next;

while(q!=NULL)

{

if(maxcylinder_num)

{

max=q->cylinder_num;

p=q;//p指向最大的节点

}

q=q->next;

}

}

else//有大于当前柱面号的等待进程

{

min=q->cylinder_num;

p=q;

q=q->next;

while(q!=NULL)//大于当前柱面号并且小于指定最小的节点时{

if((h->cylinder_numcylinder_num)&&(q->cylinder_numcyli nder_num))

{

min=q->cylinder_num;

p=q;//p指向最小的节点

}

q=q->next;

}

}

}

else//当前移臂方向向外

{

while((q!=NULL)&&(q->cylinder_num >h->cylinder_num))

{

q=q->next;

}

if(q==NULL)//没有比当前柱面号小的请求

{

direction=1;

q=head;//从大于当前柱面号的访问中选择一个最小的,p指向

p=q;

min=q->cylinder_num;

q=q->next;

while(q!=NULL)

{

if(min>q->cylinder_num)

{

min=q->cylinder_num;

p=q;//p指向最小的节点

}

q=q->next;

}

}

else//有比当前柱面号小的请求进程

{

max=q->cylinder_num;

p=q;

q=q->next;

while(q!=NULL)//从小当前柱面号访问进程中选择一个最大的,用p 指向

{

if(p->cylinder_numcylinder_num&&q->cylinder_numcylind er_num)

{

max=q->cylinder_num;

p=q;//p指向最大的节点

}

q=q->next;

}

}//else//有比当前柱面号小的请求进程

}//else//当前移臂方向向外

}//if(q==NULL)//没有柱面号相同

else//有柱面号相同的等待进程

{

min=q->phy_num-h->phy_num;//第一个相同柱面号设为最小值

p=q;//指向最小的节点,旋转距离最短的访问者

if(min<0)

min=-min;

q=q->next;

while(q!=NULL)

{

if(q->cylinder_num==h->cylinder_num)//有柱面号相同

{

cha=q->phy_num-h->phy_num;

if(cha<0)

cha=-cha;

if(min>cha)//有更小的节点,旋转距离最短的访问者{

min=cha;

p=q;//指向最小的节点

}

}

q=q->next;

}//while查找

}//else

current_process(p);//保留选中的进程

if(direction==1)

{//启动磁盘

printf("被选中的等待进程为:\n");

printf("\n");

out_info();

printf(" up\n");

printf("\n");

}

if(direction==-1)

{

printf("被选中的等待进程为:\n");

printf("\n");

out_info();

printf(" down\n");

printf("\n");

}

if(p==head)

{

head=p->next;

}

else

{

B=head;

while(B->next!=p)//找到要删除进程的前一个节点

B=B->next;

B->next=p->next;//被选中者退出I/O请求表

}

}//if(q!=NULL)结束

else

{

printf("请求进程表为空,接收请求或退出\n");

}

}//电梯调度算法结束

void main()//主函数

{

system("cls");

char go='y';

float number;

init();

printf(" -------*执行驱动调度*-------\n");

printf(" ------*当前运行进程为*------\n");

out_info();

printf(" up\n");

printf(" ---*创建I/O请求进程等待表*---\n");

create_PCB(); //创建进程链表

printf("\n");

printf("I/O请求进程等待表为:\n");

printf("\n");

output();

while(go=='y'||go!='n')

{ printf("\n");

printf("输入0~1之间的数:\n");

printf("大于0.5 <电梯调度> \n");

printf("小于0.5 <接受请求> \n");

scanf("%f",&number);

while(number>0.5)

{

lift();

printf("调用电梯驱动调度算法后的I/O请求表为:\n"); printf("\n");

output();

break;

}

if(number<=0.5)

Receive_requests();//调用接受请求模块

{printf("是否继续?

\n");

printf("\n");

printf("\n");

scanf("%s",&go);}

main();

}

}

七、心得体会

模拟电梯调度算法,实现对磁盘的驱动调度

磁盘是一种高速、大容量、旋转型、可直接存取的存储设备。它作为计算机系统的辅助存储器,担负着繁重的输入输出任务、在多道程序设计系统中,往往同时会有若干个要求访问磁盘的输入输出请求等待处理。系统可采用一种策略,尽可能按最佳次序执行要求访问磁盘的诸输入输出请求。这就叫驱动调度,使用的算法称为驱动调度算法。驱动调度能降低为若干个输入输出请求服务所需的总时间,从而提高系统效率。本实验要求学生模拟设计一个驱动调度程序,观察驱动调度程序的动态运行过程。通过实验使我理解并且掌握了驱动调度的职能。学到了书上学不到的东西,丰富了知识面收益匪浅,感谢老师的指导

操作系统

学号:0913063021

姓名:张广辉

班级:软件工程091

指导老师:丁红

南通大学杏林学院

2011年12月

操作系统处理器调度算法C++程序

一、先来先服务算法 1.程序简介 先来先服务算法按照作业进入系统后备作业队列的先后次序挑选作业,先进入系统的作业将优先被挑选进入主存,创建用户进程,分配所需资源,然后,移入就绪队列.这是一种非剥夺式调度算法,易于实现,但效率不高.只顾及作业的等候时间,未考虑作业要求服务时间的长短,不利于短作业而优待长作业,不利于I/O繁忙型作业而有利于CPU繁忙型作业.有时为了等待场作业执行结束,短作业的周转时间和带全周转时间将变得很大,从而若干作业的平均周转时间和平均带权周转时间也变得很大。 2.分析 1.先定义一个数组代表各作业运行的时间,再定义一个数组代表各作业到达系统的时间,注意到达系统的时间以第一个作业为0基础(注意:若各程序都同时到达系统,则到达系统时间都为0)。 2.输入作业数。 3.然后运用循环结构累积作业周转时间和带权周转时间。 4.最后,作业周转时间和带权周转时间分别除以作业数即可得到平均作业周转时间和平均带权周转时间。 3.详细设计 源程序如下: #include #include using namespace std; int main() { int n,a[100],b[100]; double s[100],m[100],T=0,W=0; cout<<"请输入作业数:"<>n; cout<<"请分别输入各作业到达系统的时间:"<>b[i]; } cout<<"请分别输入各作业所运行的时间:"<>a[i];s[0]=0; s[i+1]=s[i]+a[i]; m[i+1]=(s[i+1]-b[i])/a[i]; T=T+s[i+1]-b[i]; W=W+m[i+1]; }

操作系统实验报告(进程调度算法)

操作系统实验报告(进程调度算法)

实验1 进程调度算法 一、实验内容 按优先数调度算法实现处理器调度。 二、实验目的 在采用多道程序设计的系统中,往往有若干个进程同时处于就绪状态。当就绪进程个数大于处理器数时,就必须依照某种策略来决定哪些进程优先占用处理器。本实验模拟在单处理器情况下的处理器调度,帮助学生加深了解处理器调度的工作。 三、实验原理 设计一个按优先数调度算法实现处理器调度的程序。 (1) 假定系统有五个进程,每一个进程用一个进程控制块PCB来代表,进程控制块的格式为: 进程名 指针 要求运行时 间 优先数

状态 其中,进程名——作为进程的标识,假设五个进程的进程名分别为P1,P2,P3,P4,P5。 指针——按优先数的大小把五个进程连成队列,用指针指出下一个进程的进程控制块的首地址,最后一个进程中的指针为“0”。 要求运行时间——假设进程需要运行的单位时间数。 优先数——赋予进程的优先数,调度时总是选取优先数大的进程先执行。 状态——可假设有两种状态,“就绪”状态和“结束”状态。五个进程的初始状态都为“就绪”,用“R”表示,当一个进程运行结束后,它的状态为“结束”,用“E”表示。 (2) 在每次运行你所设计的处理器调度程序之前,为每个进程任意确定它的“优先数”和“要求运行时间”。 (3) 为了调度方便,把五个进程按给定的优先数从大到小连成队列。用一单元指出队首进程,用指针指出队列的连接情况。例: 队首标志 K2

1P1 K 2 P2 K 3 P3 K 4 P4 K 5 P5 0 K4K5K3K1 2 3 1 2 4 1 5 3 4 2 R R R R R PC B1 PC B2 PC B3 PC B4 PC B5 (4) 处理器调度总是选队首进程运行。采用动态改变优先数的办法,进程每运行一次优先数就减“1”。由于本实验是模拟处理器调度,所以,对被选中的进程并不实际的启动运行,而是执行: 优先数-1 要求运行时间-1 来模拟进程的一次运行。 提醒注意的是:在实际的系统中,当一个进程被选中运行时,必须恢复进程的现场,让它占有处理器运行,直到出现等待事件或运行结束。在这里省去了这些工作。

计算机操作系统有哪几种分类

计算机操作系统有哪几种分类 目前操作系统种类繁多,关于计算机的操作系统又分为哪几种呢?下面由小编为大家搜集整理了计算机操作系统有哪些分类的相关知识,希望对大家有帮助! 计算机操作系统有哪些分类 计算机操作系统分类一 根据操作系统的使用环境和对作业处理方式来考虑,可分为批处理系统(MVX、DOS/VSE)、分时系统(WINDOWS、UNIX、XENIX、Mac OS)、实时系统(iEMX、VRTX、RTOS,RT Linux); 计算机操作系统分类二 根据所支持的用户数目,可分为单用户(MSDOS、OS/2)、多用户系统(UNIX、MVS、Windows); 计算机操作系统分类三

根据硬件结构,可分为网络操作系统(Netware、Windows NT、OS/2 warp)、分布式系统(Amoeba)、多媒体系统(Amiga)等。 操作系统的五大类型是:批处理操作系统、分时操作系统、实时操作系统、网络操作系统、分布式操作系统。 扩展资料:常见的计算机操作系统简介 CP/M CP/M其实就是第一个微机操作系统,享有指挥主机、内存、磁鼓、磁带、磁盘、打印机等硬设备的特权。通过控制总线上的程序和数据,操作系统有条不紊地执行着人们的指令…… 主设计人:Gary Kildall博士 出现年月:1974年>>>>>详细内容 MS-DOS DOS系统是1981年由微软公司为IBM个人电脑开发的,即MS-DOS。它是一个单用户单任务的操作系统。在1985年到1995

年间DOS占据操作系统的统治地位。 主设计人:Tim Paterson 出现年月:1981年>>>>>详细内容 特点 文件管理方便 外设支持良好 小巧灵活 应用程序众多 Windows Windows是一个为个人电脑和服务器用户设计的操作系统。它的第一个版本由微软公司发行于1985年,并最终获得了世界个人电脑操作系统软件的垄断地位。所有最近的Windows都是完全独立的操作系统。

计算机操作系统知识点总结一

第一章 ★1.操作系统的概念:通常把操作系统定义为用以控制和管理计算机系统资源方便用户使用的程序和数据结构的集合。★2.操作系统的基本类型:批处理操作系统、分时操作系统、实时操作系统、个人计算机操作系统、网络操作系统、分布式操作系统。 ①批处理操作系统 特点: 用户脱机使用计算机 成批处理 多道程序运行 优点: 由于系统资源为多个作业所共享,其工作方式是作业之间自动调度执行。并在运行过程中用户不干预自己的作业,从而大大提高了系统资源的利用率和作业吞吐量。 缺点: 无交互性,用户一旦提交作业就失去了对其运行的控制能力;而且是批处理的,作业周转时间长,用户使用不方便。 批处理系统中作业处理及状态 ②分时操作系统(Time Sharing OS) 分时操作系统是一个联机的多用户交互式的操作系统,如UNIX是多用户分时操作系统。 分时计算机系统:由于中断技术的使用,使得一台计算机能连接多个用户终端,用户可通过各自的终端使用和控制计算机,我们把一台计算机连接多个终端的计算机系统称为分时计算机系统,或称分时系统。 分时技术:把处理机的响应时间分成若于个大小相等(或不相等)的时间单位,称为时间片(如100毫秒),每个终端用户获得CPU,就等于获得一个时间片,该用户程序开始运行,当时间片到(用完),用户程序暂停运行,等待下一次运行。 特点: 人机交互性好:在调试和运行程序时由用户自己操作。 共享主机:多个用户同时使用。 用户独立性:对每个用户而言好象独占主机。 ③实时操作系统(real-time OS) 实时操作系统是一种联机的操作系统,对外部的请求,实时操作系统能够在规定的时间内处理完毕。 特点: 有限等待时间 有限响应时间 用户控制 可靠性高 系统出错处理能力强 设计实时操作系统要考虑的一些因素: (1)实时时钟管理 (2)连续的人—机对话 (3)过载 (4) 高度可靠性和安全性需要采取冗余措施。 ④通用操作系统 同时兼有多道批处理、分时、实时处理的功能,或其中两种以上的功能。 ⑤个人计算机上的操作系统

计算机操作系统习题及答案

1)选择题 (1)为多道程序提供的可共享资源不足时,可能出现死锁。但是,不适当的 _C__ 也可能产生死锁。 A. 进程优先权 B. 资源的线性分配 C. 进程推进顺序 D. 分配队列优先权 (2)采用资源剥夺法可以解除死锁,还可以采用 _B___ 方法解除死锁。 A. 执行并行操作 B. 撤消进程 C. 拒绝分配新资源 D. 修改信号量 (3)发生死锁的必要条件有四个,要防止死锁的发生,可以通过破坏这四个必要条件之一来实现,但破坏 _A__ 条件是不太实际的。 A. 互斥 B. 不可抢占 C. 部分分配 D. 循环等待 (4)为多道程序提供的资源分配不当时,可能会出现死锁。除此之外,采用不适当的_ D _ 也可能产生死锁。 A. 进程调度算法 B. 进程优先级 C. 资源分配方法 D. 进程推进次序 (5)资源的有序分配策略可以破坏 __D___ 条件。 A. 互斥使用资源 B. 占有且等待资源 C. 非抢夺资源 D. 循环等待资源 (6)在 __C_ 的情况下,系统出现死锁。 A. 计算机系统发生了重大故障 B. 有多个封锁的进程同时存在 C. 若干进程因竞争资源而无休止地相互等待他方释放已占有的资源 D. 资源数大大小于进程数或进程同时申请的资源数大大超过资源总数 (7)银行家算法在解决死锁问题中是用于 _B__ 的。 A. 预防死锁 B. 避免死锁 C. 检测死锁 D. 解除死锁 (8)某系统中有3个并发进程,都需要同类资源4个,试问该系统不会发生死锁的最少资源数是 _C__ 。 A. 12 B. 11 C. 10 D. 9 (9)死锁与安全状态的关系是 _A__ 。 A. 死锁状态一定是不安全状态 B. 安全状态有可能成为死锁状态 C. 不安全状态就是死锁状态 D. 死锁状态有可能是安全状态 (10)如果系统的资源有向图 _ D __ ,则系统处于死锁状态。 A. 出现了环路 B. 每个进程节点至少有一条请求边 C. 没有环路 D. 每种资源只有一个,并出现环路 (11)两个进程争夺同一个资源,则这两个进程 B 。

计算机操作系统(第四版)

第三章处理机调度与死锁 1,高级调度与低级调度的主要任务是什么?为什么要引入中级调度? 【解】(1)高级调度主要任务是用于决定把外存上处于后备队列中的那些作业调入内存,并为它们创建进程,分配必要的资源,然后再将新创建的进程排在就绪队列上,准备执行。(2)低级调度主要任务是决定就绪队列中的哪个进程将获得处理机,然后由分派程序执行把处理机分配给该进程的操作。(3)引入中级调度的主要目的是为了提高内存的利用率和系统吞吐量。为此,应使那些暂时不能运行的进程不再占用宝贵的内存空间,而将它们调至外存上去等待,称此时的进程状态为就绪驻外存状态或挂起状态。当这些进程重又具备运行条件,且内存又稍有空闲时,由中级调度决定,将外存上的那些重又具备运行条件的就绪进程重新调入内存,并修改其状态为就绪状态,挂在就绪队列上,等待进程调度。 3、何谓作业、作业步和作业流? 【解】作业包含通常的程序和数据,还配有作业说明书。系统根据该说明书对程序的运行进行控制。批处理系统中是以作业为基本单位从外存调入内存。 作业步是指每个作业运行期间都必须经过若干个相对独立相互关联的顺序加工的步骤。 作业流是指若干个作业进入系统后依次存放在外存上形成的输入作业流;在操作系统的控制下,逐个作业进程处理,于是形成了处理作业流。 4、在什么情冴下需要使用作业控制块JCB?其中包含了哪些内容? 【解】每当作业进入系统时,系统便为每个作业建立一个作业控制块JCB,根据作业类型将它插入到相应的后备队列中。 JCB 包含的内容通常有:1) 作业标识2)用户名称3)用户账户4)作业类型(CPU繁忙型、I/O芳名型、批量型、终端型)5)作业状态6)调度信息(优先级、作业已运行)7)资源要求8)进入系统时间9) 开始处理时间10) 作业完成时间11) 作业退出时间12) 资源使用情况等 5.在作业调度中应如何确定接纳多少个作业和接纳哪些作业? 【解】作业调度每次接纳进入内存的作业数,取决于多道程序度。应将哪些作业从外存调入

操作系统+磁盘调度算法

目录 目录 ........................................................ 错误!未定义书签。1.课程设计目的.............................................. 错误!未定义书签。 编写目的................................................. 错误!未定义书签。2.课程设计内容.............................................. 错误!未定义书签。 设计内容................................................. 错误!未定义书签。3.课程设计方案.............................................. 错误!未定义书签。 模块划分................................................. 错误!未定义书签。 模块调用关系图........................................... 错误!未定义书签。 子模块程序流程图......................................... 错误!未定义书签。4.测试数据和结果............................................ 错误!未定义书签。 测试数据................................................. 错误!未定义书签。 测试结果................................................. 错误!未定义书签。 测试抓图................................................. 错误!未定义书签。5.参考文献.................................................. 错误!未定义书签。6.总结...................................................... 错误!未定义书签。 设计体会................................................. 错误!未定义书签。 结束语................................................... 错误!未定义书签。7.程序使用说明书............................................ 错误!未定义书签。8.程序源代码................................................ 错误!未定义书签。

操作系统介绍与安装完整版.doc

认识操作系统 系统简介 定义 :操作系统(英语:Operating System,简称OS)是管理和控制计算机硬件与软件资源的计算机程序,是直接运行在“裸机”上的最基本的系统软件,任何其他软件都必须在操作系统的支持下才能运行。操 操作系统所处位置 作系统是用户和计算机的接口,同时也是计算机硬件和其他软件的接口。 操作系统的功能:包括管理计算机系统的硬件、软件及数据资源,控制程序运行,改善人机界面,为其它应用软件提供支持等,使计算机系统所有资源最大限度地发挥作用,提供了各种形式的用户界面,使用户有一个好

的工作环境,为其它软件的开发提供必要的服务和相应的接口。 操作系统的种类:各种设备安装的操作系统可从简单到复杂,可分为智能卡操作系统、实时操作系统、传感器节点操作系统、嵌入式操作系统、个人计算机操作系统、多处理器操作系统、网络操作系统和大型机操作系统。 按应用领域划分主要有三种: 桌面操作系统、 服务器操作系统 嵌入式操作系统。 ○1桌面操作系统 桌面操作系统主要用于个人计算机上。个人计算机市场从硬件架构上来说主要分为两大阵营,PC机与Mac 机,从软件上可主要分为两大类,分别为类Unix操作系统和Windows操作系统: 1、Unix和类Unix操作系统:Mac OS X,Linux发行

版(如Debian,Ubuntu,Linux Mint,openSUSE,Fedora等); 一个流行Linux发行版——Ubuntu桌面 Mac OS X桌面 2、微软公司Windows操作系统:Windows XP,Windows Vista,Windows 7,Windows 8等。 Windows 8 Metro Windows 8桌面 ○2服务器操作系统 服务器操作系统一般指的是安装在大型计算机上的操作系统,比如Web服务器、应用服务器和数据库服务器等。服务器操作系统主要集中在三大类: 1、Unix系列:SUN Solaris,IBM-AIX,HP-UX,

几种操作系统调度算法

保证调度算法 基本思想:向用户做出明确的性能保证,然后去实现它.如你工作时有n个用户的登录,则你将获得cpu处理能力的1/n 算法实现:跟踪计算各个进程已经使用的cpu时间和应该获得的cpu时间,调度将转向两者之比最低的进程 五,保证调度算法 思想:向用户做出明确的性能保证,然后去实现它. 算法:容易实现的一种保证是:当工作时己有n个用户登录在系统,则将获得CPU处理能力的1/n.类似的,如果在一个有n个进程运行的用户系统中,每个进程将获得CPU处理能力的1/n. 实现方法:OS应记录及计算,各个进程在一定时间段内,已经使用的CPU时间和应该得到的CPU时间,二者之比小者优先级高. 5. 保证调度 一种完全不同的调度算法是向用户作出明确的性能保证,然后去实现它。一种很实际并很容易实现的保证是:若用户工作时有n个用户登录,则用户将获得CPU处理能力的1/n。类似地,在一个有n个进程运行的单用户系统中,若所有的进程都等价,则每个进程将获得1/n的CPU时间。看上去足够公平了。 为了实现所做的保证,系统必须跟踪各个进程自创建以来已使用了多少CPU时间。然后它计算各个进程应获得的CPU时间,即自创建以来的时间除以n。由于各个进程实际获得的CPU时间是已知的,所以很容易计算出真正获得的CPU时间和应获得的CPU时间之比。比率为0.5说明一个进程只获得了应得时间的一半,而比率为2.0则说明它获得了应得时间的2倍。于是该算法随后转向比率最低的进程,直到该进程的比率超过它的最接近竞争者为止。 彩票调度算法 基本思想:为进程发放针对系统各种资源(如cpu时间)的彩票;当调度程序需要做出决策时,随机选择一张彩票,持有该彩票的进程将获得系统资源 合作进程之间的彩票交换 六,彩票调度算法 彩票调度算法: 为进程发放针对各种资源(如CPU时间)的彩票.调度程序随机选择一张彩票,持有该彩票的进程获得系统资源. 彩票调度算法的特点: 平等且体现优先级:进程都是平等的,有相同的运行机会.如果某些进程需要更多的机会,可被给予更多彩票,增加其中奖机会. 易计算CPU的占有几率:某进程占用CPU的几率,与所持有的彩票数成正比例.该算法可实现各进程占用CPU的几率. 响应迅速 各个进程可以合作,相互交换彩票. 容易实现按比例分配如图象传输率,10帧/s,15帧/s,25帧/s

计算机操作系统(第四版)1-8章 课后答案(全)

第一章操作系统引论 1.设计现代OS的主要目标是什么?答:方便性,开放性,有效性,可扩充性 2.OS的作用可表现在哪几个方面?答:OS作为用户与计算机硬件系统之间的接口;OS作为计算机系统资的管理者;OS实现了对计算机资源的抽象。 3.为什么说操作系统实现了对计算机资源的抽象?答:OS首先在裸机上覆盖一层1/0设备管理软件,实现了对计算机硬件操作的第一层次抽象;在第一层软件上再覆盖文件管理软件,实现了对硬件资源操作的第二层次抽象。0s通过在计算机硬件上安装多层系统软件,增强了系统功能,隐藏了对硬件操作的细节,由它们共同实现了对计算机资源的抽象。 4·说明推动分时系统形成和发展的主要动力是什么?答:主要动力是提高资源利用率和系统吞吐里,为了满足用户对人一机交互的需求和共享主机。 5.何谓脱机I/O和联机I/O?答:脱机1/0是指事先将装有用户程序和数据的纸带或卡片装入纸带输入机或卡片机,在外围机的控制下,把纸带或一片上的数据或程序输入到殖带上。该方式下的输入输出由外围机控制完成,是在脱离主机的情况下进行的。而耽机1/0方式是指程序和数据的輸入输出都是在主机的直接控制下进行的。 6.试说明推动分时系统形成和发展的主要动力是什么?答:推动分时系统形成和发展的主要动力是更好地满足用户的需要。主要表现在:CPU的分时使用缩短了作业的平均周转时间;人机交互能力使用户能直接控制自己的作业;主机的共享使多用户能同时使用同一台计算机,独立地处理自己的作业。 7.实现分时系统的关键问题是什么?应如何解决?答:关键问题是当用户在自己的终端上键入命令时,系统应能及寸接收并及时处理该命令,在用户能接受的时采内将结果返回给用户。解决方法:针对及时接收问题,可以在系统中设路多路卡,健主机能同时接收用户从各个终端上轮入的数据;为每个终端配路缓冲区,暂存用户捷入的命令或教据。针对反时处理问题,应便所有的用户作业都直接进入内存,并且为每个作业分配一个时间片,允许作业只在自己的时间片内运行,这样在不长的时间内,能使每个作业都运行一次。 8.为什么要引入实时OS?答:实时操作系统是指系统能及时响应外部事件的请求,在规定的时间内完成对该事件的处理,并控制所有实时任务协调一致地运行。引入实时OS是为了满足应用的需求,熏好地满足实时控制领域和实时信息处涯领域的需要。 9.什么是硬实时任务和款实时任务?试举例说明。答:硬实时任务是指系统必须满足任务对截止时间的要求,否则可能出现难以预测的结是。举例来说,运载火箭的控制等。软实时任务是指它的截止时间并不严格,偶尔错过了任务的截止时间,对系统产生的影响不大。举例:网页内容的更新、火车售票系统。 10.试从交互性、及时性以及可靠性方面,将分时系统与实时系统进行比较。答:(1)及时性:实时信息处理系统对实时性的要求与分时系统类似,都是以人所能受的等待时间来确定;而实时控制系统的及时性,是以控制对象所要求的开始截止时间或完成截止时间来确定的,一般为秒级到毫秒级,甚至有的要低于100微妙。(2)交互性:实时信息处理系统具有交互性,但人与系统的交互仅限于访问系统中某些特定的专用服务程序。不像分时系统那样能向终端用户提供数据和资源共享等服务。(3)可靠性:分时系统也要求系统可靠,但相比之下,实时系统则要求系统具有高度的可靠性。因为任何差错都可能带未巨大的经济损失,甚至是灾难性后,,所以在实时系统中,往往都采取了

操作系统之调度算法和死锁中的银行家算法

操作系统之调度算法和死锁中的银行家算法习题答案

1. 有三个批处理作业,第一个作业 10:00 到达,需要执行 2 小时;第二个作业在 10:10 到达,需要执行 1 小时;第三个作业在 10:25 到达,需要执行 25 分钟。分别采用先来先服务,短作业优先和最高响应比优先三种调度算法,各自的平均周转时间是多少? 解: 先来先服务: (结束时间=上一个作业的结束时间+执行时间周转时间=结束时间-到达时间=等待时间+执行时间) 按到达先后,执行顺序:1->2->3 作业到达 时间 结束 时间 等待 时间 执行 时间 周转 时间 平均周 转时间 1 10:00 12:00 0m 120m 120m 156.7m 2 10:10 13:00 110m 60m 170m 3 10:25 13:25 155m 25m 180m 短作业优先: 1)初始只有作业1,所以先执行作业1,结束时 间是12:00,此时有作业2和3; 2)作业3需要时间短,所以先执行;

3)最后执行作业2 作业到达 时间 结束 时间 等待 时间 执行 时间 周转 时间 平均周 转时间 1 10:00 12:00 0m 120m 120m 145m 3 10:25 12:25 95m 25m 120m 2 10:10 13:25 135m 60m 195m 最高响应比优先: 高响应比优先调度算法既考虑作业的执行时间也考虑作业的等待时间,综合了先来先服务和最短作业优先两种算法的特点。 1)10:00只有作业1到达,所以先执行作业1; 2)12:00时有作业2和3, 作业2:等待时间=12:00-10:10=110m;响应比=1+110/60=2.8; 作业3:等待时间=12:00-10:25=95m,响应比=1+95/25=4.8; 所以先执行作业3 3)执行作业2 作业到达 时间 结束 时间 等待 时间 执行 时间 周转 时间 平均周 转时间 1 10:00 12:00 0m 120m 120m

计算机操作系统

计算机操作系统复习题 (课程代码252250) 一、单项选择题(本大题共42小题) 1、下面设备中,一次只能让一个作业独占使用的设备是( B )。 A、磁盘机 B、打印机 C、光驱 D、硬盘驱动器 2、操作系统提供给程序员的接口是( B )。 A、进程 B、系统调用 C、库函数 D、B和C 3、若记录型信号量S的初值为2,当前值为-1,则表示有( B )等待进程。 A、0个 B、1个 C、2个 D、3个 4、段式存储管理中,分段是由用户决定的,因此( B )。 A、段内地址和段间的地址都是连续的 B、段内地址是连续的,而段间的地址是不连续的 C、段内地址是不连续的,而段间的地址是连续的 D、段内地址和段间的地址都是不连续的 5、请求分页管理中,页面的大小与可能产生的缺页中断次数(B )。 A、成正比 B、成反比 C、无关 D、成固定比值 6、当CPU执行操作系统代码时,称处理机处于( C)。 A、执行态 B、目态 C、管态 D、就绪态 7、在固定分区分配中,每个分区的大小是( C )。 A、随作业长度变化 B、相同 C、可以不同但预先固定 D、可以不同但根据作业长度固定 8、CPU输出数据的速度远远高于打印机的打印速度,为解决这一矛盾,可采用( C )。 A、并行技术 B、通道技术 C、缓冲技术 D、虚存技术 9、操作系统的基本类型主要有(C)。 A、批处理系统、分时系统和多任务系统 B、单用户系统、多用户系统和批处理系统 C、批处理操作系统、分时操作系统及实时操作系统 D、实时系统、分时系统和多用户系统 10、可变分区存储管理采用的地址变换公式是( C )。 A、绝对地址 = 上界寄存器值 + 逻辑地址 B、绝对地址 = 下界寄存器值 + 逻辑地址 C、绝对地址 = 重定位寄存器值 + 逻辑地址 D、绝对地址 = 块号×块长 + 页内地址 11、实际操作系统,要兼顾资源的使用效率和安全可靠,对资源的分配策略,往往采用( D )策略。 A、预防死锁 B、避免死锁 C、检测死锁 D、三者的混合 12、存储管理主要管理的是( D )。 A、外存存储器用户区 B、外存存储器系统区 C、主存储器用户区 D、主存储器系统区 13、临界段是指并发进程中访问临界资源的( D )段。 A、管理信息 B、信息存储 C、数据 D、程序

操作系统作业调度算法

操作系统上机测试作业调度算法算法 一、实验目的和要求(供参考) 1.掌握作业调度功能和调度程序常用算法。 2.掌握利用C语言设计实现不同调度策略的作业调度算法。 3.验证不同作业调度算法对性能的影响。 二、实验环境(供参考) 1.知识准备:学过进程管理、作业管理、处理机调度等章节的内容。 2.开发环境与工具: 硬件平台——个人计算机。 软件平台——C语言开发环境。 三、实验内容 用“先来先服务(FCFS)”算法和“最短作业优先(SJF)”算法模拟作业调度。 要求:按作业的到达顺序输入各作业需要的运行时间,按算法调度输出平均周转时间。 例如(FCFS),输入:8(到达时间0),5(到达时间2),7(到达时间3),1(到达时间6)J1 J2 J3 J4 0 8 13 20 21 输出:aver=(8+(13-2)+(20-3)+(21-6))/4=51/4 例如(SJF),输入:8(到达时间0),5(到达时间2),7(到达时间3),1(到达时间6)J1 J4 J2 J3 0 8 9 14 21 输出:aver=(8+(9-6)+(14-2)+(21-3))/4=42/4 注:输入的格式任意,只要输出平均周转时间即可。

四、代码(带注释) 1、先来先服务 实验结果(截图呈现) 代码: #include using namespace std; class Fcfs { private: int num[10]; //作业编号 double arriveTime[10]; //到达时间 double startTime[10]; //开始时间,进内存时间 double workTime[10]; //工作时间 double finishTime[10]; //完成时间 double cirTime[10]; //存放每一个作业的周转时间 //double freeTime[10]; //上一个作业已结束,但下一个作业还未到,存放这一段空闲时间 public: Fcfs(int n) //n为作业数目 { cout<<"默认第一个作业的到达时间为0。"<

计算机操作系统简单介绍

计算机操作系统简单介绍 操作系统的种类繁多,依其功能和特性分为分批处理操作系统、分时操作系统和实时操作系统等;依同时管理用户数的多少分为单用户操作系统和多用户操作系统;适合管理计算机网络环境的网络操作系统。 1)微机操作系统随着微机硬件技术的发展而发展,从简单到复杂。Microsoft 公司开发的DOS是一单用户单任务系统,而Windows操作系统则是一多户多任务系统,经过十几年的发展,已从Windows 3.1发展Windows NT、Windows 2000、Windows XP、Windows vista、Windows 7和Windows 8等等。它是当前微机中广泛使用的操作系统之一。Linux是一个源码公开的操作系统,程序员可以根据自己的兴趣和灵感对其进行改变,这让Linux吸收了无数程序员的精华,不断壮大,已被越来越多的用户所采用,是Windows操作系统强有力的竞争对手。 2)语言处理系统 人和计算机交流信息使用的语言称为计算机语言或称程序设计语言。计算机语言通常分为机器语言、汇编语言和高级语言三类。如果要在计算机上运行高级语言程序就必须配备程序语言翻译程序(下简称翻译程序)。翻译程序本身是一组程序,不同的高级语言都有相应的翻译程序。翻译的方法有两种:一种称为“解释”。早期的BASIC源程序的执行都采用这种方式。它调用机器配备的BASIC“解释程序”,在运行BASIC源程序时,逐条把BASIC的源程序语句进行解释和执行,它不保留目标程序代码,即不产生可执行文件。这种方式速度较慢,每次运行都要经过“解释”,边解释边执行。 另一种称为“编译”,它调用相应语言的编译程序,把源程序变成目标程序(以.OBJ为扩展名),然后再用连接程序,把目标程序与库文件相连接形成可执行文件。尽管编译的过程复杂一些,但它形成的可执行文件(以.exe为扩展名)可以反复执行,速度较快。运行程序时只要键入可执行程序的文件名,再按Enter键即可。 对源程序进行解释和编译任务的程序,分别叫作编译程序和解释程序。如FORTRAN、COBOL、PASCAL和C等高级语言,使用时需有相应的编译程序;BASIC、LISP等高级语言,使用时需用相应的解释程序。

计算机操作系统(第三版_汤小丹等)课后习题答案(全)整理后

第一章操作系统引论 1.设计现代OS的主要目标是什么? 答:(1)有效性 (2)方便性 (3)可扩充性 (4)开放性 2.OS的作用可表现在哪几个方面? 答:(1)OS作为用户与计算机硬件系统之间的接口;(2)OS作为计算机系统资源的管理者;(3)OS实现了对计算机资源的抽象。 3.为什么说OS实现了对计算机资源的抽象? 答:OS首先在裸机上覆盖一层I/O设备管理软件,实现了对计算机硬件操作的第一层次抽象;在第一层软件上再覆盖文件管理软件,实现了对硬件资源操作的第二层次抽象。OS 通过在计算机硬件上安装多层系统软件,增强了系统功能,隐藏了对硬件操作的细节,由它们共同实现了对计算机资源的抽象。 4.试说明推动多道批处理系统形成和发展的主要动力是什么? 答:主要动力来源于四个方面的社会需求与技术发展:(1)不断提高计算机资源的利用率;(2)方便用户; (3)器件的不断更新换代;(4)计算机体系结构的不断发展。 5.何谓脱机I/O和联机I/O? 答:脱机I/O 是指事先将装有用户程序和数据的纸带或卡片装入纸带输入机或卡片机,在外围机的控制下,把纸带或卡片上的数据或程序输入到磁带上。该方式下的输入输出由外围机控制完成,是在脱离主机的情况下进行的。而联机I/O方式是指程序和数据的输入输出都是在主机的直接控制下进行的。 6.试说明推动分时系统形成和发展的主要动力是什么? 答:推动分时系统形成和发展的主要动力是更好地满足用户的需要。主要表现在:CPU 的分时使用缩短了作业的平均周转时间;人机交互能力使用户能直接控制自己的作业;主机的共享使多用户能同时使用同一台计算机,独立地处理自己的作业。 7.实现分时系统的关键问题是什么?应如何解决? 答:关键问题是当用户在自己的终端上键入命令时,系统应能及时接收并及时处理该命令,在用户能接受的时延内将结果返回给用户。解决方法:针对及时接收问题,可以在系统中设置多路卡,使主机能同时接收用户从各个终端上输入的数据;为每个终端配置缓冲区,暂存用户键入的命令或数据。针对及时处理问题,应使所有的用户作业都直接进入内存,并且为每个作业分配一个时间片,允许作业只在自己的时间片内运行,这样在不长的时间内,能使每个作业都运行一次。 8.为什么要引入实时OS? 答:实时操作系统是指系统能及时响应外部事件的请求,在规定的时间内完成对该事件的处 理,并控制所有实时任务协调一致地运行。引入实时OS 是为了满足应用的需求,更好地满 足实时控制领域和实时信息处理领域的需要。 9.什么是硬实时任务和软实时任务?试举例说明。 答:硬实时任务是指系统必须满足任务对截止时间的要求,否则可能出现难以预测的结果。 举例来说,运载火箭的控制等。软实时任务是指它的截止时间并不严格,偶尔错过了任务的截止时间,对系统产生的影响不大。举例:网页内容的更新、火车售票系统。 10.在8位微机和16位微机中,占据了统治地位的是什么操作系统? 答:单用户单任务操作系统,其中最具代表性的是CP/M和MS-DOS。 11.试列出Windows OS 中五个主要版本,并说明它们分别较之前一个版本有何改进。 答:(1)Microsoft Windows 1.0是微软公司在个人电脑上开发图形界面的首次尝试。(2)Windows 95是混合的16位/32位系统,第一个支持32位。带来了更强大、更稳定、更实用的桌面图形用户界面,结束了桌面操作系统间的竞争。(3)Windows 98是微软公司的混合16位/32位Windows 操作系统,改良了硬件标准的支持,革新了内存管理,是多进程操作系统。(4)Windows XP是基于Windows 2000的产品,拥有新用户图形界面月神Luna。简化了用户安全特性,整合了防火墙。(5)Windows Vista 包含了上百种新功能;特别是新版图形用户界面和Windows Aero全新界面风格、加强的搜寻功能(Windows Indexing Service)、新媒体创作工具

计算机操作系统知识点整理

★1.操作系统的概念:通常把操作系统定义为用以控制和管理计算机系统资源方便用户使用的程序和数据结构的集合。 ★2.操作系统的基本类型:批处理操作系统、分时操作系统、实时操作系统、个人计算机操作系统、网络操作系统、分布式操作系统。①批处理操作系统 特点: 用户脱机使用计算机 成批处理 多道程序运行 优点: 由于系统资源为多个作业所共享,其工作方式是作业之间自动调度执行。并在运行过程中用户不干预自己的作业,从而大大提高了系统资源的利用率和作业吞吐量。 缺点: 无交互性,用户一旦提交作业就失去了对其运行的控制能力;而且是批处理的,作业周转时间长,用户使用不方便。 批处理系统中作业处理及状态 ②分时操作系统(Time Sharing OS) 分时操作系统是一个联机的多用户交互式的操作系统,如UNIX是多用户分时操作系统。 分时计算机系统:由于中断技术的使用,使得一台计算机能连接多个用户终端,用户可通过各自的终端使用和控制计算机,我们把一台计算机连接多个终端的计算机系统称为分时计算机系统,或称分时系统。 分时技术:把处理机的响应时间分成若于个大小相等(或不相等)的时间单位,称为时间片(如100毫秒),每个终端用户获得CPU,就等于获得一个时间片,该用户程序开始运行,当时间片到(用完),用户程序暂停运行,等待下一次运行。 特点: 人机交互性好:在调试和运行程序时由用户自己操作。 共享主机:多个用户同时使用。 用户独立性:对每个用户而言好象独占主机。 ③实时操作系统(real-time OS) 实时操作系统是一种联机的操作系统,对外部的请求,实时操作系统能够在规定的时间内处理完毕。 特点: 有限等待时间 有限响应时间 用户控制 可靠性高 系统出错处理能力强 设计实时操作系统要考虑的一些因素: (1)实时时钟管理 (2)连续的人—机对话 (3)过载 (4) 高度可靠性和安全性需要采取冗余措施。 ④通用操作系统 同时兼有多道批处理、分时、实时处理的功能,或其中两种以上的功能。 ⑤个人计算机上的操作系统 个人计算机上的操作系统是联机的交互式单用户操作系统,目前在个人计算机上使用的操作系统以windows系列和linux系统为主。 ⑥网络操作系统

操作系统磁盘调度算法(C++)

#include #include #include using namespace std; const int MaxNumber=100; int TrackOrder[MaxNumber]; int MoveDistance[MaxNumber]; //----移动距离; int FindOrder[MaxNumber]; //-----寻好序列。 double AverageDistance; //-----平均寻道长度 bool direction; //-----方向true时为向外,false为向里 int BeginNum; //----开始磁道号。 int M; //----磁道数。 int N; //-----提出磁盘I/O申请的进程数 int SortOrder[MaxNumber]; //----排序后的序列 bool Finished[MaxNumber]; void Inith() { cout<<"请输入磁道数:"; cin>>M;

cout<<"请输入提出磁盘I/O申请的进程数:"; cin>>N; cout<<"请依次输入要访问的磁道号:"; for(int i=0;i>TrackOrder[i]; for(int j=0;j>BeginNum; for(int k=0;k=0;i--) for(int j=0;j

计算机操作系统复习材料

单项选择题 1.所谓()是指将一个以上的作业放入主存,并且同时处于运行状态,这些作业共享处 理机的时间和外围设备等其它资源。 A. 多重处理 B. 多道程序设计 C. 实时处理 D. 共同执行2.下列进程调度算法中,可能引起进程长时间得不到运行的算法是 ()。 A. 时间片轮转法 B. 不可抢占式静态优先级算法 C. 可抢占式静态优先级算法 D. 不可抢占式动态优先级算法3.信箱通信是一种()的通信方式。A. 直接通信B. 间接通信 C. 低级通信 D. 信号量4.既要考虑作业等待时间,又要考虑作业执行时间的调度算法是()。 A. 响应比高者优先 B. 短作业优先 C. 优先级调度 D. 先来先服务 5. 操作系统的职能是管理软硬件资源、合理地组织计算机工作流程和()。 A. 为用户提供良好的工作环境和接口 B. 对用户的命令做出快速响应 C. 作为服务机构向其他站点提供优质服务 D. 防止有人以非法手段进入系统 6. 设计实时操作系统时,首先应考虑系统的()。 A.可靠性和灵活性 B.实时性和可靠性 C.优良性和分配性 D ?灵活性和分配性 7. 进程有三种基本状态,下面关于进程状态变化的说法正确的是()。 A. 进程一旦形成,首先进入的是运行状态 B. 若运行的进程因时间片用完而让出处理机,则该进程将转入就绪状态 C. 在分时系统中,一个正在运行的进程时间片到,该进程将转入就绪状态 D. 因进程执行中存在不确定性,一个进程可能同时处于某几种状态中 8. 临界区是指并发进程中访问临界资源的()段。 A. 管理信息 B. 信息存储 C. 数据 D. 程序 9. 有n 个进程需要访问同一类资源,假定每个进程需要3 个资源,系统至少要提供()个资源才能

操作系统实验第五讲磁盘调度算法

操作系统 实验报告 哈尔滨工程大学 计算机科学与技术学院

第六讲磁盘调度算法 一、实验概述 1. 实验名称 磁盘调度算法 2. 实验目的 (1)通过学习EOS 实现磁盘调度算法的机制,掌握磁盘调度算法执行的条件和时机; (2)观察EOS 实现的FCFS、SSTF和SCAN磁盘调度算法,了解常用的磁盘调度算法; (3)编写CSCAN和N-Step-SCAN磁盘调度算法,加深对各种扫描算法的理解。 3. 实验类型 验证性+设计性实验 4. 实验内容 (1)验证先来先服务(FCFS)磁盘调度算法; (2)验证最短寻道时间优先(SSTF)磁盘调度算法; (3)验证SSTF算法造成的线程“饥饿”现象; (4)验证扫描(SCAN)磁盘调度算法; (5)改写SCAN算法。 二、实验环境 在OS Lab实验环境的基础上,利用EOS操作系统,由汇编语言及C语言编写代码,对需要的项目进行生成、调试、查看和修改,并通过EOS应用程序使内核从源代码变为可以在虚拟机上使用。 三、实验过程 1. 设计思路和流程图 (1)改写SCAN算法 在已有SCAN 算法源代码的基础上进行改写,要求不再使用双重循环,而是只遍历一次请求队列中的请求,就可以选中下一个要处理的请求。算法流程图如下图所示。 图 3.1.1 SCAN算法IopDiskSchedule函数流程图 (2)编写循环扫描(CSCAN)磁盘调度算法 在已经完成的SCAN算法源代码的基础上进行改写,不再使用全局变量ScanInside确定磁头移动的方向,而是规定磁头只能从外向内移动。当磁头移动到最内的被访问磁道时,磁头立即移动到最外的被访问磁道,即将最大磁道号紧接着最小磁道号构成循环,进行扫描。算法流程图如下图所示。 图 3.1.2 CSCAN算法IopDiskSchedule函数流程图

相关文档
最新文档