memory.java

来自「可变分区存储模拟系统-为课程设计用的。操作系统」· Java 代码 · 共 63 行

JAVA
63
字号
public class Memory {
    private int[] memory;
    private static int FREE;


    private static int SIZE = 0; //???

    private static Memory instence = null;

    private Memory() {
        memory = new int[SIZE];
        for (int i = 0; i < SIZE; i++)
            memory[i] = 0;
        FREE = SIZE;
    }

    public static synchronized Memory getInstence() { //获取类的唯一实例
        if (instence == null)
            instence = new Memory();
        return instence;
    }

    public static void setSize(int size) { //设置内存初始大小,只能在生成实例前调用.
        if (instence == null)
            Memory.SIZE = size;
        else {
            getInstence().clear();
            Memory.SIZE = size;
            instence=new Memory();
        }
    }

    public int getFree() { //获得空闲单元总数
        return FREE;
    }

    public void fenpei(int start, int size) { //分配算法,FREE(空闲单元数)减少size,将分配出去的单元置1.
        for (int i = start; i <start+ size; i++) {
            this.memory[i] = 1;
        }
        FREE -= size;
    }

    public void huishou(int start, int size) { //根据开始点和大小回收内存,将回收段置0.
        for (int i = start; i <start+size; i++) {
            memory[i] = 0;
        }
        FREE += size;
    }

    public int point() {
        return SIZE - FREE;
    }

    public void clear() {
        for (int i = 0; i < SIZE; i++)
            memory[i] = 0;
        FREE = SIZE;
    }
    public int [] getMmy(){return memory;}
    public int get(int i){return memory[i];}
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?