首页 理论教育 操作系统实现之路-HCX文件的加载和执行

操作系统实现之路-HCX文件的加载和执行

时间:2023-10-21 理论教育 版权反馈
【摘要】:GUI Shell启动后,会在C:\HCGUIAPP目录下检索所有后缀是.HCX的文件。一旦发现一个HCX文件,GUI Shell就会读取该文件的相关信息,然后把这个应用程序显示在程序列表中。当前版本的Hello China主要检查HCX的签名是否正确,HCX的尺寸是否符合要求,操作系统的版本信息和HCX目标操作系统版本信息是否匹配等。如果检查通过,则操作系统会创建一个核心线程,以HCX文件的起始位置作为线程的入口点,启动应用程序的运行。Hello China的后续版本将在保持兼容的情况下解决该问题。

操作系统实现之路-HCX文件的加载和执行

GUI Shell启动后,会在C:\HCGUIAPP目录下检索所有后缀是.HCX(或小写的hcx)的文件。一旦发现一个HCX文件,GUI Shell就会读取该文件的相关信息(主要是应用程序图标和可视化名字),然后把这个应用程序显示在程序列表中。

一旦用户点击一个应用程序,该程序对应的HCX文件就会被Hello China读入内存,并做检查。当前版本的Hello China主要检查HCX的签名是否正确,HCX的尺寸是否符合要求,操作系统的版本信息和HCX目标操作系统版本信息是否匹配等。如果检查通过,则操作系统会创建一个核心线程,以HCX文件的起始位置作为线程的入口点,启动应用程序的运行。

需要说明的是,Hello China V1.75版本的应用程序加载功能比较简单,未实现复杂的应用程序加载功能(比如代码重新定位、加载资源等)。但由于Hello China定位于嵌入式应用,这种加载功能在大部分应用场景下足够应用了。下面是V1.75版本应用程序加载器的一些限制:(www.xing528.com)

(1)未实现可执行代码的重新定位,而是把所有应用程序都加载到内存地址0x1E0000开始处。这样就要求在编译应用程序的时候,必须设置其链接基地址为0x1E0000,否则会运行失败。

(2)限制应用程序的可执行部分(包括二进制代码和全局数据,不包括图标等辅助数据)不能大于64KB。这是由于在0x1E0000开始处,只有64KB的空闲空间可以使用。实际表明,这个限制也不是大问题,64KB的纯代码空间已经非常大,可以容纳数万行C语言代码的编译结果。如果应用程序的大小超过了64KB,可以通过修改内核的加载地址来解决该问题。Hello China的后续版本将在保持兼容的情况下解决该问题。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈