Code Monkey home page Code Monkey logo

os-by-java's Introduction

OS-by-Java

计算机操作系统实验课 Java编写

实验一 —— 按照优先数进行处理器调度

  • 一共分了3个包,code包是主要代码,main包是主函数,test包用于测试.
  • code包下
    • Process类属性即进程的基本属性,如name,runningTime,priorty.
    • CPU类是此项目的重点类,它有一个线性表用于存放所有的进程,addProcess()用于添加进程,但要根据优先度进行排序,接着就是调度schedule()方法,基本操作就是将就绪队列最前面的进程运行时间和优先度分别递减,如果运行结束就抽出队列.
  • Main包下
    • 主函数主要通过获得键盘输入作为进程的参数创建所需进程,接着while循环进行调度,直到队列为空为止。中间使用线程进行时间等待,以不至于一开始就打印出所有结果
  • Test包
    • 需要Juint引入测试框架
  • Utiles类
    • 一个静态工具类,其中有获取键盘参数创建进程的方法.

实验二 —— 首次适应算法分区管理

  • 本实验一共分为3个包,分别是code,main,test
  • code包
    • Memory类 重要属性有分区块列表,用于保存分区块;方法有排序方法(),把分区块列表按照首地址排序
    • MemoryBlock类 重要属性有start,end,length,task,isUsed,其中task属性用于保存此分区块属于那个任务,isUsed标记是否是空分区块 重要方法是实现Comparable接口的方法,按照start属性排序
    • MemoryOperator类 无重要属性,重要方法有添加任务申请分区,撤销任务擦除分区,合并邻近分区,其中撤销任务擦除分区()会涉及调用合并邻近分区。另外方法是打印内存的分区情况
    • Task类 重要属性只有分区大小
  • main包
    • 只有主类和主函数,通过键盘获取整数输入,使用while死循环,swich实现题目要求逻辑
  • test包
    • 需要引入Juint测试框架,用于测试编写中的类

实验三 —— 用位示图管理磁盘存储空间

  • 本实验一共分为3个包,分别是code,main,test
  • code包
    • File类
      • 指申请向磁盘中存入的文件。
      • 重要属性有length和startNumber,分别指这个文件的长度以及它存入磁盘的物理启始地址
    • FreeBlock类
      • 指磁盘拥有的连续空闲物理块。因为存储和释放会产生碎片,因此空闲物理块不会连续,因此抽象成FreeBlock类
      • 重要属性有start,length
      • 重要方法是实现Comparable接口的方法,按照start属性排序
    • Disk类
      • 指磁盘
      • 属性bitMap,是一个8*8二维数组,用于表示磁盘的位示图。
      • 属性files,是一个<Interger,File>字典,用于记录已经存入磁盘的文件。释放文件时可根据字典的键锁定文件而进行释放。
      • 属性freeBlocks,是一个线性表,记录目前磁盘的连续空间物理块,初始时为一个64单位长度的整块,后面会切分而使数量变多。
      • 方法askSpace(int length),输入想要申请的空间大小而进行空间申请。逻辑是寻找大小足够的低位的freeBlock,并对这个空闲块进行划分。并向字典中加入当前这个文件。
      • 方法freeSpace(int fileNumber),根据序号通过字典锁定文件而将其释放。会涉及相邻空闲物理块的合并。
      • 方法changeBitmap(int start,int end,boolean isUsed),将bitMap设置成1或0,代码比较难写,分了三种情况,逻辑比较乱。
    • Task类 重要属性只有分区大小
  • main包
    • 只有主类和主函数,通过键盘获取整数输入,使用while死循环,swich实现题目要求逻辑
  • test包
    • 需要引入Juint测试框架,用于测试编写中的类

实验四 —— 进程创建

  • 只有一个main函数。根据fork函数的返回值来判断是父进程还是子进程,从而执行相应的操作
  • 操系统为deepin OS, IDE为Clion

实验五 —— 模拟银行家算法

  • 本实验一共分为3个包,分别是code,main,test
  • code包
    • BankerAlgorithm类
      • 属性alocation二维数组,用于保存每个进程已分配的各种资源的数目。
      • 属性need二维数组,用于保存每个进程还需要的各种资源的数目。
      • 属性work一维数组,用于验证是否安全,假设某个进程执行结束,则收回分配的资源,类似拓扑结构判断是否死锁。
      • 方法askForResources(int id, int[] request),输入进程序号以及请求资源的数目。返回是否请求成功。
      • 方法public boolean isSafe(),用于判断分配资源后是否会出现死锁。在askForResources(int id, int[] request)中嵌套使用,作为其方法体一部分。
    • Utils类
      • 一个静态工具类。主要实现一维和二维数组的相加相减数组的格式化输出从键盘获取输入确定askForResources(int id, int[] request)的参数
  • main包
    • 只有主类和主函数,通过键盘获取整数输入,按照示例实现算法演示
  • test包
    • 需要引入Juint测试框架,用于测试编写中的类。

os-by-java's People

Contributors

ran-mori avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.