操作系统-最坏适应算法

这个博客介绍了操作系统中最坏适应算法的实现,包括内存分配、回收和显示内存状态的功能。通过创建两个链表分别表示进程分配表和空闲区排序表,实现了根据用户请求动态分配内存,并在空闲区不足时给出提示。
摘要由CSDN通过智能技术生成

最坏适应算法也可初始化俩张表,一张表是进程分配表,一张是空闲区按从小到大的排序表,每次分配的时候只需判断空闲区的尾指针是否满足要求,满足则分配,不满足则输出内存不够请等待

代码

#include<iostream>
#include<stdlib.h>
#include<stdio.h>
#define Free 0 //空闲状态
#define Busy 1 //已用状态
#define OK 1    //完成
#define ERROR 0 //出错
typedef int Status;
int flag;
/**
 *设置空闲块
 *有三个标识符
 *address起始地址
 *size空闲块大小
 *state空闲块状态
 */
typedef struct freearea
{
    int address;//空闲区地址
    int size;//作业空间大小
    int state;//空闲去状态
} ElemType;
/**
 *定义俩张表分别用于存放内存分配表和空闲表
 *内存分配表为*DuLinkList2,空闲表为*DuLinkList1
 */
typedef struct DuLNode
{
    ElemType data;
    struct DuLNode *prior;
    struct DuLNode *next;
} DuLNode, *DuLinkList1,*DuLinkList2;
/**
 *block_first
 *链表首地址
 *block_last
 *链表尾地址
 */
DuLinkList1 block_first1;
DuLinkList1 block_last1;
DuLinkList2 block_first2;
DuLinkList2 block_last2;
void alloc(int);
void free(int);
Status worst(int);
void show();
/**
 *进程分配表DuLinkList2的初始化
 */
void initblock()
{
    block_first2=(DuLinkList2)malloc(sizeof(DuLNode));
    block_last2=(DuLinkList2)malloc(sizeof(DuLNode));
    block_first2->prior=NULL;
    block_first2->next=block_last2;
    block_last2->prior=block_first2;
    block_last2->next=NULL;
}
/**
 *初始化空闲表DuLinkList1
 *传入用户需设置的内存大小MAX_length
 */
void initblock(int MAX_length)
{
    block_first1=(DuLinkList1)malloc(sizeof(DuLNode));
    block_last1=(DuLinkList1)malloc(sizeof(DuLNode));
    block_first1->prior=NULL;
    block_first1->next=block_last1;
    block_last1->prior=block_first1;
    block_last1->

  • 3
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值