IBM®
Перейти к тексту
    в России и странах СНГ [изменить]    Условия использования
 
 
   
    Главная страница    Продукты    Услуги и решения    Поддержка и загрузка    Мой профиль    
Перейти к тексту

developerWorks Россия  >  AIX и UNIX  >

Упрощённые расширения ядра в AIX Version 6

developerWorks
Опции документа

Опции документа, требующие включения JavaScript, не отображаются

Обсудить


Выскажите мнение об этой странице

Помогите нам улучшить содержание


Уровень сложности: средний

Брэд Кобб, ведущий консультант по техническим вопросам, Центр сотрудничества AIX, IBM
Стефан Пекем, старший инженер-программист, IBM

26.03.2009

В статье объясняется, почему нужно изменить приложения и среды разработки, которые поддерживают только 32‑битные расширения ядра, чтобы приспособить их для IBM AIX® Version 6. В системе AIX Version 6 присутствует только 64‑битное ядро. Ранее операционная система AIX предлагала и 32‑битное, и 64‑битное ядра, что требовало и 32‑битных и 64‑битных расширений. В данной статье предлагаются два лёгких решения, которые помогут произвести эти изменения и начать пожинать плоды упрощённого окружения ядра.

Общее положение

Операционная система IBM AIX® исторически поддерживала и 32‑битное, и 64‑битное ядра, требуя от разработчиков расширений ядра предоставлять 32‑ и 64‑битные расширения. Чтобы помочь разработчикам управлять множественными расширениями ядра, система AIX предоставляла dual‑mode архивацию, которая позволяла поместить как 32‑, так и 64‑битные расширения в один архив, чтобы во время загрузки системный загрузчик мог подключить соответствующее расширение.

Начиная с шестой версии операционная система AIX упрощает окружение ядра, реализуя только 64‑битное ядро. AIX Version 6 поддерживает бинарную совместимость с предыдущими версиями AIX, как установлено правилами AIX для бинарной совместимости (см. Resources).

Упрощённое окружение расширений ядра

С удалением 32‑битного ядра из шестой версии AIX усилия по разработке расширений ядра значительно сократились. У разработчиков расширений теперь не будет возможности собирать или даже тестировать 32‑битные расширения в AIX Version 6. Уменьшение количества окружений ядра означает лучшую отдачу от вложений, требование меньших ресурсов для разработки, сборки, тестирования, упаковки и поддержки расширений ядра.

Для лучшей поддержки 64‑битных расширений ядра в шестой версии AIX исключена поддержка 32‑битных расширений из библиотек и файлов импорта ядра. Заголовочный файл <sys/types.h> изменён таким образом, что если _KERNEL определен, а – 64BIT– – нет, то последует ошибка компиляции. Вместе с возможностью собирать только 64‑битные расширения ядра некоторые среды сборки расширений могут потребовать изменений для того чтобы избежать ошибок сборки.

Результаты перехода только на 64‑битное ядро

Упрощённое окружение ядра означает следующее:

  • Будут затронуты приложения, поддерживающие только 32‑битные расширения ядра.
  • Переход скажется на средах сборки приложений, предоставляющих 32‑ и 64‑битные расширения ядра, во время сборки расширений.

Приложения, требующие только 32‑битных расширений ядра, напрямую или косвенно через сторонний код, не смогут загрузить расширение ядра. В зависимости от логики приложения, невозможность загрузить расширение ядра может вызвать полную либо частичную неработоспособность приложения на AIX Version 6. Это не нарушение правил бинарной совместимости AIX, но фактически 32‑битные расширения ядра не поддерживаются.

Приложения, предоставляющие и 32‑, и 64‑битные расширения, требуют незначительных изменений в среде их сборки для AIX Version 6. С исключением 32‑битного ядра и среды сборки 32‑битных расширений ядра автоматизированные среды сборки, собирающие как 32‑битные, так и 64‑битные расширения, требуют модификации для приспособления к единственной 64‑битной среде сборки расширений ядра.

Поддержка расширений с двумя режимами (dual‑mode) не удаляется из AIX Version 6, а удаление 32‑битного ядра не влияет на бинарную совместимость. Собранные на AIX Версии 5 расширения dual‑mode ядра продолжают работать на AIX Version 6, но только в 64‑битном режиме.

В следующих разделах предлагаются два решения для перехода на AIX Version 6.

Решение I

Перед сборкой 32‑битного расширения ядра автоматизированные среды, собирающие и 32‑, и 64‑битные расширения, теперь должны проверять операционную систему. Достаточно провести такую простую проверку:

#!/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	

Приведённый алгоритм будет собирать 32‑ и 64‑битные расширения на AIX версии 5 и только 64‑битное расширение ядра для AIX Version 6.

Решение II

Make-файлы, поддерживающие сборку и 32‑, и 64‑битных расширений, можно модифицировать. Типичный Makefile для сборки двойного (dual-mode) расширения может иметь такие строки:

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

kext32: …
        ld –b32 –o $@ …

kext64: …
        ld –b64 –o $@ …

остальные строки


Это можно превратить в Makefile, собирающий расширение только для 64-битного ядра путём такого изменения:

kext: …
ld –b64 –o $@ …

остальные строки

С этим решением имя расширения ядра остаётся неизменным, так что существующий метод конфигурации продолжает работать без внесения изменений.

Итоги

Уменьшение числа ядер, поддерживаемых AIX Version 6, ведет к сокращению затрат на разработки как для IBM, так и для поставщиков расширений ядра. Снижение затрат и быстрый возврат вложений достигаются за счет сокращения необходимых ресурсов для разработки, сборки, тестирования, упаковки и поддержки множества ядер и их расширений.



Ресурсы

Научиться

Получить продукты и технологии
  • IBM trial software: ознакомительные версии ПО для разработчиков, которые можно загрузить с сайта developerWorks.(EN)

  • Quick links for AIX fixes: обновления AIX.(EN)

  • IBM Fix Central: этот сайт предоставляет исправления и обновления для программного обеспечения, оборудования и операционной системы конкретного компьютера. (EN)

Обсудить


Об авторах

Больше чем 10 лет Брэд Кобб (Brad Cobb) помогал поставщикам решений портировать, настраивать, отлаживать и улучшать их приложения в средах разработки IBM AIX. Кроме помощи поставщикам решений, Брэд регистрировал патенты, публиковал статьи и выступал на конференциях разработчиков. Вы можете написать ему на адрес bcobb@us.ibm.com.


Стефан Пекем (Stephen Peckham), IBM Corporation, 11400 Burnet Road, Austin, TX 78758. Доктор Пекем – старший инженер-программист в IBM Server Group, где он является членом команды разработчиков ядра AIX в течение последних 10 лет. Он работал над link editor, system loader и runtime linker, а сейчас улучшает производительность системы виртуальной памяти AIX. Пекем защитил докторскую диссертацию по информатике в Университете Cornell University.




Выскажите мнение об этой странице


Пожалуйста, найдите минутку и заполните форму, чтобы повысить уровень сервиса.



 


 


 


Поделиться этой статьей:

забобрить забобрить memori сохранить в memori




В начало


IBM, AIX и pSeries являются торговыми марками, принадлежащими International Business Machines Corporation в Соединенных Штатах и/или иных странах. Java и все связанные с Java торговые марки принадлежат Sun Microsystems, Inc. в Соединенных Штатах Америки и/или других странах. Linux является торговой маркой, принадлежащей Линусу Торвальдсу (Linus Torvalds), в Соединенных Штатах и/или иных странах. UNIX зарегистрированная торговая марка The Open Group в Соединенных Штатах Америки и других странах Другая компания, продукт или название услуги могут быть торговыми марками или знаками обслуживания, принадлежащими иным физическим или юридическим лицам.

IBM обладает всеми авторскими правами касательно информации, расположенной на developerWorks. Использование информации приведенной на этом ресурсе без явного письменного разрешения от IBM или первоначального автора запрещены. Если Вы желаете использовать информацию с developerWorks, пожалуйста воспользуйтесь регистрационной формой для того, чтобы связаться с нами запрос на использование материалов developerWorks Россия.
    IBM в России Конфиденциальность Контакты