[ Страница назад | Страница вперед | Содержание | Индекс | Библиотека | Юридическая информация | Поиск ]

Программирование: Разработка и отладка программ


Модель реализации нитей

Другая модель - так называемая "модель нитей ядра". В этой модели все нити видимы для ядра операционной системы. Поэтому планированием нитей занимается ядро, и все нити могут выполняться одновременно. Ядро планирует обработку нитей процессорами в соответствии с атрибутами планирования нитей. Эта модель реализована в AIX версии 4.2.

В AIX версии 4.3 реализована смешанная модель, сочетающая в себе производительность модели нитей библиотеки и параллелизм модели нитей ядра. В этой модели с каждым процессом связано несколько единиц планирования ядра (нитей ядра), причем для различных процессов число нитей ядра различно. Кроме того, с процессом может быть связано значительно большее число нитей библиотеки. Некоторые нити библиотеки можно связать с отдельными нитями ядра, в то время как другие нити библиотеки будут совместно использовать ресурсы оставшихся нитей ядра. Поэтому смешанная модель называется также моделью M:N. В этой модели у процесса может быть несколько параллельно обрабатываемых нитей; в частности, их число может совпадать с числом нитей ядра.


Защита нитей и библиотеки поддержки нитей в AIX

В AIX версии 4.2 существовали специальные версии некоторых библиотек, предназначенные для работы с приложениями с несколькими нитями. Имена этих библиотек были образованы из имен соответствующих стандартных библиотек добавлением суффикса "_r". Ниже перечислены эти библиотеки:

libc.a/libc_r.a libbsd.a/libbsd_r.a
libm.a/libm_r.a libnetsvc.a/libnetsvc_r.a
libs.a/libs_r.a libs2.a/libs2_r.a
libsvid.a/libsvid_r.a libtli.a/libtli_r.a
libxti.a/libxti_r.a

В AIX 4.3 необходимость в вариантах "_r" отпала. Теперь все приложения по умолчанию считаются приложениями с несколькими нитями, хотя в действительности у большинства из них нить только одна. Библиотеки с защитой нитей для версии 4.3:

libbsd.a libc.a libm.a
libsvid.a libtli.a libxti.a
libnetsvc.a

Варианты "_r" для совместимости с пользовательскими приложениями сохранены в виде ссылок на соответствующие библиотеки.


Поддержка нитей в различных версиях AIX

Для поддержки приложений с несколькими нитями в AIX предусмотрены API поддержки нитей, основанные на проектах и окончательном варианте стандарта IEE POSIX. AIX 4.3 полностью удовлетворяет стандарту IEEE POSIX для API нитей, номер стандарта IEEE POSIX 1003.1-1996.

Примечание: В AIX версии 4.2 поддержка нитей была реализована на уровне "проекта 4".

В AIX версии 4.3 реализована полная поддержка приложений, скомпилированных для AIX 4.2, а также поддержка компиляции приложений, написанных для "проекта 7", поскольку невозможно изменить исходный код этих приложений для достижения полной совместимости со стандартом.

Компиляция приложений с несколькими нитями

В AIX 4.2 были предусмотрены версии "_r" компилятора C, в которых поддерживались библиотеки и опции командной строки для создания приложений с несколькими нитями.

В AIX версии 4.3 для создания приложений с несколькими нитями больше не нужно вызывать компилятор версии "_r"


[ Страница назад | Страница вперед | Содержание | Индекс | Библиотека | Юридическая информация | Поиск ]