掌桥专利:专业的专利平台
掌桥专利
首页

一种Linux内核中加载和解压并行执行的方法

文献发布时间:2023-06-19 10:57:17


一种Linux内核中加载和解压并行执行的方法

技术领域

本发明涉及Linux系统领域,特别涉及一种Linux内核中加载和解压并行执行的方法。

背景技术

随着科学技术的不断发展,人们对计算机操作系统特别是Linux的应用越来越普遍。通常,Linux内核启动过程是通过引导程序先把FLASH中存储的zImage全部加载到RAM中,然后解压RAM中的zImage为vmLinux,最后执行vmLinux,其中的加载和解压是串行完成,如图1所示。因此,Linux内核启动过程中的加载和解压串行完成,相对于并行完成所需要的时间更长,不适应越来越快的工作节奏的要求。

目前,本领域的技术术语包括:

Linux:是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的操作系统。

操作系统内核:操作系统内核是指大多数操作系统的核心部分。它由操作系统中用于管理存储器、文件、外设和系统资源的那些部分组成。

zImage:Linux内核的压缩文件。

vmLinux:解压后的linux内核执行文件。vmlinux文件生成,这个文件必然是核心的linux内核,但是它是ELF格式的文件,其中包含了可执行的二进制指令(内核),调试信息,符号表等内容。vmlinux的生成是编译内核的关键,但是得到的vmlinux文件是不能烧写到flash中执行的。主要的问题是,没有一个环境来加载ELF格式的文件。而zImage则是可以加载执行的二进制代码。

FLASH:闪存是一种非易失性(Non-Volatile)内存,在没有电流供应的条件下也能够长久地保持数据,其存储特性相当于硬盘,这项特性正是闪存得以成为各类便携型数字设备的存储介质的基础。

RAM:也叫主存,是与CPU直接交换数据的内部存储器。它可以随时读写,而且速度很快,通常作为操作系统或其他正在运行中的程序的临时数据存储介质。

发明内容

为了解决上述问题,本发明的目的在于克服现有技术的不足,提供一种加快Linux内核启动的方法,缩短了linux内核加载解压过程的时间。

具体地,提供一种Linux内核中加载和解压并行执行的方法,包括以下步骤:

S1,确认在FLASH中存储的zImage被分解成n块,其中,n为正整数;

S2,加载第1块zlmage到RAM中;

S3,加载第2块zlmage到RAM中,且并行解压前一步骤中加载到RAM中的第1块zImage;

......以此类推,依次进行;

S(n+1),从FLASH中加载第n块zlmage到RAM中,且并行解压前一步骤中加载到RAM中的第n-1块zImage;

S(n+2),在RAM中解压第n块zlmage。

其中,加载的任务主要由FLASH控制器完成,解压的任务由CPU完成。

完成1块zImage的加载时间要大于解压时间。

在并行执行所需的时间是加载时间T1与第n块的解压时间T2-n的总和。

在所述步骤S1中,每块zImage可独立加载到RAM中。

在所述步骤S3中,并行解压前一步S2中加载到RAM中的第1块zImage,以vmLinux-1表示。

所述步骤S(n+1)中,并行解压前一步Sn中加载到RAM中的第n-1块zImange,以vmLinux-n-1表示。

所述步骤S(n+2)中,解压第n块zImage为vmLinux-n。

由此,本申请的优势在于:Linux内核启动过程中把加载和解压并行执行,从而缩短linux内核加载解压过程的时间。提高了工作效率,节约了时间。

附图说明

此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,并不构成对本发明的限定。

图1是本发明涉及的现有技术的示意框图。

图2是本发明涉及的FLASH和RAM加载和解压过程的示意框图。

图3是现有技术和本发明所用时间比较的示意流程图。

图4是本发明的具体方法的流程示意图。

具体实施方式

为了能够更清楚地理解本发明的技术内容及优点,现结合附图对本发明进行进一步的详细说明。

如图2所示,在FLASH中存储的zImage被分解成n块,每块可独立加载到RAM中,在加载完第1块后可并行解压之前加载到RAM的zImage块。加载和解压可以并行执行原因是加载的任务主要由FLASH控制器完成,解压的任务由CPU完成。

如图4所示,提供一种Linux内核中加载和解压并行执行的方法,包括以下步骤:

S1,确认在FLASH中存储的zImage被分解成n块,其中,n为正整数,且通常,n为大于2且不太大的正整数,例如,9或10;每块zImage可独立加载到RAM中;

S2,加载第1块zlmage到RAM中;

S3,加载第2块zlmage到RAM中,且并行解压前一步骤S2中加载到RAM中的第1块zImage;

......以此类推,依次进行;

S(n+1),从FLASH中加载第n块zlmage到RAM中,且并行解压前一步骤Sn中加载到RAM中的第n-1块zImange;

S(n+2),在RAM中解压第n块zlmage。

如图3所示,通常完成1块zImage的加载时间要大于解压时间,通过图3分析在并行执行所需的时间是加载时间T1与第n块的解压时间T2-n,而串行执行的时间是加载时间T1和解压时间T2,所以并行执行相对与串行执行可减少1到n-1块的解压时间。

所述步骤S3中,并行解压前一步S2中加载到RAM中的第1块zImage,用vmLinux-1表示。

所述步骤S(n+1)中,并行解压前一步Sn中加载到RAM中的第n-1块zImange,用vmLinux-n-1表示。

所述步骤S(n+2)中,解压第n块zImage为vmLinux-n。

以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明实施例可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

相关技术
  • 一种Linux内核中加载和解压并行执行的方法
  • 一种基于Linux内核的用户态自动探测及驱动加载3G-USB网卡方法
技术分类

06120112741022