⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 freetable.java

📁 可变分区存储模拟系统-为课程设计用的。操作系统
💻 JAVA
字号:
import java.util.ArrayList;

class FreeTable {
    private ArrayList FS; //空闲分区表

    private static FreeTable instence = null;
    private FreeTable() {
        FS = new ArrayList();

    }

    public static synchronized FreeTable getInstence() { //获得空闲分区表实例
        if (instence == null)
            instence = new FreeTable();
        return instence;
    }

    public TableItem getItem(int i) { //返回第i个结点

        return (TableItem) FS.get(i);
    }

    public TableItem getByStart(int start) {
        TableItem temp = null;
        for (int i = 0; i < FS.size(); i++) {
            TableItem temp2 = (TableItem) FS.get(i);
            if (temp2.getStart() == start) {
                return temp2;
            }
        }
        return temp;
    }

    public TableItem getByEnd(int end) {
        TableItem temp = null;
        for (int i = 0; i < FS.size(); i++) {
            TableItem temp2 = (TableItem) FS.get(i);
            if (temp2.getStart() + temp2.getSize()-1 == end) {
                return temp2;
            }
        }
        return temp;
    }

    public void add(TableItem item) {
        if(FS.size()==0){FS.add(0,item);return;}
        int i;
        for(i=0;i<FS.size();i++){
            TableItem p=(TableItem)FS.get(i);
            if(p.getStart()>item.getStart()){
                FS.add(i,item);
                return;
            }
        }
        FS.add(item);
       // Memory.getInstence().huishou(item.getStart(), item.getSize());
    } //添加空闲分区

    public void removeByStart(TableItem item) {
        for (int i = 0; i < FS.size(); i++) {
            TableItem temp = (TableItem) FS.get(i);
            if (temp.getStart() == item.getStart()) {
                FS.remove(i);
               // Memory.getInstence().fenpei(temp.getStart(), temp.getSize());
            }
        }
    } //根据开始位置删除分区

    public int getBySize(int size) { //根据大小获得最适分区,返回分区开始
        int j = -1;
        int s = 0;
        if (FS.size() > 0) {
            for (int i = 0; i < FS.size(); i++) {
                if (((TableItem) FS.get(i)).getSize() >= size) {
                    if (s == 0) {
                        j = i;
                        s = ((TableItem) FS.get(i)).getSize();
                    } else if (((TableItem) FS.get(i)).getSize() < s) {
                        j = i;
                        s = ((TableItem) FS.get(i)).getSize();
                    }
                }
            }
            return j;
        } else
            return -1;
    }

    public void clear() {
        FS.clear();

    }
    public int size(){return FS.size();}

}

⌨️ 快捷键说明

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