系统实现操作系统的一些算法,使用的是JavaWeb。
目录
1.算法
1.1进程调度算法
1.2磁盘调度算法
1.3请求分页页面置换算法
2.系统设计
2.1进程调度算法模拟设计
2.1.1先来先服务调度算法
2.1.2时间片轮转调度算法
2.1.3优先级调度算法
2.1.4多级反馈队列调度算法
2.1.5高响应比优先调度算法
2.1.6短作业优先调度算法
2.2磁盘调度算法模拟设计
2.2.1先来先服务调度算法
2.2.2最短寻道时间优先调度算法
2.2.3扫描调度算法
2.2.4循环扫描调度算法
2.3请求分页页面置换算法模拟设计
2.3.1先进先出页面置换算法
2.3.2最近最久未使用页面置换算法
2.3.3最少使用置换算法
2.3.4轮转置换算法
3.系统展示(部分)
3.1首页
3.2进程调度算法模拟实现
3.3盘调度算法模拟
3.4请求分页页面置换算法模拟
(1)算法核心思想
先来先服务(FCFS)调度算法是最简单的调度算法,该算法既可以用于作业调度,也可以用于进程调度。在作业调度中,系统将按照作业到达的先后次序来进行调度,算法每次从后备作业中选择最先进入队列的一个或几个作业,将它们调入内存,分配必要的资源,创建进程并放入就绪队列。
在进程调度中,FCFS调度算法每次从就绪队列中选择最先进入该队列的进程,将处理机分配给它,使之投入运行,直到完成或因某种原因而阻塞时才释放处理机。
(2)系统参数设计
(3)算法设计
系统对用户输入的进程数据,每一个进程的数据作为一个OSProcess类的对象,将其添加进ArrayList
(1)算法核心思想
时间片轮转调度算法主要适用于分时系统。在该算法中,系统将所有就绪进程按到达时间递增次序排成一个队列,进程调度程序总是选择就绪队列中第一个进程执行,即先来先服务的原则,但仅能运行一个时间片。在使用完一个时间片后,即使进程并未完成其运行,它也必须释放出处理机给下一个就绪的进程,而被剥夺的进程返回到就绪队列的末尾,等候再次运行。
在时间片轮转调度算法中,时间片的大小对系统性能的影响很大。如果时间片足够大,以至于所有进程都能在一个时间片内执行完毕,则该算法就退化为先来先服务调度算法。如果时间片很小,那么处理机将在进程间过于频繁切换,使处理机的开销增大,而真正运行用户进程的时间将减少。
(2)系统参数设计
(3)算法设计
先进行数据的预处理。系统设置一个队列作为就绪队列queue存放处于就绪状态的进程。设置一个参数t0表示当前时刻,初始值为第一个进程开始运行的时刻。将到达时间小于等于t0的进程按照到达时间递增次序进队列,选择队首的进程,给其分配处理机。如果该进程在一个时间片内未完成,则释放处理机,再次进入就绪队列,但如果此刻有新的进程进入就绪队列,则新进程优先进入,该进程后进入队列;若该进程在此时间片内完成,则进行标记完成。如果就绪队列为空时,处理机空转,时间递增,直到进程全部完成。
为详细直观的呈现模拟结果,系统除展示最终模拟结果外,还通过表格形式呈现详细的进程的时间片调度过程,另外,还通过动画的形式,分步演示进程的调度过程。
(1)算法核心思想
优先级调度又称优先权调度算法,该算法既可以用于作业调度,也可以用于进程调度,该算法中的优先级用于描述作业进行的紧迫程度。
在作业调度中,优先级调度算法每次从后备作业队列中选择优先级最高的一个或几个作业,将他们调入内存,分配必要的资源,创建进程并放入就绪队列。在进程调度中,优先级调度算法,每次从就绪队列中选择优先级最高的进程,将处理机分配给它们。
根据新的更高优先级进程能否抢占正在执行的进程,可将调度算法分为:
(2)系统参数设计
(3)算法设计
先进行数据的预处理。系统设置3个不同优先级就绪队列,优先级分别为1、2、3,1为最高优先级,3为最低优先级,系统采用剥夺式优先级调度。系统将进程数据按照优先级分别分配到三个队列,按照优先级顺序由高到低的顺序依次分配处理机执行。当低优先级进程运行过程中,如果有高优先级进程进入,则低优先级进程被中断,高优先级进程先运行,高优先级进程运行完成后,被中断的低优先级进程继续运行。
(1)算法核心思想
多级反馈队列调度算法是时间片轮转和优先级调度算法的综合发展。该算法的实现思想如下:
(2)系统参数设计
(3)算法设计
先进行数据的预处理。系统设置3个不同优先级就绪队列,优先级分别为1、2、3,1为最高优先级,3为最低优先级。所有进程到达后先进入最高优先级的队列q1,然后取q1中的队首进程,为其分配处理机,获得时间片大小为q。当时间片结束后,该进程仍未完成,则进程进入低一级优先级队列q2的队尾;当高优先级队列为空时,低优先级队列中的进程依次获得时间片长度为2*q;如果时间片结束,该进程进入最低一级优先级队列q3的队尾,运行时获得4*q的时间片长度,如果时间片结束后,该进程仍未完成,则进入当前优先级队列的队尾,等待运行。当低优先级进程运行时,有高优先级进程到达,低优先级进程被迫释放处理机,进入当前优先级队列的队尾,高优先级进程获得处理机运行。
(1)算法核心思想
高响应比优先调度算法时对先来先服务(FCFS)调度算法和短作业优先(SJF)调度算法的综合平衡,同时考虑每个作业的等待时间和估计的运行时间。在每次进行作业调度时,先计算后备作业队列每个作业的响应比,从中选出响应比最高的作业投入运行。
响应比的计算公式可描述为
响应比Rp=等待时间+要求服务时间要求服务时间
(2)系统参数设计
(3)算法设计
先进行数据的预处理。建立一个链表存储就绪队列中的进程,每次执行前,先计算队列中所有进程的响应比,选择响应比最高的进程,为其分配处理机,该进程运行完成后,时刻表更新,再重新计算就绪队列中各进程的响应比,继续运行。
(1)算法核心思想
短作业优先(SJF)算法是从后备队列中选择一个或若干个估计运行时间最短的作业,将它们调入内存运行。而短进程优先(SPF)调度算法,则是从就绪队列中选择一个估计运行时间最短的进程,将处理机分配给它,使之立即执行, 直到完成或发生某件事而阻塞时,才释放处理机。
(2)系统参数设计
(3)算法设计
先进行数据的预处理。对就绪队列中的进程按照执行时间的长度递增序列进行排序,选择执行时间最短的进程,为其分配处理机。新的进程到达后,进入就绪队列,每次计算,按照上述方式运行进程。
(1)算法核心思想
FCFS算法根据进程请求访问磁盘的先后顺序进行调度。具有公平性,但是算法性能往往接近于随机调度。
(2)系统参数设计
(3)算法设计
系统设置ArrayList
(1)算法核心思想
SSTF算法选择调度处理的磁道是与当前磁头所在磁道距离最近的磁道,以使每次的寻找时间最短。该算法不能保证平均寻找时间最小,还可能会产生“饥饿”现象。
(2)系统参数设计
(3)算法设计
系统设置ArrayList
(1)算法核心思想
SCAN算法在磁头当前移动方向上选择与当前磁头所在磁道距离最近的请求作为下一次服务的对象,实际上就是在最短寻找时间优先算法的基础上规定了磁头运动的方向。
(2)系统参数设计
(3)算法设计
系统设置ArrayList
(1)算法核心思想
在扫描算法的基础上规定磁头单向移动来提供服务回返时直接快速移动至起始端而不服务任何请求。
(2)系统参数设计
(3)算法设计
该算法与上述扫描调度算法类似,唯一不同的地方是磁针移动方向一直为磁道号递增方向,到达最外层磁道后,磁针直接返回到最内层需要访问的磁道,再次向磁道号递增方向进行扫描。
(1)算法核心思想
优先淘汰最早进入内存的页面,亦即在内存中驻留时间最久的页面。该算法可能会出现Belady现象。
(2)系统参数设计
(3)算法设计
系统设置两个ArrayList
(1)算法核心思想
该算法选择最近最长时间未访问过的页面予以淘汰,它认为过去一段时间内为访问过的页面,在最近的将来可能也不会被访问。该算法为每个页面设置一个访问字段,来记录页面自上次被访问以来所经历的时间,淘汰页面时选择现有页面中值最大的予以淘汰。
(2)系统参数设计
(3)算法设计
系统设置两个ArrayList
(1)算法核心思想
该算法为内存中的每个页面设置一个移位寄存器,用来记录该页面被访问的频率。页面置换时,选择在最近时期使用最少的页面作为淘汰页。
(2)系统参数设计
(3)算法设计
该算法与上述最近最久未使用算法类似,不同的是,在本算法中,参数p表示该页面调入页表后被访问的次数。当有新的页面被访问时,选择也表中被访问此次数最少(即p参数最小)的进程,将其换出。
(1)算法核心思想
该算法为每页设置移位访问位,再将内存中的所有页面都通过链接指针链接成一个循环队列。当某页被访问时,其访问为置1。置换算法在选择一页淘汰时,只需检查页的访问页。如果是0,就选择该页换出,若为1,则重新将它置0,暂不换出,给予该页第二次驻留内存的机会,再按FIFO算法检查下一个页面当检查到队列中的最后一个页面时,若其访问页为1,则返回到队首去检查第一个页面。
(2)系统参数设计
(3)算法设计
系统设置两个ArrayList
下附源代码:
链接:https://pan.baidu.com/s/1Q9XvA2OptaTObFfCa41PKA
提取码:bchw