操作系统作业

发布 2021-05-05 17:45:28 阅读 7480

可变分区管理方式下采用首次适应算法实现主存分配和**。

一、实验目的。

本实验模拟存储器分配**的管理策略,从而对存储器不同管理方式下的管理策略和技术有一定的掌握。

二、实验内容。

一个好的计算机系统不仅需要有一个足够容量的,存取速度高,稳定可靠的存储器,而且还应能合理使用这些存储器,当用户提出申请存储空间时,存储管理必须根据申请者的要求,按一定的策略,分析存储空间的使用情况,找出足够的空闲区域,即使的分配给申请者,当作业撤离活主动归还时,则存储管理相应的收回作业占用空间或归还部分存储空间。本实验设计模拟可变分区管理方式下采用一定的算法,实现存储器的分配和**。

三、实验分析。

在可变分区管理下采用最先适应算法实现主存的分配和采用拼接技术实现主存的**。

四、算法及说明。

1) 可变分区方式是按作业需要的存储空间的大小分割分区的,当装入一个作业时,根据作业申请需要的主存量查看是否有足够空间,若有则分割一个分区分配给该作业,若无,则该作业不能装入。最初整个空间没有建立许多个分区,只有一个大的分区(可用存储空间),当系统运行一段时间后,随着作业的分配和空间的**,整个空间将出现许多大小不等的分区,有的被作业占用,有的则因作业的退出而**可用的空闲分区,当一个作业需要调入时,为了能为其尽快的分配空间,存储管理必须采用一定的算法。用模块apply()实现。

2) 当一个作业撤离时,作业占用的区域应归还,为此采用相应的**算法,拼接法就是对于**区域插入空白链表的相应位置,并且看它是否相邻的空闲区域能否合成一个较大的空闲区,能则拼接合并。用模块reclaim()实现。

3) 本实验采用首次适应算法,在分配中,为了查找方便及组织内存,为此建立一个为分配区说明表,一个分配去双链表。存储管理采用首次适应算法,即从分配去说明表开始找起,选择第一个足以满足请求的空白分区,按申请的大小分配给作业。

五、用到的数据结构及模块说明。

int area[256] 0表示存储块未分配,1表示已分配,这个数组表示主存空间分配情况,每次分配空间的时候,需查找这个数组。

struct process

p1->size=need;

while(num<256)

while(area[num]==1)

num++;

j=numwhile(area[num]==0)

numif(need<=num-j)

for(k=j;karea[k]=1

printf("");

while(p2->front!=null)

if (p2->address==j

p1->address=j;

p2->address=k;

strcpy(p1->state,"占用。

p2->size-=p1->size;

p1->front=p2->front;

p2->front->next=p1;

if(need==num-j)

p1->next=p2->next;

p2->next->front=p1;

elsep1->next=p2;

p2->front=p1;

return 0;

p2=p2->front;

printf("内存不足!");

apply()模块实现的功能是为作业分配空间。查询area[256],找到连续的空闲区,如果大小大于需要分配的空间大小,则分配,否则继续查找;当找到适合的连续的空闲区时,如果空闲区大于需要的大小则空闲区**为两部分,一部分分给作业。为作业分配空间的同时建立记录和记录的链接。

int reclaim(process *head)

process *p1;

char rid[15];

int i;

p1=head->next;

printf("请输入要**的作业名:")

scanf("%s",rid);

while(p1!=null)

if(strcmp(p1->id,rid)==0)

p1=p1->next;

printf("没有此作业!");

reclaim()模块的功能是**作业占用的空间。输入作业名,查找链接表中有没有相同作业名的记录项,有则修改相应记录和area中数据,无则提示无此作业。释放作业占用的空间的同时,查看作业前后的空间是否是空闲区,如果是则合并成更大的空闲区,方法是修改链接表和对应的记录。

void view(process *head)

process *p1;

int num=0;

int i=0;

int j=0;

p1=head->next;

printf主存空间分配情况如下:

while(p1!=null)

printf(" 作业名:%s起始地址:%d 长度:%d 状态:%s",p1->id,p1->address,p1->size,p1->state);

操作系统 软件 操作系统作业

1 信号量的物理含义是什么?2 处于执行状态的进程若同时发生了下列两种情况 1 对某信号量执行p操作后,信号量的值变为负数。2 该进程的时间片到时产生中断。试问,该进程将由执行状态变迁为就绪态,还是阻塞态?简述理由。3 设有n个进程共享一临界区,对于下述情况,说明信号量的初值 含义,并用pv操作写出...

操作系统作业

4.程序并发执行时为什么会失去封闭性和可再现性?因为程序并发执行时,是多个程序共享系统中的各种资源,因而这些资源的状态是由多个程序来改变,致使程序的运行失去了封闭性。而程序一旦失去了封闭性也会导致其再失去可再现性。6.试从动态性,并发性和独立性上比较进程和程序?a.动态性是进程最基本的特性,可表现为...

操作系统作业

一 选择题。1 在进程的组成部分之中,进程在运行中不可修改的部分是 a 私用程序段b 共享程序段。c 数据段d 进程控制块。2 响应比高者优先作业调度算法是以计算时间和 来考虑的。a 输入时间 b 完成时间 c 周转时间 d 等待时间。3 在消息缓冲通信中,消息队列属于 资源。a 临界 b 共享 c...