连续存储管理方式的模拟与实现(固定分区)Java实现

连续存储管理方式的模拟与实现(固定分区)Java实现

一、算法思想

  1. 划分内存空间:将内存划分为若干个固定大小的分区,每个分区可以存放一个作业。这些分区的大小可以事先确定,也可以根据系统需求进行划分。
  2. 空闲分区表:维护一个空闲分区表,记录每个分区的起始地址、大小以及是否被占用。初始时,所有分区都被标记为空闲状态。
  3. 分配空闲分区:当作业到达时,操作系统会遍历空闲分区表,找到一个大小合适的空闲分区来分配给作业。分配策略可以是首次适应、最佳适应或最差适应等。
  4. 作业执行:作业被分配到分区后开始执行,占用该分区直至作业执行结束。
  5. 释放分区:作业执行结束后,释放该分区,并更新空闲分区表,使得其他作业可以使用该分区。

同时,固定分区的连续存储管理方式具有一些优点和缺点:

优点:

  1. 简单易实现:固定分区的实现相对简单,易于理解和实现。
  2. 低碎片化:固定分区可以减少内存碎片化的问题,因为分区大小是固定的,不会出现过多的小碎片。
  3. 避免外部碎片:由于分区大小固定,不会出现外部碎片的情况,可以更好地利用内存空间。

缺点:

  1. 内部碎片:固定分区可能会导致内部碎片的问题,即分配给作业的分区大小大于作业实际所需大小,造成一部分空间浪费。

  2. 限制作业大小:由于分区大小是固定的,可能会限制大作业的分配,导致某些作业无法被执行。

  3. 分区不灵活:固定分区的大小是固定的,无法根据实际作业需求进行动态调整,可能会导致资源浪费或无法满足需求。

    (后面会有可变分区避免这些缺点)

二、算法分析

模拟系统的分区块数(假设为5)

分区号 大小(KB) 起始(KB) 状态
1 12 20 0
2 32 32 0
3 64 64 0
4 128 128 0
5 100 256 0

状态为0,即为空闲状态,若为进程名则处于作业状态

三、数据结构

package cn.homyit;

import java.util.Arrays;
import java.util.Scanner;

/**
 * @param:
 * @description:
 * @author: Answer
 * @create:2024/4/8 18:27
 **/
public class Allocation {
   
    public String distinct;//分区号
    public int lengthAddress;//长度
    public String beginAddress;//起始地址
    public String statusWork;//状态

    //分区构造器
    public Allocation(String distinct, int lengthAddress, String beginAddress, String statusWork) {
   
        this.distinct = distinct;
        this.lengthAddress = lengthAddress;
        this.beginAddress = beginAddress;
        this.statusWork = statusWork;
    }

    //作业构造器


    public Allocation(int lengthAddress, String statusWork) {
   
        this.lengthAddress = lengthAddress;
        this.statusWork = statusWork;
    }

    //打印分区
    public static void print(Allocation
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值