IBM®
跳转到主要内容
    中国 [选择]    使用条款
 
 
Select a scope:Search for:    
    首页    产品    服务与解决方案     支持与下载    个性化服务    
跳转到主要内容

developerWorks 中国  >  AIX and UNIX  >

AIX Version 6 中的简化内核扩展

developerWorks
文档选项

未显示需要 JavaScript 的文档选项


级别: 中级

Brad Cobb (bcobb@us.ibm.com), AIX Collaboration Center 高级技术顾问, IBM 
Stephen Peckham (speckham@us.ibm.com), 高级软件工程师, IBM 

2007 年 10 月 11 日

了解为什么需要更改仅提供 32 位内核扩展的应用程序和构建环境来适应 IBM AIX® Version 6。在 AIX Version 6 中,内核环境仅提供 64 位内核。以前,AIX 操作系统提供 32 位和 64 位内核,需要 32 位和 64 位内核扩展。本文将应用两个简单的解决方案帮助您进行转换,并介绍简化内核环境的好处。

您可以通过以下的资源了解更多的 AIX 6 的新特性:

背景知识

IBM AIX® 操作系统过去提供 32 位和 64 位内核,并要求内核扩展开发人员提供 32 位和 64 位内核扩展。为帮助开发人员管理多个内核扩展,AIX 操作系统提供了双模式 存档方法,该存档方法在同一存档文件中同时允许 32 位和 64 位内核扩展。在加载时,系统加载器加载相应位的内核扩展。

从 AIX Version 6 开始,AIX 操作系统通过 提供 64 位内核简化其内核环境。AIX Version 6 将根据 AIX 二进制兼容性所定义的方式维护与先前 AIX 版本的二进制兼容性(请参见参考资料)。

简化的内核扩展环境

由于 AIX Version 6 去除了 32 位内核,因此大大减少了内核扩展的开发工作。内核扩展开发人员将无法在 AIX Version 6 上构建甚至测试 32 位内核扩展。内核环境的减少意味着提高了投资回报率,同时减少了开发、构建、测试、打包和管理内核扩展所需的资源。

为支持 AIX Version 6 上的 64 位内核扩展,从内核库和内核导入文件删除了对构建 32 位内核扩展的支持。修改了 <sys/types.h> 头文件,这样,如果定义 _KERNEL,而不定义 __64BIT__,则会出现编译错误。由于仅能构建 64 位内核扩展,可能需要更改某些内核扩展构建环境来避免构建错误。

仅 64 位内核的效果

使用此简化的内核环境需要注意以下事项:

  • 将影响仅提供 32 位内核扩展的应用程序。
  • 在 AIX Version 6 上构建内核扩展时,将影响提供 32 位和 64 位内核扩展的应用程序构建环境。

直接或间接通过第三方代码要求仅支持 32 位内核扩展的应用程序将无法加载内核扩展。根据应用程序逻辑,无法加载内核扩展可能导致应用程序在 AIX Version 6 上无法使用或严重受阻。这不是 AIX 二进制兼容性语句的破坏,而是不支持 32 位内核扩展。

提供 32 位和 64 位内核扩展的应用程序需要在 AIX Version 6 构建环境中稍微进行更改。由于在 AIX Version 6 中去除了 32 位内核和 32 位内核扩展构建环境,因此需要修改构建 32 位和 64 位内核扩展的自动化构建环境,以适应单一的 64 位内核扩展环境。

没有从 AIX Version 6 去除对双模式内核扩展的支持,删除 32 位内核并不影响二进制兼容性。在 AIX Version 5 上构建的双模式内核扩展可继续在 AIX Version 6 上运行,但仅能在 64 位模式下运行。

下面的部分提供了转换到 AIX Version 6 的两个解决方案。

解决方案 I

现在,构建 32 位和 64 位内核扩展的自动化构建环境在构建 32 位内核扩展之前必须检查操作系统版本。简单检查一下即可,如:

#!/bin/ksh
Version='uname –v'
if [ $Version –gt  "5" ]
then
	# Build 64-bit kernel extension only
else
	# Build both 32-bit and 64-bit kernel extensions
fi	

上面的逻辑将在 AIX Version 5 上构建 32 位和 64 位内核扩展,而对于 AIX Version 6,仅构建 64 位内核扩展。

解决方案 II

可以修改支持构建 32 位和 64 位内核扩展的 Makefile。用于构建双模式内核扩展的典型 Makefile 文件包含的行类似于以下代码:

kext: kext32 kext64:
        ar –X32_64 –crf kext kext32 kext64

kext32: …
        ld –b32 –o $@ …

kext64: …
        ld –b64 –o $@ …

other-makefile-lines


可以将此内容转换为 Makefile 文件,并通过修改为以下行构建仅 64 位内核扩展:

kext: …
ld –b64 –o $@ …

other-makefile-lines

使用此解决方案,内核扩展的名称没有改变,因此无需进行修改,可以继续使用现有的配置方法。

总结

减少 AIX Version 6 支持的内核数可以为 IBM 和内核扩展提供商降低开发成本。开发、构建、测试、打包和维护多个内核和内核扩展的资源减少进而可以带来成本的节约和投资回报的提高。

共享本文……

digg 请 Digg 这个故事
del.icio.u 发布到 del.icio.u
Slashdot Slashdot 一下!



参考资料

学习

获得产品和技术
  • IBM 试用软件:从 developerWorks 可直接下载这些试用软件,您可以利用它们开发您的下一个项目。

  • Quick links for AIX fixes:获得 AIX 更新。

  • IBM 修复中心:这个站点为您的系统中的软件、硬件和操作系统提供了修复程序和更新。

讨论


作者简介

Brad 十多年来一直帮助解决方案提供者在 IBM AIX 环境中移植、优化、测试和增强他们的应用程序。除了帮助解决方案提供者以外,Brad 还喜欢申请各种专利、发表文章以及在开发人员会议上进行演讲。您可以通过 bcobb@us.ibm.com 与他联系。


Stephen Peckham 供职于 IBM(地址是:11400 Burnet Road, Austin, TX 78758),Peckham 博士是 IBM Server Group 的一位高级软件工程师,过去 10 年来,他一直是 AIX 内核开发团队的成员。近年来,他一直从事链接编辑器、系统加载器和运行时链接器的工作,当前在专门研究 AIX 虚拟内存系统的性能改进。Peckham 博士拥有康纳尔大学计算机科学博士学位。




对本文的评价

太差! (1)
需提高 (2)
一般;尚可 (3)
好文章 (4)
真棒!(5)

建议?




回页首


IBM、AIX 和 pSeries 是 International Business Machines Corporation 在美国和/或其他国家/地区的注册商标。 Java 和所有基于 Java 的商标都是 Sun Microsystems, Inc. 在美国和/或其他国家/地区的商标。 Linux 是 Linus Torvalds 在美国和/或其他国家/地区的注册商标。 UNIX 是 The Open Group 在美国和其他国家/地区的注册商标。 其他公司、产品或服务的名称可能是其他公司的商标或服务标志。

IBM 公司保留在 developerWorks 网站上发表的内容的著作权。未经IBM公司或原始作者的书面明确许可,请勿转载。如果您希望转载,请通过 提交转载请求表单 联系我们的编辑团队。
    关于 IBM 隐私条约 联系 IBM 使用条款