当前位置:文档之家› 操作系统实验_首次适应算法与循环首次适应算法

操作系统实验_首次适应算法与循环首次适应算法

操作系统实验_首次适应算法与循环首次适应算法
操作系统实验_首次适应算法与循环首次适应算法

学号P7******* 专业计算机科学与技术姓名

实验日期2017.11.16 教师签字成绩

实验报告

【实验名称】首次适应算法和循环首次适应算法

【实验目的】

学会主存空间分配与回收的基本方法首次适应算法和循环首次适应算法。

【实验原理】

理解在连续分区动态的存储管理方式下,如何实现贮存空间的分配与回收。

采用可变式分区管理,使用最佳适应算法实现主存空间的分配与回收。

采用可变式分区管理,使用最坏适应算法实现主存空间的分配与回收。

数据结构:

1、bool ROM[N]; //定义主存信息,如果内存被占用,则标记为1,否则标记为0,设置内存单元为1024

2、pcb num[20];//定义作业数组,最大支持20个作业

3、typedef struct Pcb //定义作业结构体,包括名称,开始时间,大小,是否执行状态

{

char name[10];

int start;

int size;

int state=0;

} pcb;

typedef struct Free_rom //空闲区结构体

{

int num;

int start;

int end;

int space;

} Free_room;

Free_rom free_rom[100];//设置空闲区数组为100个

主要函数

void init();//初始化信息,包括初始化内存信息,和初始化作业队列

void insert_pcb1(pcb &a);插入作业函数,首次适应算法,如果有适合的就插入,无合适输出‘插入失败’

void insert_pcb1(pcb &a);插入作业函数,循环首次适应算法,如果有适合的就插入,无合适输出‘插入失败’

void Delete(pcb &a)//删除作业信息,包括修改内存状态修改作业状态并对作业进行初始化

void show();//显示信息

void find_free_rom() //寻找空闲区

算法流程图

首次适应算法

循环首次适应算法

程序代码及截图:

#include

#include

#define N 1024

bool ROM[N];//设置内存块

int p=0;//循环首次使用需要标记当前的空闲区块

typedef struct Pcb//作业数据结构

{

char name[10];

int start;

int size;

int state=0;

} pcb;

int free_rom_counter=0;

pcb num[20]; //作业队列

typedef struct Free_rom //空闲区结构体

{

int num;

int start;

int end;

int space;

} Free_room;

Free_rom free_rom[100];//设置空闲区数组为100个void find_free_rom() //寻找空闲区

{

free_rom_counter=0;

int i,j,p;

for(i=0; i

if(ROM[i]==0)

{

p=i;

for(j=i; j

{

if(ROM[j]==0)

{

i=j;

continue;

}

if(ROM[j]==1)//找到空闲区

{

free_rom_counter++;

free_rom[ free_rom_counter].num= free_rom_counter;

free_rom[ free_rom_counter].start=p;

free_rom[ free_rom_counter].end=j-1;

free_rom[ free_rom_counter].space=j-p;

i=j+1;

break;

}

}

if(j==N&&ROM[j-1]==0)//对最后一个内存进行特殊操作

{

free_rom_counter++;

free_rom[ free_rom_counter].num= free_rom_counter;//对空闲区进行处理

free_rom[ free_rom_counter].start=p;

free_rom[ free_rom_counter].end=j-1;

free_rom[ free_rom_counter].space=j-p;

}

}

}

void init()//初始化

{

for(int i=0; i

ROM[i]=0;

}

void show()

{

printf("空闲区名\t开始地址\t\t大小\t\t结束地址\t\t\n");

for (int i=1; i<= free_rom_counter; i++)

printf("%d\t\t%d\t\t\t%d\t\t%d\t\t\n",free_rom[ i].num,free_rom[ i].start, free_rom[ i].space,free_rom[ i].end);

}

void insert_pcb1(pcb &a)//首次适应算法来实现作业调度

{

int i,j,k;

for(i=0; i

if(ROM[i]==0)

{

for(j=i; j<=(i+a.size)&&j

if(ROM[j]==1)

{

i=j+1;

break;

}

if(j==i+a.size+1)

{

a.start=i;//设置作业的开始内存

a.state=1;//标记作业在内存中

for(k=i; k

ROM[k]=1;

printf("插入成功,进程%s 的初始地址为%d,结束地址为%d\n",https://www.doczj.com/doc/074809128.html,,a.start,a.start+a.size-1);

return;

}

}

if(i==N)//未查询到合适的区域

printf("插入失败,无可用空间\n");

}

void insert_pcb2(pcb &a)//循环首次适应算法来实现作业调度

{

int i,j,k;

for(i=p; i

{

if(ROM[i]==0)

{

for(j=i; j<=(i+a.size)&&j

if(ROM[j]==1)

{

i=j+1;

break;

}

if(j==i+a.size+1)//找到合适的空闲区

{

a.start=i;

a.state=1;

for(k=i; k

ROM[k]=1;

printf("插入成功,进程%s 的初始地址为%d,结束地址为%d\n",https://www.doczj.com/doc/074809128.html,,a.start,a.start+a.size-1);

p=i+a.size;

return;

}

}

for(i=0; i

if(ROM[i]==0)

{

for(j=i; j<=(i+a.size)&&j

if(ROM[j]==1)

{

i=j+1;

break;

}

if(j==i+a.size+1)//成功找到结束,并标记当前P为现在的作业的尾部

{

a.start=i;

a.state=1;

for(k=i; k

ROM[k]=1;

printf("插入成功,进程%s 的初始地址为%d\n",https://www.doczj.com/doc/074809128.html,,a.start);

p=i+a.size;

break;

}

}

if(i==p)//查询两部分都未找到合适的区域,输出插入失败语句

printf("插入失败,无可用空间\n");

}

void Delete(pcb &a)//删除作业,修改内存信息和初始化该作业信息

{

int i;

for(i=a.start; i

ROM[i]=0;

a.state=0;//状态标记为未使用

printf("删除成功\n");

}

int main()

{

init();

int count=0;

int choose1,choose;

char name[10];

printf("1、首次适应算法\n");

printf("2、循环首次适应算法\n");

scanf("%d",&choose1);

do

{

printf("\n\n1、插入进程\n");

printf("2、删除进程\n");

printf("3、显示进程的信息\n");

printf("4、显示空闲区\n");

scanf("%d",&choose);

if(choose==1)

{

printf("输入进程名\n");

scanf("%s",&https://www.doczj.com/doc/074809128.html,);

printf("输入进程大小\n");

scanf("%d",&a.size);

if(choose1==1)

insert_pcb1(a);

else insert_pcb2(a);

num[count++]=a;

}

else if(choose==2)

{

printf("输入删除进程的名字\n");

scanf("%s",&name);

for(int i=0; i

if( !strcmp(num[i].name,name))

Delete(num[i]);

}

else if(choose==3)

{

printf("进程名\t\t开始地址\t\t大小\t\t结束地址\t\t\n");//输出内存信息

for(int i=0; i

for(int j=i; j

if(num[j].start>num[j+1].start)

{

a=num[j];

num[j]=num[j+1];

num[j+1]=a;

}

for(int i=0; i

if(num[i].state!=0)

printf("%s\t\t%d\t\t\t%d\t\t%d\t\t\n",num[i].name,num[i].start,num[i].size,num[i].s ize+num[i].start-1);

}

else if(choose==4)

{

find_free_rom();

show();

}

else break;

}

while(1);

return 0;

}

首次适应算法:

本实验共采用1024个内存进行模拟,首先对内存初始化,得到一个大的空闲区:

相继插入3个进程:

分别插入进程A B C,大小分别为100,200,300 此时查询进程信息和查询空闲区信息

有一块大小为424 起始地址为600的空闲区在进行插入D删除B此时有两块空闲区

插入一个150大小的进程,他的起始地址应为100

此时空闲区只有2块,一块大小为50,删除C进程,构造一块大空闲区

再插入一个进程为100大小,此时两块空闲区都满足,此时应从第一块插入

再插入一个大于两块空闲区大小的进程,此时无可用空间首次适应算法完成。

循环首次适应算法

此时有三块空闲区,由于先前插入的是E进程,此时空闲区指针指向3,插入一个小于15的内存,会插入到3空间,再插入一个5的内存,由于采用循环首次适应,此时插入的也是3

再插入一个小于200的进程,此时扫描到最后,没找到,转而从低地址开始查找

循环首次适应算法正确

【小结或讨论】

1、首次适应算法倾向于利用内存中低地址部分的空闲区域,从而保留了高地址部分的大空

闲区,这为以后到达的大作业分配大的内存空间创造了条件。其缺点是低地址部分不断被划分,会留下许多难以利用的、很小的空闲分区碎片。每次查找都是从低地址部分开始的,这样会增加查找可用空闲分区的开销。

2、为了避免低地址部分留下的许多很小的空闲分区以及减少查找可用空间区的开销,循环

首次适应算法在为作业分配时,从上次找到的空闲区的下一个空闲区开始查找,找不到再从头开始查找,实现该算法,在程序中设置了一个指针P,用于指示下一个起始查询的空闲分区。该算法能够使内存中分配的分布区域更均匀,从而减少了查找空闲区的开销,但这样也会导致缺乏大的空闲区。

3、根据经验,如果作业的大小较为均为,使用循环首次适应算法实现较好。

4、本实验对两种算法进行模拟时,并未采用链表的方式,而是采用数组的方式,内存是连

续的,判断是否内存是否被占用,仅仅用一个布尔型的量进行状态记录,且在查询过程中,当循环计数器达到最大内存号时,便认为到达了尾部,较为简便。

实验三 最短路径的算法(离散数学实验报告)

实验3:最短路径算法 一、实验目的 通过本实验的学习,理解Floyd(弗洛伊得)最短路径算法的思想 二、实验内容 用C语言编程实现求赋权图中任意两点间最短路径的Floyd算法,并能对给定的两结点自动求出最短路径 三、实验原理、方法和手段 1、Floyd算法的原理 定义:Dk[i,j] 表示赋权图中从结点vi出发仅通过v0,v1,┉,vk-1中的某些结点到达vj的最短路径的长度, 若从vi到vj没有仅通过v0,v1,┉,vk-1 的路径,则D[i,j]=∝即 D-1[i,j] 表示赋权图中从结点vi到vj的边的长度,若没有从结点vi到vj的边,则D[i,j]=∝ D0[i,j] 表示赋权图中从结点vi到vj的”最短”路径的长度, 这条路上除了可能有v0外没有其它结点 D1[i,j] 表示赋权图中从结点vi到vj的”最短”路径的长度, 这条路上除了可能有v0,v1外没有其它结点 ┉┉┉ 根据此定义,D k[i,j]=min{ D k-1[i,j] , D k-1[i,k-1]+D k-1[k-1,j] } 定义:path[i,j]表示从结点vi到vj的“最短”路径上vi的后继结点 四、实验要求 要求输出每对结点之间的最短路径长度以及其最短路径 五、实验步骤 (一)算法描述 Step 1 初始化有向图的成本邻矩阵D、路径矩阵path 若从结点vi到vj有边,则D[i,j]= vi到vj的边的长度,path[i,j]= i; 否则D[i,j]=∝,path[i,j]=-1 Step 2 刷新D、path 对k=1,2,┉n 重复Step 3和Step 4 Step 3 刷新行对i=1,2,┉n 重复Step 4 Step 4 刷新Mij 对j=1,2,┉n 若D k-1[i,k]+D k-1[k,j]

操作系统实验四实验报告动态分区分配算法

操作系统实验四 【实验题目】:动态分区分配算法 【实验学时】:4学时 【实验目的】 通过这次实验,加深对动态分区分配算法的理解,进一步掌握首次适应算法、循环首次适应算法、最佳适应算法和最坏适应算法的实现方法。 【实验内容及要求】 问题描述: 设计程序模拟四种动态分区分配算法:首次适应算法、循环首次适应算法、最佳适应算法和最坏适应算法的工作过程。假设内存中空闲分区个数为n,空闲分区大小分别为P1, … ,P n,在动态分区分配过程中需要分配的进程个数为m(m≤n),它们需要的分区大小分别为S1, … ,S m,分别利用四种动态分区分配算法将m个进程放入n个空闲分区,给出进程在空闲分区中的分配情况。 程序要求: 1)利用首次适应算法、循环首次适应算法、最佳适应算法和最坏适应算法四种动态分区分配算法模拟分区分配过程。 2)模拟四种算法的分区分配过程,给出每种算法进程在空闲分区中的分配情况。 3)输入:空闲分区个数n,空闲分区大小P1, … ,P n,进程个数m,进程需要的分区大小S1, … ,S m。

4)输出:首次适应算法,循环首次适应算法,最佳适应算法,最坏适应算法,最终内存空闲分区的分配情况。 实现源代码: #include #include #include #include #define max 100 using namespace std; int work_num; int zone_num; struct Data{ int data; char name; }; Data *d=new Data[max]; struct Table{ int data; char array[max]; int length; };

操作系统复习试题

洛阳师范学院2014—2015学年第一学期期末考试试卷(A) 1.在个人计算机上运行的系统一般是()。 A)手工操作 B)单道批处理 C)多道批处理 D)多用户分时系统 2.早期OS设计追求的主要目标是()。 A)系统的效率 B)用户的方便性 C)可移植性 D)可扩充性 3.下列进程状态转换不可能发生的是()。 A)就绪->执行 B)执行->就绪C)执行->阻塞D)阻塞->执行4.从资源管理角度看,进程调度属于()。 A)I/O管理 B)文件管理 C)处理机管理 D)存储器管理 5.用P、V操作实现进程同步时,信号量的初值一般为()。 A)-1 B)1 C)0 D)任意值 6.如果系统内存不足,可将进程调至外存挂起。从调度的角度看,该行为属于()。 A)低级调度B)中级调度C)高级调度D)处理机调度 7.在一次磁盘I/O过程中,时间消耗最长的阶段是()。 A)寻道 B)旋转 C)传输 D)启动 8.在动态分区分配中,会导致空闲分区链首聚集碎片的是()。 A)最佳适应算法B)首次适应算法C)循环首次适应算法D)最坏适应算法9.下述I/O控制方法中,CPU干预次数最少的是()。 A)程序I/O B)中断I/O C)DMA方式D)通道方式 10.下述文件存储方式中,文件读取速度最快的是()。 A)连续存储 B)链式存储 C)索引存储 D)多级索引存储 1.操作系统设计的目标包括、、可扩充性和开放性。 2.操作系统中,资源分配的基本单位是。 3.不满足“让权等待”准则的信号量机制是。 4.在页式和段式存储管理系统中,存储管理有利于提高内存利用率,存储管理有利于满足用户需求。 5.在高响应比优先调度算法中,进程优先权最初与有关,并随着的增加而增大。

第三版操作系统第3章习题

操作系统第三章总复习题 一、单选题 1、进程调度又称低级调度,其主要功能是( D )。 A.选择一个作业调入内存B.选择一个主存中的进程调出到外存 C.选择一个外存中的进程调入到主存D.将一个就绪的进程投入到运行 2、若进程P 一旦被唤醒就能够投入运行,系统可能为( D )。 A.分时系统,进程P 的优先级最高 B.抢占调度方式,就绪队列上的所有进程的优先级皆比P 的低 C.就绪队列为空队列 D.抢占调度方式,P 的优先级高于当期运行的进程。 3、一个进程P 被唤醒后,( D )。 A.P 就占有了CPU。B.P 的PCB 被移到就绪队列的队首。 C.P 的优先级肯定最高D.P 的状态变成就绪 4、若当前运行进程()后,系统将会执行进程调度原语。 A 执行了一个转移指令 B 要求增加主存空间,经系统调用银行家算法进行测算认为是安全的。 C 执行了一条I/O 指令要求输入数据。 D 执行程序期间发生了I/O 完成中断。 5、当系统中()时,系统将不会执行进程调度原语。 A.一个新进程被创建B.当前进程执行了P 操作。C.在非抢占调度中,进程A 正在运行而进程B 恰好被唤醒。D.分时系统中时间片用完。 6、在分时系统中,若当期运行的进程连续获得了两个时间片,原因可能是()。 A 该进程的优先级最高 B 就绪队列为空 C 该进程最早进入就绪队列 D 该进程是一个短进程 7、实时系统中采用的调度算法可以有如下几种: 1、非抢占优先权调度算法 2、立即抢占优先权调度算法 3、时间片轮转调度算法 4、基于时钟中断抢占的优先权调度算法 按实时要求的严格程度由低到高的顺序()。 A 1-3-2-4 B 3-1-4-2 C 3-1-2-4 D 1-3-4-2 8、三种主要类型的OS 中都必须配置的调度()。 A 作业调度 B 中级调度 C 低级调度 D I/O 调度 9、设系统中n 个进程并发,共同竞争资源X,且每个进程都需要m 个X 资源,为使该系统不会发生死锁,资源X 最少要有( C )个。 A m*n+1 B n*m+n C n*m+1-n D 无法预计 10、死锁的预防方法中,不太可能的一种方法使()。

MATLAB实验报告,遗传算法解最短路径以及函数最小值问题讲解

硕士生考查课程考试试卷 考试科目:MATLAB教程 考生姓名:考生学号: 学院:专业: 考生成绩: 任课老师(签名) 考试日期:20 年月日午时至时

《MATLAB 教程》试题: A 、利用MATLA B 设计遗传算法程序,寻找下图11个端点的最短路径,其中没有连接的端点表示没有路径。要求设计遗传算法对该问题求解。 a d e h k B 、设计遗传算法求解f (x)极小值,具体表达式如下: 3 21231(,,)5.12 5.12,1,2,3 i i i f x x x x x i =?=???-≤≤=? ∑ 要求必须使用m 函数方式设计程序。 C 、利用MATLAB 编程实现:三名商人各带一个随从乘船渡河,一只小船只能容纳二人,由他们自己划行,随从们密约,在河的任一岸,一旦随从的人数比商人多,就杀人越货,但是如何乘船渡河的大权掌握在商人手中,商人们怎样才能安全渡河? D 、结合自己的研究方向选择合适的问题,利用MATLAB 进行实验。 以上四题任选一题进行实验,并写出实验报告。

选择题目: A 一、问题分析(10分) 1 4 10 11 如图如示,将节点编号,依次为 1.2.3.4.5.6.7.8.9.10.11,由图论知识,则可写出其带权邻接矩阵为: 0 2 8 1 500 500 500 500 500 500 500 2 0 6 500 1 500 500 500 500 500 500 8 6 0 7 500 1 500 500 500 500 500 1 500 7 0 500 500 9 500 500 500 500 500 1 500 500 0 3 500 2 500 500 500 500 500 1 500 3 0 4 500 6 500 500 500 500 500 9 500 4 0 500 500 1 500 500 500 500 500 2 500 500 0 7 500 9 500 500 500 500 500 6 500 7 0 1 2 500 500 500 500 500 500 1 500 1 0 4 500 500 500 500 500 500 500 9 2 4 0 注:为避免计算时无穷大数吃掉小数,此处为令inf=500。 问题要求求出任意两点间的最短路径,Floyd 算法采用的是在两点间尝试插入顶点,比较距离长短的方法。我思考后认为,用遗传算法很难找到一个可以统一表示最短路径的函数,但是可以对每一对点分别计算,然后加入for 循环,可将相互之间的所有情况解出。观察本题可发现,所有节点都是可双向行走,则可只计算i 到j 的路径与距离,然后将矩阵按主对角线翻折即可得到全部数据。 二、实验原理与数学模型(20分) 实现原理为遗传算法原理: 按所选择的适应度函数并通过遗传中的复制、交叉及变异对个体进行筛选,使得适应度高的个体被保留下来,组成新的群体,新的群体既继承了上一代的信息,又优于上一代。这样周而复始,群体中个体适应度不断提高,直到满足一定的条件。 数学模型如下: 设图G 由非空点集合12{,...}n V V V V = 和边集合12{,...}m E e e e = 组成,其中121221(,)e ,P ,)(P ,P ), i i i i i i i i e P P E P =∈≠且若(则G 为一个有向图; 又设i e 的值为i a ,12{,...},m A a a a = 故G 可表示为一个三元组{,,}G P E A = 则求最短路径的数学模型可以描述为:

操作系统实验_首次适应算法与循环首次适应算法

学号P7******* 专业计算机科学与技术姓名 实验日期2017.11.16 教师签字成绩 实验报告 【实验名称】首次适应算法和循环首次适应算法 【实验目的】 学会主存空间分配与回收的基本方法首次适应算法和循环首次适应算法。 【实验原理】 理解在连续分区动态的存储管理方式下,如何实现贮存空间的分配与回收。 采用可变式分区管理,使用最佳适应算法实现主存空间的分配与回收。 采用可变式分区管理,使用最坏适应算法实现主存空间的分配与回收。 数据结构: 1、bool ROM[N]; //定义主存信息,如果内存被占用,则标记为1,否则标记为0,设置内存单元为1024 2、pcb num[20];//定义作业数组,最大支持20个作业 3、typedef struct Pcb //定义作业结构体,包括名称,开始时间,大小,是否执行状态 { char name[10]; int start; int size; int state=0; } pcb; typedef struct Free_rom //空闲区结构体

{ int num; int start; int end; int space; } Free_room; Free_rom free_rom[100];//设置空闲区数组为100个 主要函数 void init();//初始化信息,包括初始化内存信息,和初始化作业队列 void insert_pcb1(pcb &a);插入作业函数,首次适应算法,如果有适合的就插入,无合适输出‘插入失败’ void insert_pcb1(pcb &a);插入作业函数,循环首次适应算法,如果有适合的就插入,无合适输出‘插入失败’ void Delete(pcb &a)//删除作业信息,包括修改内存状态修改作业状态并对作业进行初始化 void show();//显示信息 void find_free_rom() //寻找空闲区 算法流程图

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

操作系统之调度算法和死锁中的银行家算法习 题答案 集团文件发布号:(9816-UATWW-MWUB-WUNN-INNUL-DQQTY-

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

高响应比优先调度算法既考虑作业的执行时间也考虑作业的等待时间,综合了先来先服务和最短作业优先两种算法的特点。 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 2. 在一单道批处理系统中,一组作业的提交时刻和运行时间如下表所示。试计算一下三种 作业调度算法的平均周转时间 T 和平均带权周转时间 W。 ( 1)先来先服务;( 2)短作业优先( 3)高响应比优先 解: 先来先服务: 作业顺序:1,2,3,4 短作业优先: 作业顺序:

《数据结构课程设计》最短路径问题实验报告

《数据结构课程设计》最短路径问题实验报告

目录 一、概述 0 二、系统分析 0 三、概要设计 (1) 四、详细设计 (5) 4.1建立图的存储结构 (5) 4.2单源最短路径 (6) 4.3任意一对顶点之间的最短路径 (7) 五、运行与测试 (8) 参考文献 (11) 附录 (12)

交通咨询系统设计(最短路径问题)一、概述 在交通网络日益发达的今天,针对人们关心的各种问题,利用计算机建立一个交通咨询系统。在系统中采用图来构造各个城市之间的联系,图中顶点表示城市,边表示各个城市之间的交通关系,所带权值为两个城市间的耗费。这个交通咨询系统可以回答旅客提出的各种问题,例如:如何选择一条路径使得从A城到B城途中中转次数最少;如何选择一条路径使得从A城到B城里程最短;如何选择一条路径使得从A城到B城花费最低等等的一系列问题。 二、系统分析 设计一个交通咨询系统,能咨询从任何一个城市顶点到另一城市顶点之间的最短路径(里程)、最低花费或是最少时间等问题。对于不同的咨询要求,可输入城市间的路程、所需时间或是所需费用等信息。 针对最短路径问题,在本系统中采用图的相关知识,以解决在实际情况中的最短路径问题,本系统中包括了建立图的存储结构、单源最短问题、对任意一对顶点间最短路径问题三个问题,这对以上几个问题采用了迪杰斯特拉算法和弗洛伊德算法。并未本系统设置一人性化的系统提示菜单,方便使用者的使用。

三、概要设计 可以将该系统大致分为三个部分: ①建立交通网络图的存储结构; ②解决单源最短路径问题; ③实现两个城市顶点之间的最短路径问题。

迪杰斯特拉算法流图:

采用首次适应算法的动态分区分配模拟课程设计实验报告

】 1 需求分析 1)本程序要求实现对内存的动态分配与回收的模拟,同时,在内存的分配时还必须使用首次适应算法,最后,还要显示内存块分配和回收后空闲内存分区链的情况。 2)要实现对作业的内存分配,首先要有一个对作业进行创建和分配内存的模块,其中,该模块在分配内存时要使用首次适应算法;要实现对内存的回收,要有一个内存回收的模块,其中,该模块在回收内存时要考虑内存回收的四种情况;最后,还要有一个能显示内存空闲分区链的情况的模块。 2 概要设计 1)首次适应算法的结构如图1: 图1 首次适应算法的结构图 》

2)数据结构: struct Fq { int size,o,no; Fq *before,*next; }; 其中,Fq表示结构体的名字(类型),size表示分区的可用空间大小,o表示该分区的状态(是否已分配),no表示该分区中的作业标志,*before表示该结点的向前指针,*next表示该结点的向后指针。 3)各种函数说明: \ void alloc(int b,int no,Fq *p); 对作业no进行内存分配的功能函数;其中,参数b表示需求的内存大小,参数no表示作业的编号,参数*p表示空闲分区链的第一个非空结点的指针; void free(Fq *c); 将地址为c的分区的内存回收;其中,参数*c表示要回收内存的结点; void create(Fq *head); 创建新作业的子函数;其中,参数*head表示空闲分区链的链首指针;要配合函数alloc()使用; void cha(Fq *head); 查看内存中的空闲分区链的子函数;其中,参数*head表示空闲分区链的链首指针; # void hui(Fq *head); 回收内存的子函数;其中,参数*head表示空闲分区链的链首指针;要配合函数free()使用; 3 运行环境 1)操作系统: Windows XP ( 32位 / DirectX 11 ) 2)电脑: X86 兼容台式电脑

操作系统习题

一、选择题 1.在三种基本类型的操作系统中,都设置了进程调度,在批处理系统中还应设置作业调度;在分时系统中除了设置进程调度,通常还设置中级调度,在多处理机系统中则还需设置剥夺调度。 2.在面向用户的调度准则中,截止时间的保证是选择实时调度算法的重要准则,响应时间快是选择分时系统中调度算法的重要准则,平均周转时间短是批处理系统中选择作业调度算法的重要准则,而优先权高的作业能获得优先服务准则则是为了照顾紧急作业用户的要求而设置的。 3.作业调度是从处于后备状态的队列中选取作业投入运行,周转时间是指作业进入系统到作业完成所经过的时间间隔,时间片轮转算法不适合作业调度。 4.下列算法中,FCFS算法只能采用非抢占调度方式,时间片轮转法只能采用抢占调度方式,而其余的算法既可采用抢占方式也可采用非抢占方式。 5.我们如果为每一个作业只建立一个进程,则为了照顾短作业用户,应采用短作业优先;为照顾紧急作业的用户,应采用基于优先权的剥夺调度算法;为能实现人机交互作用应采用时间片轮转法;为了兼顾短作业和长时间等待的用户,应采用高响应比优先;为了使短作业、长作业及交互作业用户都比较满意,应采用多级反馈队列调度算法;为了使平均周转时间最短,应采用短作业优先算法。 6.下列调度方式和算法中,最容易引起进程长期等待的是抢占式静态优先权优先算法。 7.下列选项中,降低进程优先级的最合理的时机是进程的时间片用完。 8.支持多道程序设计的操作系统在运行过程中,不断地选择新进程运行来实现CPU的共享,但其中有新进程进入就绪队列不是引起操作系统选择新进程的直接原因。 9.从下面关于优先权大小的论述中,选择一条正确的论述。 (6)在动态优先权时,随着进程执行时间的增加,其优先权降低。 10.假设就绪队列中有10个进程,以时间片轮转方式进行进程调度,时间片大小为300ms,CPU进行进程切换要花费10ms,则系统开销所占的比率约为%3,若就绪队列中进程的个数增加到20个,其余条件不变,则系统开销所占的比率将

计算机操作系统课后习题答案第三章(第四版)

第三章处理机调度与死锁 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.在作业调度中应如何确定接纳多少个作业和接纳哪些作业? 【解】作业调度每次接纳进入内存的作业数,取决于多道程序度。应将哪些作业从外存调入内存,取决于采用的调度算法。最简单的是先来服务调度算法,较常用的是短作业优先调度算法和基于作业优先级的调度算法。 7.试说明低级调度的主要功能。 【解】(1)保存处理机的现场信息(2)按某种算法选取进程(3)把处理机分配给进程。 8、在抢占调度方式中,抢占的原则是什么? 【解】剥夺原则有:(1)时间片原则各进程按时间片运行,当一个时间片用完后,便停止该进程的执行而重新进行调度。这种原则适用于分时系统、大多数实时系统,以及要求较高的批处理系统。(2)优先权原则通常是对一些重要的和紧急的作业赋予较高的优先权。当这种作业到达时,如果其优先权比正在执行进程的优先权高,便停止正在执行的进程,将处理机分配给优先权高的进程,使之执行。(3)短作业(进程)优先原则当新到达的作业(进程)比正在执行的作业(进程)明显地短时,将剥夺长作业(进程)的执行,将处理机分配给短作业(进程),使之优先执行。 9、选择调度方式和调度算法时,应遵循的准则是什么? 【解】应遵循的准则有(1)面向用户的准则:周转时间短,响应时间快,截止时间的保证,优先权准则。(2)面向系统的准则:系统吞吐量高,处理机利用率好,各类资源的平衡利用。 10、在批处理系统、分时系统和实时系统中,各采用哪几种进程(作业)调度算法? 【解】 批处理系统:FCFS算法、最小优先数优先算法、抢占式最小优先数优先算法 2 分时系统:可剥夺调度、轮转调度 实时系统:时间片轮转调度算法、非抢占优先权调度算法、基于时钟中断抢占的优先权调度算法、立即抢占的优先权调度。 11、何谓静态和动态优先权?确定静态优先权的依据是什么? 【解】静态优先权是在创建进程时确定的,且在进程的整个运行期间保持不变。动态优先权是指,在创建进程时所赋予的优先权,是可以随进程的推进或随其等待时间的增加而改变的,以便获得更好的调度性能。确定静态优先权的依据是:(1)进程类型,通常系统进程的优先权高于一般用户进程的优先权。(2)进程对资源的需要。(3)用户要求,用户进程的紧迫程度及用户所付费用的多少来确定优先权的。 12、试比较FCFS和SPF两种进程调度算法。 【解】FCFS算法按照作业提交或进程变为就绪状态的先后次序,分派CPU。当前作业或进程占有CPU,直到执行完或阻塞,才让出CPU。在作业或进程唤醒后,并不立即恢复执行,通常等到当前作业或进程让出CPU。FCFS比较有利于长作业,而不利于短作业;有利于CPU繁忙的作业,而不利于I/O繁忙的作业。SPF有利于短进程调度,是从就绪队列中选出一估计运行时间最短的进

最短路径实验报告

一、实验目的 学习掌握图的存储结构 利用最短路径算法,通过java编程实现最短路径输出。 二、实验环境 Eclipse平台 三、实验过程 最短路径算法问题是计算机科学、运筹学、地理信息系统和交通诱导、导航系统等领域研究的一个热点。传统的最短路径算法主要有Floyd算法和Dijkstra算法。Floyd 算法用于计算所有结点之间的最短路径。Dijkstra算法则用于计算一个结点到其他所有结点的最短路径。本程序利用Dijkstra算法用java语言实现最短路径的可视化。 流程: 画无向邻接矩阵邻接矩阵初始化求取最短路径 Java文件如下 M ain.java 文件: import java.awt.BorderLayout; import java.awt.Color; import java.awt.FlowLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.ItemEvent; import java.awt.event.ItemListener; import java.util.StringTokenizer; import javax.swing.JButton; import javax.swing.JComboBox; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.border.TitledBorder; public class Main { public static void main(String args[]) { new UI("最短路径"); } } @SuppressWarnings("serial") class UI extends JFrame implements ActionListener, ItemListener { JFrame frame; JButton button;

计算机操作系统内存分配实验报告记录

计算机操作系统内存分配实验报告记录

————————————————————————————————作者:————————————————————————————————日期:

一、实验目的 熟悉主存的分配与回收。理解在不同的存储管理方式下,如何实现主存空间的分配与回收。掌握动态分区分配方式中的数据结构和分配算法及动态分区存储管理方式及其实现过程。 二、实验内容和要求 主存的分配和回收的实现是与主存储器的管理方式有关的。所谓分配,就是解决多道作业或多进程如何共享主存空间的问题。所谓回收,就是当作业运行完成时将作业或进程所占的主存空间归还给系统。 可变分区管理是指在处理作业过程中建立分区,使分区大小正好适合作业的需求,并且分区个数是可以调整的。当要装入一个作业时,根据作业需要的主存量查看是否有足够的空闲空间,若有,则按需要量分割一个分区分配给该作业;若无,则作业不能装入,作业等待。随着作业的装入、完成,主存空间被分成许多大大小小的分区,有的分区被作业占用,而有的分区是空闲的。 实验要求使用可变分区存储管理方式,分区分配中所用的数据结构采用空闲分区表和空闲分区链来进行,分区分配中所用的算法采用首次适应算法、最佳适应算法、最差适应算法三种算法来实现主存的分配与回收。同时,要求设计一个实用友好的用户界面,并显示分配与回收的过程。同时要求设计一个实用友好的用户界面,并显示分配与回收的过程。 三、实验主要仪器设备和材料 实验环境 硬件环境:PC或兼容机 软件环境:VC++ 6.0 四、实验原理及设计分析 某系统采用可变分区存储管理,在系统运行当然开始,假设初始状态下,可用的内存空间为640KB,存储器区被分为操作系统分区(40KB)和可给用户的空间区(600KB)。 (作业1 申请130KB、作业2 申请60KB、作业3 申请100KB 、作业2 释放 60KB 、作业4 申请 200KB、作业3释放100KB、作业1 释放130KB 、作业5申请140KB 、作业6申请60KB 、作业7申请50KB) 当作业1进入内存后,分给作业1(130KB),随着作业1、2、3的进入,分别分配60KB、100KB,经过一段时间的运行后,作业2运行完毕,释放所占内存。此时,作业4进入系统,要求分配200KB内存。作业3、1运行完毕,释放所占内存。此时又有作业5申请140KB,作业6申请60KB,作业7申请50KB。为它们进行主存分配和回收。 1、采用可变分区存储管理,使用空闲分区链实现主存分配和回收。 空闲分区链:使用链指针把所有的空闲分区链成一条链,为了实现对空闲分区的分配和链接,在每个分区的起始部分设置状态位、分区的大小和链接各个分区的前向指针,由状态位指示该分区是否分配出去了;同时,在分区尾部还设置有一后向指针,用来链接后面的分区;分区中间部分是用来存放作业的空闲内存空间,当该分区分配出去后,状态位就由“0”置为“1”。 设置一个内存空闲分区链,内存空间分区通过空闲分区链来管理,在进行内存分配时,系统优先使用空闲低端的空间。 设计一个空闲分区说明链,设计一个某时刻主存空间占用情况表,作为主存当前使用基础。初始化空间区和已分配区说明链的值,设计作业申请队列以及作业完成后释放顺序,实现主存的分配和回收。要求每次分配和回收后显示出空闲内存分区链的情况。把空闲区说明

循环首次适应的动态分区分配算法模拟

课程设计报告 课程设计题目:循环首次适应的动态分区分配算法模拟 专业:计算机科学与技术 班级:10204102 姓名:谱 学号: 10204102 指导教师:高小辉 2013年1月11 日

目录 一.循环首次适应算法 (3) 1. 概述 (3) 2.需求分析 (3) 二.实验指导 (4) 1.基本思想 (4) 2.数据结构 (4) 三.运行环境 (6) 四.流程图 (6) 五.循环首次适应算法代码 (5) 六.调试结果 (11) 七、总结 (14) 八.参考文献 (14)

一.循环首次适应算法 1.概述: 该算法是由首次适应算法演变而成的。在为进程分配内存空间时,不再是每次都从链首开始查找,而是从上次找到的空闲分区的下一个空闲分区开始查找,直至找到一个能满足要求的空闲分区,从中划出一块的请求大小相等的内存空间分配给作业。为实现该算法,应设置一起始查找指针,用于指示下一次起始查询的空闲分区,并采用循环查找方式,即如果最后一个(链尾)空闲分区的大小仍不能满足要求,则返回到第一个空闲分区,比较大小是否满足,找到后,应调整起始查询指针。 2. 需求分析 了解动态分区分配中使用的数据结构和分配算法,并进一步加深对动态分区存储管理方式及其实现过程的理解。采用首次适应算法的动态分区分配过程alloc()和回收过程free()。 空闲分区通过空闲分区链表来管理,在进行内存分配时,系统优先使用空闲区低端的空间,即每次分配内存空间是总是从低址部分开始进行循环,找到第一个合适的空间,便按作业所需分配的大小分配给作业。 作业完成时,需要释放作业所占空间,此时要考虑到四种情况: (1)回收区与插入点的前一个空闲分区相邻接。此时将二者合并,修改前一 分区的大小。 (2)回收区与插入点的后一空闲分区相邻接,将二者合并,用回收区的首址 作为新空闲区的首址。 (3)回收区同时与插入点的前后两个空闲分区相邻接,三者合并,使用前一空 闲分区的表项和首址。 (4)回收区单独存在。 二、实验指导 1.基本思想 动态分区是指系统不预先划分固定分区,而是在装入程序的时候划分内存区域,使得为程序分配的分区大小恰好等于该程序的需求量,且分区的个数是动态的。显然动态分区有较大的灵活性,较之固定分区能获得好的内存利用率。 2.数据结构 动态分区管理可以用两种数据结构实现,一种是已分配区表和空闲区表,也就是用预先定义好的系统空间来存放空间分配信息。

最短路径实验报告

云南财经大学信息学院学生综合性与设计性实验报告 (2013—2014 学年第 2 学期) 周次:第7周日期:2014年 4 月 17 日地点: 一、实验内容与目的 1.内容 查看“最短路径.swf”,选择熟悉的程序设计语言定义有向图,根据动画演示求取从有向图任一结点到其他结点的最短路径。 2.实验目的 了解最短路径的概论,掌握求最短路径的方法。 二、实验原理或技术路线(可使用流程图描述) 实验原理:(李燕妮负责设计,周丽琼负责编程) 图是由结点的有穷集合V和边的集合E组成,求最短路径用迪杰斯特拉算法: 1)适用条件&范围: a) 单源最短路径(从源点s到其它所有顶点v); b) 有向图&无向图(无向图可以看作(u,v),(v,u)同属于边集E的有向图) c) 所有边权非负(任取(i,j)∈E都有Wij≥0); 2)算法描述: a)初始化:dis[v]=maxint(v∈V,v≠s); dis[s]=0; pre[s]=s; S={s}; b)For i:=1 to n 1.取V-S中的一顶点u使得dis[u]=min{dis[v]|v∈V-S}

2.S=S+{u} 3.For V-S中每个顶点v do Relax(u,v,Wu,v) c)算法结束:dis[i]为s到i的最短距离;pre[i]为i的前驱节点 三、实验环境条件(使用的软件环境) Microsoft Visual C++6.0 四、实验方法、步骤(列出程序代码或操作过程) /*本程序的功能是求图中任意两点间的最短路径*/ #include #include #include #include #define ING 9999 typedef struct ArcCell{ int adj; /*顶点关系类型,用1表示相邻,0表示不相邻*/ }ArcCell,**AdjMatrix; /*邻接矩阵*/ typedef struct type{ char data[3]; /*顶点值*/ }VertexType; typedef struct{ VertexType *vexs; /*顶点向量*/ AdjMatrix arcs; /*邻接矩阵*/ int vexnum,arcnum; /*图的顶点数和边数*/ }MGraph; /*初始图*/ void InitGraph(MGraph *G) { int i,nu,mu; printf("\n输入顶点的个数和(边)弧的个数:"); scanf("%d %d",&nu,&mu); G->arcs=(ArcCell **)malloc(nu*sizeof(ArcCell *)); for(i=0;iarcs[i]=(ArcCell *)malloc(nu*sizeof(ArcCell)); G->vexs=(VertexType *)malloc(nu*sizeof(VertexType)); /*分配顶点空间*/ G->vexnum=nu;G->arcnum=mu; /*图的顶点数和边数*/ }

计算机操作系统内存分配实验报告

一、实验目的 熟悉主存的分配与回收。理解在不同的存储管理方式下.如何实现主存空间的分配与回收。掌握动态分区分配方式中的数据结构和分配算法及动态分区存储管理方式及其实现过程。 二、实验内容和要求 主存的分配和回收的实现是与主存储器的管理方式有关的。所谓分配.就是解决多道作业或多进程如何共享主存空间的问题。所谓回收.就是当作业运行完成时将作业或进程所占的主存空间归还给系统。 可变分区管理是指在处理作业过程中建立分区.使分区大小正好适合作业的需求.并且分区个数是可以调整的。当要装入一个作业时.根据作业需要的主存量查看是否有足够的空闲空间.若有.则按需要量分割一个分区分配给该作业;若无.则作业不能装入.作业等待。随着作业的装入、完成.主存空间被分成许多大大小小的分区.有的分区被作业占用.而有的分区是空闲的。 实验要求使用可变分区存储管理方式.分区分配中所用的数据结构采用空闲分区表和空闲分区链来进行.分区分配中所用的算法采用首次适应算法、最佳适应算法、最差适应算法三种算法来实现主存的分配与回收。同时.要求设计一个实用友好的用户界面.并显示分配与回收的过程。同时要求设计一个实用友好的用户界面,并显示分配与回收的过程。 三、实验主要仪器设备和材料 实验环境 硬件环境:PC或兼容机 软件环境:VC++ 6.0 四、实验原理及设计分析 某系统采用可变分区存储管理.在系统运行当然开始.假设初始状态下.可用的内存空间为640KB.存储器区被分为操作系统分区(40KB)和可给用户的空间区(600KB)。 (作业1 申请130KB、作业2 申请60KB、作业3 申请100KB 、作业2 释放 60KB 、作业4 申请 200KB、作业3释放100KB、作业1 释放130KB 、作业5申请140KB 、作业6申请60KB 、作业7申请50KB) 当作业1进入内存后.分给作业1(130KB).随着作业1、2、3的进入.分别分配60KB、100KB.经过一段时间的运行后.作业2运行完毕.释放所占内存。此时.作业4进入系统.要求分配200KB内存。作业3、1运行完毕.释放所占内存。此时又有作业5申请140KB.作业6申请60KB.作业7申请50KB。为它们进行主存分配和回收。 1、采用可变分区存储管理.使用空闲分区链实现主存分配和回收。 空闲分区链:使用链指针把所有的空闲分区链成一条链.为了实现对空闲分区的分配和链接.在每个分区的起始部分设置状态位、分区的大小和链接各个分区的前向指针.由状态位指示该分区是否分配出去了;同时.在分区尾部还设置有一后向指针.用来链接后面的分区;分区中间部分是用来存放作业的空闲内存空间.当该分区分配出去后.状态位就由“0”置为“1”。 设置一个内存空闲分区链.内存空间分区通过空闲分区链来管理.在进行内存分配时.系统优先使用空闲低端的空间。 设计一个空闲分区说明链.设计一个某时刻主存空间占用情况表.作为主存当前使用基础。初始化空间区和已分配区说明链的值.设计作业申请队列以及作业完成后释放顺序.实现主存的分配和回收。要求每次分配和回收后显示出空闲内存分区链的情况。把空闲区说明链的变化情况以及各作业的申请、释放情况显示打印出来。

最短路径_Dijkstra算法__实验报告

实验六:编程实现Dijkstra 算法求最短路问题. 1.需求分析: 首先让用户输入一个带权的有向图,输入时可通过一对一对输入存在弧的两个弧头与弧尾顶点以及弧上的权值从而输入整个有向图。用户输入一对对弧后,我们可以采用数组的形式来进行存储每个顶点之间的权值,最后由用户输入该有向图的源点(即每个最短路径的起点),要求源点必须为刚才输入的各顶点中的某一个,如果用户输入错误,程序要给出错误信息提示并退出程序。然后,我们可以设计一个Graph这样的类,将对关系的各种操作放入其中,然后我们在主函数中调运这个类就可以实现最短路问题的求解了。 2.概要设计: ①.构造一个新的类Graph: class Graph { private: int arcs[MAX][MAX],Path[MAX][MAX],D[MAX]; int arcnum,vexnum,weight,v0; Type a,b,vexs[MAX]; public: void Creat_Graph(); void Show_ShortestPath(); void ShortestPath_DIJ(); }; ②.结构化调用类中方法的主函数: int main() { Graph G; G.Creat_Graph(); G.ShortestPath_DIJ(); G.Show_ShortestPath(); return 0; } 3.代码实现: #include #define MAX 100 #define INFINITY INT_MAX enum BOOL{FALSE,TRUE}; using namespace std; template class Graph {

操作系统新鲜题库

1、静态重定位是在作业(2)中进行,而动态重定位是在作业(4)中进行。 (1) 编译过程(2)装入过程(3)修改过程(4)执行过程 2、由连续分配方式发展到分页存储管理方式的主要动力是(1);由分页系统发展到分段系统,进而发展到段页式系统的主要动力是(4)和(5) (1)提高内存利用率(2)提高系统吞吐量(3)满足用户需要(4)更好地满足多道程序运行的需要(5)既满足用户要求,又提高内存利用率 3、首次适应算法中,要求空闲区按(1)的顺序形成空闲分区链;最佳适应算法中,需要按照(3)顺序形成空闲分区链;最坏适应算法是(4)的顺序形成空闲链。 (1)空闲区的起始地址递增(2)空闲区起始地址递减(3)空闲区大小递增(4)空闲区大小递减 4、对外存交换区的管理应以(4)为主要目标,外存文件区的管理应以(2)为主要目标。(1)提供系统吞吐量(2)提供存储空间的利用率(3)降低存储费用(4)提供换入换出速度 5、虚拟存储器管理系统的基础是程序的局部性原理,那么,局部性理论的基本含义是(程序在执行过程中一个较短时期,所执行的指令地址和指令操作数地址分别局限于一定区域),局部性有两种表现形式,分别是(时间局部性)和(空间局部性)。 6、一个计算机系统中,虚拟存储器的最大容量是由(5)确定的,其实际容量是由(4)确定的。 (1)计算机字长(2)内存容量(3)硬盘容量(4)内存和硬盘交换区容量之和(5)计算机的地址结构 7、在请求调页系统中,内存分配有两种策略:(3)和(4),(3)的缺点是可能导致频繁地出现缺页中断而造成cpu利用率下降。 (1)首次适应(2)最佳适应(3)固定分配(4)可变分配 8、请求调页系统中有多种置换算法:选择最先进入内存的页面淘汰的算法称为(1);选择以后不再使用的页面予以淘汰的算法称为(2);选择自上次访问以来所经历时间最长的页面予以淘汰的算法称为(5);选择自某个时刻开始以来,访问次数最少的页面予以淘汰的算法称为(3); (1) FIFO (2)OPT (3)LRU (5)LFU 9、在环保护机构中,操作系统应该处于(1)内,一般应用程序应该处于(2)内,并遵循下面的规则:一个程序可以访问驻留在(5)中的数据;一个程序可以调用驻留在(4)中的服务。最高特权(2)最低特权(3)相同特权(4)相同特权和高特权(5)相同特权和低特权 10、 二:简答题 1、在动态分区分配中,有哪些分区分配算法?应如何将空闲分区链接为空闲分区链? 最先适配算法 循环最先适配算法 最佳适配算法

相关主题
文本预览
相关文档 最新文档