APP下载

Linux 操作系统内核问题的探讨

2016-06-29段文超

电脑知识与技术 2016年13期
关键词:内核调度

段文超

摘要:Linux操作系统具有其他操作系统所不具备的优势,但是,在系统内核方面还存在一定的不足,其中包括系统内核调度算法问题和系统内核中基于优先级的可抢占式调度策略问题。针对这两个问题,该文提出了一些个人的建议。

关键词:Linux操作系统;内核;调度

中图分类号:TP316 文献标识码:A 文章编号:1009-3044(2016)13-0071-02

Linux操作系统在某些因素上面优越于其他的操作系统,例如Linux操作系统能够被免费试用。这些都给了用户很大的便利性,同时,也为赋予了自身很大的提升空间。为了能够对Linux操作系统内核问题有一个清晰的了解,本文主要是以黄义文的《Linux操作系统内核裁剪的分析》和杨瑞的《Linux操作系统内核分析与研究》为基础,在两篇文献当中,都对Linux操作系统内核问题进行了探讨,下边将以此为基础,本文将会对Linux操作系统的内核问题做一些探讨。

根据两篇文献来看,在这个操作系统当中,其最为核心的部分其实就是内核部分,从Linux操作系统的内核构成来看,主要是包括CPU、网络通信、文件系统等多个部分的内容。Linux操作系统包括多个子系统,而且,所有子系统的运作,都与Linux操作系统中的内核有一定的联系。因此,内核是整个Linux操作系统中最为关键的组成部分。Linux操作系统内核与其他的微内核系统有着很多的差异性,用户服务是微内核最为关注的内容,用户服务要求内核能够提供更加简洁和更高频率的服务,但是,这些服务的完成都需要微内核的支持。在Linux操作系统不断发展的情况下,微内核也随之不断地发展,从实际效果来看,Linux操作系统得到了不断地完善,在这样的情况下,微内核的应用效率得到了有效的提升。另外,Linux操作系统易于移植是其一个重要的特性,将Linux操作系统进行不同的内核编译,然后其就能够被用于各类系统当中,而且能够正常的运行。

目前来讲,Linux操作系统的内核主要有四个部分的内容:1)用户应用程序。这是Linux操作系统当中所有软件的一种集合。2)系统调用库,这是用户应用程序能够实现的唯一途径。3)Linux操作系统的内核。内核是一个系统的核心,主要是对硬件资源的访问,在系统启动并且运行的时候,可以对磁盘和内存中的文件进行有效的处理;4)硬件。这主要是指系统当中的物理设备。Linux操作系统能否被正常的运行,其实与系统本身有着重要的联系,而内核的扩展,系统调用接口的扩展等都是系统内核生存的重要内容。

从分析研究来看,Linux操作系统内核有这个几个方面的优势:1)抢占内核;2)能够更加有效的调度程序,在Linux2.6版本当中,就采用了O(1)算法,能够满足在高负荷工作条件下完成程序的调度。3)同步原型与共享内存。Linux系统内核采用互斥方法来实现资源任务的针对性,线程在继续执行时,就会丢掉消耗时间的系统程序调用。

针对Linux操作系统内核调度算法问题,在Linux2.6版当中,其采用了O(1)调度器,其的目的是为了能够提高Linux内核的实时性能,并且扩展CPU处理器的并行性。从实际的效果来看,保留了2.4版本中的给予优先级的调度、调度的公平性等优点,而且还呈现出很多其他优点:提高了SMP可扩展性、提高了SMP亲和度、优化计算密集型的批处理任务调度等。不过从实际的应用情况来看,其还存在着一定的问题。在Linux操作系统系统当中,其会将进程自动划分为进程和普通进程两类,然后通过多级轮转调度的算法,按照优先级的方式,逐步的实现这些进程的运行。Linux的优先级分配根据的是进程的价值,而不是进程的响应最终期限和资源占用时间,根本不能满足实时任务的要求。在本文的研究中,认为内核的调度算法是综合考虑最终期限、任务频率等在内的一种调度算法,其能够提升Linux内核的实用性。在算法应用方面,可以以EDF算法作为基础,其中最重要的一个环节是在相同优先级的进程当中,建立散列表,在这个表当中,可以根据程序的应用频率,做一个降序处理,在整个散列表当中,那些在第一位的进程,就是系统当中所有程序应用频率最高的程序,因此,在就要求在优先级层面,应当建立更多的进程。另外,在对这些优先级的程序做出处理的时候,首先就是查看是否存在这些进程,然后再根据散列表中的进程排序进行实时的调度。

针对Linux操作系统内核中基于优先级的可抢占式调度策略问题,在实际应用的调度过程中,有时可能会出现一种比较奇怪的情况:由于所有程序共用所有的资源,那些高优先级的任务可能会被低优先级的任务堵塞,反而让中优先级任务在高优先级任务之前得到执行,从而导致许多严重后果。这通常被称为优先级反转问题。在新的Linux的内核设计当中,并没有采用可抢占实时调度,因此,这并不能够对优先级反转问题进行解决,针对这个问题,可以通过优先级继承策略来进行解决。优先级继承的理念是:当优先级任务堵塞了另一个高优先级任务的情况下,其能够忽略自身的优先级,并且使其他的高优先级任务能够被执行,这样就能够将该任务所占据的资源释放出来。另外,在Linux操作系统的源代码当中,也应当做相应的修改,新增加的一个链表结构,保存所有对该资源表成功上锁的进程指针和进程原有的优先级,同时增加一项一记录,用来记录当前对资源表上锁的进程的最高优先级。当一个进程对资源表进行上锁的时候,那么这个进程的指针以及原有的优先级就应当被保存在资源表的上锁程序当中,如果这个进程的优先级高于资源表中所保存的最高优先级,那么就要更新进程记录。当进程申请一个资源表不成功的时候,如果该进程优先级大于资源表的最高优先级,则修改所有对该资源表进行上锁操作的进程的优先级,使它们等于该进程的优先级,同时更新资源表最高优先级记录,然后将进程插入到资源表的等待队列,如果不大于,则直接将进程插入到资源表的等待队列。当进程释放一个资源表时,若该进程的优先级小于或等于资源表记录的最高优先级,则用在该资源表中保存的该进程的原有优先级恢复其优先级,否则不需要恢复进程的优先级。

综上所述,在Linux操作系统内核的实际工作当中,虽然其本身具有很多的优势,但是,仍然存在很多的问题,其中最为典型的问题就是实时调度算法问题以及优先反转问题,针对这两个问题,本文提出了一些解决对策,这对于Linux系统内核的进一步改善有着重要的现实意义。

参考文献:

[1] 黄义文.Linux操作系统内核裁剪的分析[J].中国民航飞行学院学报,2010(3).

[2] 杨瑞.Linux操作系统内核分析与研究[J].计算机光盘软件与应用,2015(1).

猜你喜欢

内核调度
强化『高新』内核 打造农业『硅谷』
电力调度自动化中UPS电源的应用探讨
基于强化学习的时间触发通信调度方法
一种基于负载均衡的Kubernetes调度改进算法
虚拟机实时迁移调度算法
基于嵌入式Linux内核的自恢复设计
Linux内核mmap保护机制研究
枯期风电调度模式探讨
提升影视文化软实力的人文内核审视
具备节能减排内核的电力市场新趋势