[发明专利]多核体系结构下ELF文件格式改造的方法无效

专利信息
申请号: 200810062344.X 申请日: 2008-05-09
公开(公告)号: CN101281470A 公开(公告)日: 2008-10-08
发明(设计)人: 陈天洲;张楠;胡威;蒋冠军;章铁飞;陈剑;项凌翔;王罡;陈度;冯德贵 申请(专利权)人: 浙江大学
主分类号: G06F9/445 分类号: G06F9/445;G06F9/45
代理公司: 杭州中成专利事务所有限公司 代理人: 唐银益
地址: 310027浙*** 国省代码: 浙江;33
权利要求书: 查看更多 说明书: 查看更多
摘要:
搜索关键词: 多核 体系结构 elf 文件格式 改造 方法
【说明书】:

技术领域

发明涉及嵌入式多核平台下的修改可执行文件格式以利用多核处理能力的问题,更具体的说,是涉及一种多核体系结构下的ELF文件格式改造。

背景技术

随着计算机体系结构的发展,可执行文件的格式也在不断地变化。最早的COM格式文件是完完全全的二进制文件,虽然简单,但是逐步流行页面存储管理模式的使其无法更好地适应程序设计的需要。因此出现了a.out等带有文件头和对文件内的段进行分页对齐的新的可执行文件结构,称为NMAGIC。由于人们对效率和空间的需求不断提升,NMAGIC的也在不断改进中逐步演变为QMAGIC和ZMAGIC。这些改进包括压缩文件头与代码段映射到第一个页面中以及同时映射最后一个代码段和第一个数据段等。

随着面向对象技术的发展,a.out逐渐不能适应程序设计的需要。因此出现了UNIX ELF可执行结构和Microsoft的PE文件结构。二者分别成为两大平台上的主流目标文件格式。除此之外,曾出现过的目标文件格式还有IBM 360和Intel/Microsoft的OMF格式。

在当今多核平台即将成为主流技术平台的时代中,目标文件格式的如果变化也面临着一次巨大的挑战。一方面是已有的目标文件格式比如ELF和PE已经成为许多主流平台上的默认目标文件格式,而且使用起来也得到了大家的认可,相对比较稳定和通用。另一方面是对多核平台如何进行高效利用的讨论。因此,能够适当地对目标文件格式进行修改,即保留其基本的稳定性和通用性,又能够使其更好地适应新的多核平台,充分发挥多核心的处理能力,是我们修改ELF文件格式的基本动机。

此外,由于现在在多核平台上的程序设计大多是交给编译器来处理详细的细节。而这些细节包括同步,任务划分,进程创建等,设计开发编译器的工作量就会非常的大,这也会使编译器的效率降低,使其无法专注在对程序的优化上面。另外,由于当今多种线程库的存在,编译器在启动新线程的时候需要考虑到不同平台中线程库的差异,因此必然要包括对多种线程库的支持,这会使编译器变的异常庞大。

所以,我们试图尽量采用了最少的改动,将一部分跟多进程创建的工作划分出来交给操作系统的装载器来完成,而装载器是无法智能地识别不任务中可以并行的部分的,所以修改ELF目标文件的格式就是唯一可以采取的方法。

发明内容

本发明的主要目的在于克服现有技术中的不足,提供一种多核体系结构下的ELF文件格式改造的方法。

为了解决上述技术问题,本发明是通过以下技术方案实现的。

(1)用户添加并行处理标志:

用户在所编写的程序中加上通知编译器可并行处理的标签,编译器将原本需要顺序执行的程序段分别独立出来,形成多个可并行执行而且对结果的正确性没有影响的独立的程序代码段;

(2)把独立的代码装载进ELF文件中不同的代码段中:

在ELF文件中设定多个代码段,将经过编译独立出来的程序代码分别写入ELF文件不同的代码段中,这种新的ELF文件格式下的多个代码段分别用.textn的方式来标识,n为序号,从1开始;目前的ELF文件格式中只有一个代码段。而这里我们将经过编译独立出来的程序代码分别写入ELF文件不同的代码段中,因此需要ELF文件中存在多个代码段。

(3)修改ELF文件头中的标志位,来标识新的ELF格式:

将ELF文件中的头16个字节的最后一个字节由0x00修改为0x01,用来代表采用新的ELF文件格式;

(4)增加新加的段在新线程中的起始地址:

修改ELF文件头中的头16个字节中第12,13,14,15个字节为新加的段在新线程中的起始地址;

(5)修改ELF格式的装载器:

对ELF格式的装载器的load_elf_binary函数进行修改,首先对ELF的格式进行判断看是否是新定义的格式;如果是,则利用系统调用启动一个新的进程,根据返回值的不同,父进程继续执行原先的装载过程,而子进程将新的代码段装载进入自己的进程空间,并通过start_thread将堆栈中的记录的程序计数器修改为新的入口地址,即可以使用默认地址或者ELF文件头中所记录的地址;

(6)多线程程序在不同核上的执行:

将子进程通过系统调用sched_setaffinity来设置该进程与不同CPU之间的亲缘程度,以调度该进程到特定的核上运行,充分利用多个核的处理能力;

(7)不同线程结果的统一由编译器在主线程中进行设置。

下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。

该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于浙江大学,未经浙江大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服

本文链接:http://www.vipzhuanli.com/pat/books/200810062344.X/2.html,转载请声明来源钻瓜专利网。

×

专利文献下载

说明:

1、专利原文基于中国国家知识产权局专利说明书;

2、支持发明专利 、实用新型专利、外观设计专利(升级中);

3、专利数据每周两次同步更新,支持Adobe PDF格式;

4、内容包括专利技术的结构示意图流程工艺图技术构造图

5、已全新升级为极速版,下载速度显著提升!欢迎使用!

请您登陆后,进行下载,点击【登陆】 【注册】

关于我们 寻求报道 投稿须知 广告合作 版权声明 网站地图 友情链接 企业标识 联系我们

钻瓜专利网在线咨询

周一至周五 9:00-18:00

咨询在线客服咨询在线客服
tel code back_top