Другая модель - так называемая "модель нитей ядра". В этой модели все нити видимы для ядра операционной системы. Поэтому планированием нитей занимается ядро, и все нити могут выполняться одновременно. Ядро планирует обработку нитей процессорами в соответствии с атрибутами планирования нитей. Эта модель реализована в AIX версии 4.2.
В AIX версии 4.3 реализована смешанная модель, сочетающая в себе производительность модели нитей библиотеки и параллелизм модели нитей ядра. В этой модели с каждым процессом связано несколько единиц планирования ядра (нитей ядра), причем для различных процессов число нитей ядра различно. Кроме того, с процессом может быть связано значительно большее число нитей библиотеки. Некоторые нити библиотеки можно связать с отдельными нитями ядра, в то время как другие нити библиотеки будут совместно использовать ресурсы оставшихся нитей ядра. Поэтому смешанная модель называется также моделью M:N. В этой модели у процесса может быть несколько параллельно обрабатываемых нитей; в частности, их число может совпадать с числом нитей ядра.
В 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 предусмотрены 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"