操作系统常用算法

作业调度算法

介绍:又称为高级调度或长程调度,调度对象是作业。根据作业控制块(JCB)中的信息,审查系统能否满足用户作业的资源需求,以及按照一定的算法,从外存的后备队列中选取某些作业调入内存,并为他们创建进程、分配必要的资源。然后再将新创建的进程插入到就绪队列,准备执行。

先来先服务调度算法(FCFS)

按照各个作业进入系统的自然次序来调度作业。这种调度算法的优点是实现简单,公平。其缺点是没有考虑到系统中各种资源的综合使用情况,往往使短作业的用户不满意,因为短作业等待处理的时间可能比实际运行时间长得多。

短作业优先调度算法(SPF)

优先调度并处理短作业,所谓短是指作业的运行时间短。而在作业未投入运行时,并不能知道它实际的运行时间的长短,因此需要用户在提交作业时同时提交作业运行时间的估计值。 

最高响应比优先算法(HRN)

FCFS可能造成短作业用户不满,SPF可能使得长作业用户不满,于是提出HRN,选择响应比最高的作业运行。响应比=1+作业等待时间/作业处理时间。

基于优先数调度算法(HPF)

每一个作业规定一个表示该作业优先级别的整数,当需要将新的作业由输入井调入内存处理时,优先选择优先数最高的作业。

均衡调度算法,即多级队列调度算法

基本概念:

   作业周转时间(Ti)=完成时间(Tei)-提交时间(Tsi)

   作业平均周转时间(T)=周转时间/作业个数

   作业带权周转时间(Wi)=周转时间/运行时间

   响应比=(等待时间+运行时间)/运行时间

一个关于作业调度的考试题

页面置换算法(内存调度)

介绍:又称为中级调度或者内存调度,操作对象是内存中的页面和程序中的页面,主要功能是决定内存中页面的换入换出,提高程序的运行速度。

理想页面置换算法(OPT)

这是一种理想的算法,在实际中不可能实现。该算法的思想是:发生缺页时,选择以后永不使用或在最长时间内不再被访问的内存页面予以淘汰。

先进先出页面置换算法(FIFO) 

选择最先进入内存的页面予以淘汰。

最近最久未使用算法(LRU)

选择在最近一段时间内最久没有使用过的页,把它淘汰。 

最少使用算法(LFU) 

选择到当前时间为止被访问次数最少的页转换。

进程调度算法

介绍:又称为低级调度或短程调度,调度对象是进程,主要功能是决定就绪队列中的那个进程应获得处理机。

为了实现进程调度,应该具有如下三个基本机制 

① 排队器,为了提高进程调度的效率,事先应该将系统的所有就绪进程按照一定的方式排成一个或多个队列,以便调度程序能最快地找到它。 

② 分派器,分派器把由进程调度程序所选定的进程,从就绪队列中去除该进程,然后进行上下文切换,将处理机分配给它。

③ 上下文切换机制,当对处理机进行切换时,会发生两对上下文切换操作,在第一对上下文切换时,操作系统将保存当前进程的上下文,而装入分派程序的上下文,一遍分派程序运行,在第二对上下文切换时,将移出分派程序,而把新选进程的CPU现场信息装入到处理机的各个相应寄存器中。

先进先出算法(FIFO)

按照进程进入就绪队列的先后次序来选择。即每当进入进程调度,总是把就绪队列的队首进程投入运行。

时间片轮转算法(RR)

分时系统的一种调度算法。轮转的基本思想是,将CPU的处理时间划分成一个个的时间片,就绪队列中的进程轮流运行一个时间片。当时间片结束时,就强迫进程让出CPU,该进程进入就绪队列,等待下一次调度,同时,进程调度又去选择就绪队列中的一个进程,分配给它一个时间片,以投入运行。

最高优先级算法(HPF)

进程调度每次将处理机分配给具有最高优先级的就绪进程。最高优先级算法可与不同的CPU方式结合形成可抢占式最高优先级算法和不可抢占式最高优先级算法。

多级队列反馈法

几种调度算法的结合形式多级队列方式。

空闲分区分配算法

介绍:操作对象计算机内存,主要功能是决定内存的分配策略,减少内存浪费。

首先适应算法

当接到内存申请时,查找分区说明表,找到第一个满足申请长度的空闲区,将其分割并分配。此算法简单,可以快速做出分配决定。

最佳适应算法

当接到内存申请时,查找分区说明表,找到第一个能满足申请长度的最小空闲区,将其进行分割并分配。此算法最节约空间,因为它尽量不分割到大的空闲区,其缺点是可能会形成很多很小的空闲分区,称为“碎片”。

最坏适应算法

当接到内存申请时,查找分区说明表,找到能满足申请要求的最大的空闲区。该算法的优点是避免形成碎片,而缺点是分割了大的空闲区后,在遇到较大的程序申请内存时,无法满足的可能性较大。

磁盘调度

介绍:操作对象计算机磁盘存储区,主要功能是对磁头寻道进行优化,使对磁盘的寻道时间较少。

先来先服务(FCFS)

是按请求访问者的先后次序启动磁盘驱动器,而不考虑它们要访问的物理位置

最短寻道时间优先(SSTF)

让离当前磁道最近的请求访问者启动磁盘驱动器,即是让查找时间最短的那个作业先执行,而不考虑请求访问者到来的先后次序,这样就克服了先来先服务调度算法中磁臂移动过大的问题

扫描算法(SCAN)或电梯调度算法

总是从磁臂当前位置开始,沿磁臂的移动方向去选择离当前磁臂最近的那个柱面的访问者。如果沿磁臂的方向无请求访问时,就改变磁臂的移动方向。在这种调度方法下磁臂的移动类似于电梯的调度,所以它也称为电梯调度算法。

循环扫描算法(CSCAN)

循环扫描调度算法是在扫描算法的基础上改进的。磁臂改为单项移动,由外向里。当前位置开始沿磁臂的移动方向去选择离当前磁臂最近的哪个柱面的访问者。如果沿磁臂的方向无请求访问时,再回到最外,访问柱面号最小的作业请求

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
操作系统的内存分配算法操作系统中的一种重要的组成部分,它负责管理和分配计算机的内存资源,以优化内存的利用和提高统的性能。 其中,C语言是一种高级编程语言,常用统开发和应用程序编程。在操作系统的内存分配算法中,C语言可以用来实现算法的具体逻辑。 内存分配算法可分为静态分配和动态分配两种。静态分配是指在程序编译时,将所需的内存分配给程序。这种分配方式简单、高效,适用于内存需求固定的情况,但灵活性较差。动态分配是指在程序运行时根据需要动态地分配和释放内存。C语言中的内存分配函数malloc()和free()可以用来实现动态分配内存的功能。 常用的内存分配算法有首次适应算法、最佳适应算法和最坏适应算法等。首次适应算法是指在内存块中找到第一个能满足分配要求的块进行分配。最佳适应算法是指在内存块中找到能满足分配要求且剩余空间最小的块进行分配。最坏适应算法是指在内存块中找到能满足分配要求且剩余空间最大的块进行分配。 内存分配算法的选择应根据统的需求和资源情况来确定。不同的算法有不同的优缺点,如首次适应算法简单、执行效率高,但容易产生内存碎片;而最佳适应算法能更加合理地分配内存,但需要更多的时间和计算资源。 总之,操作系统的内存分配算法可以通过C语言实现,常用算法有静态分配和动态分配,以及首次适应、最佳适应和最坏适应等。选取适当的算法可以提高内存的利用率和统的性能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wangchuang2017

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值