封皮(略)


一、进程控制

1.1目的

模拟操作系统内核对进程的控制和管理:包括进程的创建。

1.2内容

能够模拟进程的创建与撤销过程; 

对进程的状态进行全面的控制; 

按先进先出方式管理就绪和阻塞队列,按队列输出进程状态

 

1.3数据结构

链式结构:存储 PCB 使用了单向链表;

一维数组

 

1.4算法设计及流程图

黑龙江大学操作系统实验报告

System.out.print("杈撳叆杩涚▼鍚嶇О锛歕t");

PCB newPcb = new PCB(scanner.next());

System.out.print("杈撳叆杩涚▼澶у皬锛歕t");

newPcb.setSize(scanner.nextInt());

addMemory(newPcb);

readyheadPcb = LinkedList.insert(readyheadPcb, newPcb);

if (inServicePcb == null) {

   inServicePcb = readyheadPcb;

   readyheadPcb = readyheadPcb.getNextPcb();

}

sortMemory();

 

 

  

1.5 运行截图

黑龙江大学操作系统实验报告

 

 

 

 

 

 

 

 

1.6 小结

进程阻塞:一个进程正在等待某一事件发生(例如请求I/O而等待I/O完成等)而暂时仃止运行,这时即使把处理机分配给进程也无法运行,故称该进程处于阻塞状态。

进程挂起:由于IO的速度慢于CPU的运算速度,经常出现CPU等待I/O的情况。这时OS需要将主存中的进程对换至外存。在进程行为模式中需要增加一个新的挂起(suspend)状态。当内存中所有进程阻塞时,OS可将一进程置为挂起态并交换到外存,再调入另一个进程执行。

退出状态:OS从可执行进程组中释放出的进程,或者是因为它自身停止了,或者是因为某种原因被取消。

 

 

 

 

 

 

 

 

 

 

 

 

 


 

二、分页式存储器管理

2.1目的

1、熟练掌握分页式管理基本原理,并在实验过程中体现内存空间的分配与

回收、地址转换过程。

2、 掌握利用“位示图”管理内存与置换空间的分配与回收。

 

2.2内容

在实验 1 基础上实现分页式存储管理内存分配和地址转换过程。进一步实现请求分页式存储管理过程。

 

2.3数据结构

链表:PCB 链表

队列:FIFC,LRU

一维数组

 

2.4算法设计及流程图

黑龙江大学操作系统实验报告

 

public void changeBlockItem(int logicAdress, boolean methodFlag) {

   int goalBlock = blockCode[pageQueue.get(0)];

   if (methodFlag) {

       if (!isQueued(logicAdress)) {

          movingPriorityQueue(logicAdress, methodFlag);

          setBlockItem(logicAdress, goalBlock);

       }else {

          movingPriorityQueue(logicAdress, methodFlag);

       }

   }else {

       if (!isQueued(logicAdress)) {

          movingPriorityQueue(logicAdress, methodFlag);

          setBlockItem(logicAdress, goalBlock);

       }

   }

}

 

2.5 运行截图

黑龙江大学操作系统实验报告

 

 

2.6 小结

FIFO:FIFO队列不对报文进行分类,当报文进入接口的速度大于接口能发送的速度时,FIFO按报文到达接口的先后顺序让报文进入队列,同时,FIFO在队列的出口让报文按进队的顺序出队,先进的报文将先出队,后进的报文将后出队。


三、设备管理

3.1目的

在前面的实验基础上实现设备管理功能的模拟,主要包括通道和控制器的添加和删除,设备的添加、删除,设备的分配和回收。

 

3.2内容

实现设备、控制器以及通道的层次关系。 实现添加或删除新的设备、控制器或通道。 能够模拟设备的分配与回收流程;设备分配成功与否,进程都应进入阻塞状态。

 

3.3数据结构

树形结构:通道、设备、控制器

链式结构:单个拖到下的控制器等

一维数组

 

3.4算法设计及流程图

黑龙江大学操作系统实验报告

private void show() {

       // TODO Auto-generated method stub

       for (int i = 0; i < channelVector.size(); i++) {

              System.out.println(channelVector.get(i).getChannelName());

              channelVector.get(i).show();

       }

}

 

 

3.5 运行截图

黑龙江大学操作系统实验报告

黑龙江大学操作系统实验报告

 

3.6 小结

设备分配的基本任务是根据用户的I/O请求,为他们分配所需的设备。如果在I/O设备和CPU之间还存在设备控制器和通道。

 

 

 

 

 

 

 

 

 

 

 

 


 

 

 

四、文件与磁盘管理

4.1目的

1、熟练掌握树型目录结构的数据结构设计、存储以及遍历等管理过程。

2、掌握交互式命令的设计与使用。

3、了解磁盘文件的存取。

 

4.2内容

1、利用内存或外存存储结构实现文件系统的树型目录结构,并通过交互式

命令完成文件与目录管理。

2、至少提供如下命令(大小写都能识别):MD(创建空目录)、CD(切换当

前目录)、RD(删除空目录)、MK(创建文件)、DEL(删除文件)和 DIR(列出目

录信息)。

 

4.3数据结构

树形结构:各种文件、文件夹

 

4.4算法设计及流程图

黑龙江大学操作系统实验报告

 

public void tree(File file,int tab) {

    if (file.isFile()) {

        System.out.println("您给定的是一个文件"); // 判断给定目录是否是一个合法的目录,如果不是,输出提示

    } else {

        File[] fileLists = file.listFiles(); // 如果是目录,获取该目录下的内容集合

 

        for (int i = 0; i < fileLists.length; i++) { // 循环遍历这个集合内容

            for (int j = 0; j < tab; j++) {        //输出缩进

                System.out.print("|---");

            }               

           

            System.out.println(fileLists[i].getName());    //输出元素名称                

           

            if (fileLists[i].isDirectory()) {    //判断元素是不是一个目录

                tree(fileLists[i],tab+1);    //如果是目录,继续调用本方法来输出其子目录,因为是其子目录,所以缩进次数 + 1

            }

        }

    }

}

 

4.5 运行截图

黑龙江大学操作系统实验报告

黑龙江大学操作系统实验报告

 

4.6 小结

如果采用外存文件模拟方式,则需要结合 FAT 或 i-node 在数据结构中考

虑文件或目录的存储位置。同时还需解决虚盘文件的空闲空间管理、树

型目录结构的表示等问题。

 

 

 

 

 

 

 

 

 

 

 

 

 

 


 

 

 

   

五、进程调度

5.1目的

在前面实验基础上实现按先来先服务 FCFS、短作业优先 SJF以及时间片轮转算法调度进程的模拟过程。根据当前所设定调度算法,连续调度所有进程,并计算每个进程的周转时间和带权周转时间、所有进程的平均周转时间和平均带权周转时间。

5.2内容

在第 1-3 部分基础上扩展;支持 FCFS、短作业优先以及时间片调度算法。能够较方便地查看调度过程及平均周转时间、平均带权周转时间。 也可实现如下扩充要求。

5.3数据结构

二维数组:银行家算法

一维数组:银行家算法

链式存储:PCB

 

5.4算法设计及流程图

黑龙江大学操作系统实验报告

public void processWakeUp() {

   PCB savePcb = blockingheadPcb;

   if (blockingheadPcb != null) {

       blockingheadPcb = blockingheadPcb.getNextPcb();

       savePcb.setNextPcb(null);

   }else {

       System.out.println("当前无阻塞进程!");

   }

   readyheadPcb = LinkList.insert(readyheadPcb, savePcb);

   if (inServicePcb == null) {

       inServicePcb = readyheadPcb;

       readyheadPcb = readyheadPcb.getNextPcb();

   }

}

 

5.5 运行截图

黑龙江大学操作系统实验报告

黑龙江大学操作系统实验报告

 

5.6 小结

为实现银行家算法,每一个新进程在进入系统时,必须申明在运行过程中可能需要每种资源类型的最大单元数目,其数目不应超过系统所拥有的资源总量。当进程请求一组资源时,系统必须首先确定是否有足够的资源分配给该进程。若有,再进一步计算在将这些资源分配给进程后,是否会使系统处于不安全状态。如果不会,才将资源分配给它,否则让进程等待。

 

六、课程总结

(1)CPU:1.cpu是中央处理器,他是计算机的核心。2.cpu通过和寄存器,高速缓存,以及内存交互来执行程序。

(1)分页:由于内存需要装载硬盘中的数据,所以需要约定一个存储单元,操作系统把它叫做页,一个页一般长度是8kb或者16kb。

(2)进程进程是资源分配的资本单位,操作系统为进程开辟一段内存空间,内存空间从高位向低位,包括函数调用栈,变量以及其他区域。

(3)多进程:由于计算机是分时系统,所以多进程的使用不可避免,操作系统需要进行进程的切换,方法是内存指针指向新位置,保存原来的进程信息,同时刷新寄存器等数据。然后开始执行新的进程.

 

相关文章:

  • 2022-01-01
  • 2022-01-01
  • 2022-01-01
  • 2022-01-01
  • 2021-04-04
  • 2021-04-09
  • 2021-07-31
猜你喜欢
  • 2021-05-23
  • 2021-10-02
  • 2021-10-16
  • 2021-07-19
  • 2021-06-07
  • 2022-12-23
  • 2021-08-25
相关资源
相似解决方案