摘要 | 第1-10页 |
ABSTRACT | 第10-11页 |
第一章 绪论 | 第11-15页 |
§1.1 引言 | 第11-12页 |
§1.2 课题背景 | 第12-13页 |
§1.3 课题研究的内容和完成的工作 | 第13页 |
§1.4 论文的组织 | 第13-15页 |
第二章 Kylin对Linux应用二进制兼容的总体结构 | 第15-24页 |
§2.1 执行文件的类型 | 第15-17页 |
·shell命令 | 第15-16页 |
·解释脚本程序 | 第16页 |
·可执行文件 | 第16-17页 |
§2.2 进程与内核的交互概述 | 第17-18页 |
·为进程创建初始执行环境 | 第17-18页 |
·进程执行过程中与内核的交互 | 第18页 |
§2.3 实现二进制兼容需要解决的问题及方法 | 第18-21页 |
·需要解决的问题 | 第18-19页 |
·模拟异地操作系统服务的方法 | 第19-21页 |
·两种不同的文件目录组织方式 | 第21页 |
§2.4 Kylin对Linux应用二进制兼容的总体结构 | 第21-24页 |
·总体结构 | 第21-22页 |
·实现步骤 | 第22页 |
·背景平台 | 第22-24页 |
第三章 Linux应用程序的识别和加载技术 | 第24-35页 |
§3.1 概述 | 第24-25页 |
·需要完成的任务 | 第24页 |
·设计思想 | 第24-25页 |
§3.2 可执行文件的段与进程的地址空间 | 第25-26页 |
§3.3 ELF文件格式简介 | 第26-30页 |
·文件格式概述 | 第26-27页 |
·ELF文件头 | 第27-28页 |
·e_ident | 第28-29页 |
·程序头表 | 第29页 |
·PT_NOTE段 | 第29-30页 |
§3.4 ELF文件加载器 | 第30-31页 |
·ELF文件的识别 | 第30页 |
·Linux ELF文件的识别 | 第30-31页 |
·建立进程的内存空间 | 第31页 |
§3.5 Linux ELF文件的堆栈修补过程 | 第31-35页 |
·用户态堆栈初始布局 | 第31-32页 |
·辅助信息表 | 第32-33页 |
·linux_fixup() | 第33-35页 |
第四章 Linux系统调用仿真技术 | 第35-44页 |
§4.1 概述 | 第35-36页 |
·系统调用及其实现过程 | 第35页 |
·需要解决的问题 | 第35-36页 |
§4.2 IA64的相关机制 | 第36-37页 |
·寄存器堆栈 | 第36页 |
·系统调用过程 | 第36-37页 |
§4.3 参数获取 | 第37页 |
§4.4 返回值的处理 | 第37-40页 |
·背景 | 第37-38页 |
·IA32平台上对返回值的处理 | 第38-39页 |
·IA64平台上对返回值的处理 | 第39-40页 |
§4.5 系统调用的仿真 | 第40-44页 |
·系统调用接口表 | 第40页 |
·系统调用服务例程的仿真 | 第40-44页 |
第五章 Linux信号机制模拟技术 | 第44-56页 |
§5.1 概述 | 第44-45页 |
·信号机制概述 | 第44-45页 |
·需要解决的问题 | 第45页 |
§5.2 消除对信号语义的约定存在的差异 | 第45-46页 |
·消除对信号含义的约定存在的差异 | 第45-46页 |
·消除异常事件对应的信号差异 | 第46页 |
§5.3 信号处理程序的启动与返回 | 第46-48页 |
·原理 | 第46-47页 |
·实现方法 | 第47-48页 |
·讨论兼容性时需要考虑的问题 | 第48页 |
§5.4 IA64上Kylin信号处理程序的启动和返回 | 第48-51页 |
·Sendsig() | 第48-50页 |
·Sigcode() | 第50页 |
·Sigreturn() | 第50-51页 |
§5.5 IA64上Linux信号处理程序的启动和返回 | 第51-52页 |
§5.6 信号类系统调用服务例程的仿真 | 第52-56页 |
·kill | 第52页 |
·rt_sigaction | 第52-54页 |
·rt_sigpending | 第54页 |
·rt_sigprocmask | 第54页 |
·rt_sigsuspend | 第54-56页 |
第六章 对可扩展性的支持 | 第56-59页 |
第七章 总结与展望 | 第59-60页 |
致谢 | 第60-61页 |
附录:攻读硕士期间发表的论文 | 第61-62页 |
参考文献 | 第62-63页 |