Linux内核实时性的分析和研究

时间:2022-10-25 06:05:00

Linux内核实时性的分析和研究

摘要: Linux技术飞速发展,实时操作系统得到广泛应用,Linux的实时问题受到越来越多的关注。分析和研究Linux内核的作用,内核子系统,和内核在实时性应用方面的不足之处,及其改善方法。

关键词: Linux;内核;实时性

1 Linux内核的位置

在整个系统中,Linux内核的位置如图1所示。

1.1 进程

进程是现代操作系统的核心概念,用来描述程序的执行过程,是实现多道程序操作系统的基础,用户进程是程序的一次执行,同时也是操作系统进行资源分配的单位。

在应用程序中,操作系统调用程序,通过CPU调度,来完成用户任务。比如,程序中有一条读取数据的系统调用read(),但实际上读取操作的是操作系统的内核。故系统调用是内核代码的一部分。

在多道程序设计系统中,系统公式运行的程序共享系统资源,带来了对系统资源的竞争。操作系统必须对各种资源进行分配和调度。特别是在某一时刻多个程序同时执行时,产生了对CPU的竞争,必须进行CPU调度,因而提出了进程的概念。进程管理是操作系统中十分重要的功能。

1.2 内核子系统

操作系统中最重要的部分就是内核子系统,它直接管理硬盘文件的打开,关闭,启动,运行,及其在网络上文件的发送及接受。

2 Linux内核的作用

Linux内核是一个抽象了硬件,磁盘及文件系统等的软件。他提供了了一个虚拟或者扩展的计算机平台,从而使程序员可以避开许多硬件来实现细节。非专业用户可以把操作系统看成一个资源管理者,在Linux系统的帮助下,非专业用户可以以用自己的方法组织自己的数据,完成自己的工作,并与其他用户系统资源共享。

Linux系统支持多任务,而这种方式对用户进程是透明的。每一个用户进程运行时,好像只有自己的进程在运行并独享系统资源,同时使得各进程不互相干扰,安全运行。

3 Linux内核子系统

3.1 进程的调度

在多道程序设计环境中,系统同时创建多个进程。到计算机只有一个CPU时,每次只能让一个进程运行,其他进程或处于就绪状态或者阻塞状态。操作系统采用队列的方式管理这些进程,相同状态进程的PCB通过各自的队列指针链接在一起。系统为每一个队列设立一个列头指针,他总指向排在队列之首的进程PCB,排在队尾的进程PCB用一个特殊符号如“-1”来表示。为了执行用户程序,调度过程中不仅既要考虑用户关心的性能指标,更要考虑系统各部分的效率。希望处理器调度能使系统的吞吐量尽可能大、CPU利用率高,资源使用的负荷平衡等。在所有Linux内核子系统中,最重要的是进程调度子系统。由于所有其他子系统工作的完成都要建立进程,终止进程和恢复进程,因此,必须依靠进程调度子系统来予与协调。

3.2 存储管理

存储管理是对内存的管理。内存是处理器可以直接存取指令和数据的存储器,是进程得以运行的重要基础,也是计算机中的紧缺资源。近年来,随着硬件技术和生产水平的迅速发展,内存的成本迅速下降,容量不断扩大,但仍不能满足各种软件急剧增长的对存储空间的需求。因此,内存的有效管理和使用,仍是现代操作系统中十分重要的问题。

3.3 Linux中的虚拟文件系统

Linux除了支持ext2文件系统外,还可以支持其他文件系统。为此,必须将各种不同文件系统的操作和管理纳入到统一的框架中,使用户程序可以通过同一个文件系统界面对各种不同的文件进行操作。这样,用户可以不必关心不同文件系统的实现细节,使用系统提供的统一,抽象,虚拟的文件系统界面。这个统一的框架就是虚拟文件系统VFS。

在虚拟文件系统中,所有数据结构都在运行后建立,并在卸载时删除,只能存在于内存中,磁盘上没有存贮这些数据结构。如果只有VFS,系统是无法工作的。VFS必须与实际的文件系统如ext2,MSDOS,VFAT等结合起来。与VFS对应,称ext2,MSDOS,VFAT等为逻辑文件系统。VFS提供一个统一的借口,一个逻辑文件系统想得到Linux的支持,必须按照这个接口编写自己的操作函数,而将自己的细节对内核其他子系统掩藏起来。VFS与逻辑文件之间的关系如图2所示。

VFS只负责与设备无关的操作。虚拟文件系统这种抽象的功能层次,保证了Linux系统支持多种不同的逻辑文件系统,使所有文件系统都具有基本相同的外部表现,而且可以方便地相互访问。VFS对逻辑文件系统的数据结构进行抽象,以一种统一的数据结构进行处理。接受用户层的系统调用。支持多种逻辑文件系统之间的互相访问,接受内核其他子系统的操作请求。

3.4 输入/输出

输入输出子系统与硬件物理设备密切相关,主要包括设备驱动程序的各种中断机制。

3.5 进程间通信

IPC子系统支持在单个Linux系统中多种进程间通信机制,如信号、管道和共享内存等。

3.6 网络支持

网络子系统提供了对各种网络标准协议和各种网络硬件的支持。

4 Linux内核实时性缺陷

Linux系统最初是芬兰人Linus是手动编写的一个类“Minix”系统,那么 Linux系统自然就是一个分时系统,而针对实时性,Linux确有缺陷:

1)Linux内核本身是非抢占的。Linux分为两种模式:即内核态和用户态,当用户进程运行状态为用户态时,实时进程进行抢占,优先运行,故能够较好的完成任务。用户进程运行状态为内核态时,若系统此时调用程序,实时进程不能抢占进程。当运行的任务通过系统调用进入内核态时,具有更高优先级的进程却只有等待处于核心态的系统调用返回后方能执行,这就体现了Linux内核实时性的不足,导致优先级逆转。任务执行时间的实时性不确定,正是实时应用的缺陷。因此,从实质上来说,Linux内核是非抢占式的。

2)定时器方面的不足:① 时钟粒度粗糙。② 软定时器数量较多的时候,共享时钟定时器就会产生冲突。③ Linux虽然具有实时性,但是Linux内核的中断机制不能调节,如果中断可以在一个可调度整体内处理,用户就可以区分实时任务不同的紧迫度,分配不同的优先级,那就能缓解定时器的不足。④ 系统负荷不断增加。

3)调度机制和调度算法没有高效的实时任务:Linux能够提供较高的优先级给实时进程,但是却没有设置时间限制。

5 几种流行的Linux实时性能改善技术方案

一些程序员对于改进Linux内核的实时性做了研究,并提出了一些改善的技术方案。实时系统最主要的性能指标是检验操作系统是否可靠,系统必须在一定的时间内,对实时任务及事件做出响应,速度不是最主要的问题。由于Linux系统是面向大多数用户的,作为一个通用操作系统,响应时间自然应该满足任何实时的应用。因此研究Linux实时性能的改善技术很重要。因此,总结了以下几种技术方案进行对比研究。

1)双内核方法。既是说在本来有一个内核的基础上,再加上一个内核,这样一来,原先的Linux内核就让位给新增的Linux内核,让有实时要求的事件都在新增的内核之上工作。针对于双内核技术,目前,业内比较流行的就是RT-Linux。为了进一步达到改善Linux实时性的效果,让实时性任务在新增内核上实时工作,达到优先级最高,提供了以下几种方法:

① 直接对Linux核心进行修改。将Linux核心机制与中断机制失去关联,使核心的一切动作都不能引起中断,这样就保证了核心部分的硬实时性,这种方法将所有的中断指令都改为宏指令,保证了核心内部结构的完整。② 将RT-Linux中断机制改为one-shot模式。使RT-Linux的时钟粒度更细小。③ 实时调度。调度问题一直以来都是专业人员研究的焦点问题之一。这种调度算法各有优缺点。而RT-Linux没有使用死板的作法,它因地制宜地编写了自己的调度算法,将其加入到自己的系统中。④ 进程通信。在计算机系统中,由于进程使用的是同一个贮存系统,相互通信的进程之间设有公共内存。一组进程向该公共内存中写,另一组进程向该公共内存中读,通过这种方式实现两组进程之间大量数据量的通信。实时与非实时进程间的通信就是一个更加亟待的问题。常见的通信方式为信箱通信,消息缓冲通信以及管道通信。RT-Linux采用管道通信,共享内存。管道连接读进程和写进程以实现它们之间通信的共享文件。

2)兼容内核方法。这个方法就是含有一个兼容Linux内核,符合POSIX的API层的实时内核。但缺点是价格昂贵。

3)内核修改方法。其设计思想修改Linux内核源码。

6 总结与展望

本文分析总结Linux操作系统内核的实时性特性,分析了Linux实时性的不足,提出了几种当前计算机领域里流行的Linux实时性能改善技术方案。Linux作为免费并且开放源码的操作系统,还会越来越受到大学和研究机构的青睐。对于Linux实时性问题,应用的需要也会进一步促进Linux技术的发展,来更好地满足大多数用户的需求。

参考文献:

[1]张伟,网络操作系统应用(Linux),电子工业出版社,2007.

[2]董晓峰、顾新,关于Linux内核可抢占性的探究,人民邮电出版社,2010.

[3]肖永生,Linux操作系统的使用,清华大学出版社,2006.

[4]刘忆智,林海.Linux从入门到精通.机械工业出版社.

[5]Real-Time Linux[R/OL].http:///real_time_linux.

php.

作者简介:

张璐璐(1983-),女,天津人,天津大学研究生,天津城市建设管理职业技术学院教师,讲师,研究方向:计算机技术

上一篇:PLC控制系统的抗干扰措施 下一篇:轻武器新品鉴赏