Введение

K42 – это прекращенная разработка операционной системы (ОС) с открытым исходным кодом, предназначенная для кешированных 64-битных многопроцессорных систем. Она была разработана преимущественно в Исследовательском центре IBM имени Томаса Дж. Уотсона в сотрудничестве с Университетом Торонто и Университетом Нью-Мексико. Основной задачей этой ОС являлось решение проблем производительности и масштабируемости системного программного обеспечения на крупномасштабных многопроцессорных компьютерах с общей памятью и неравномерным временем доступа к памяти (NUMA). K42 использует архитектуру микроядра, в отличие от традиционной монолитной архитектуры ядра. K42 состоит из небольшого компонента обработки исключений, выполняющего роль микроядра, быстрого механизма межпроцессного взаимодействия (IPC), известного как защищенный вызов процедуры (PPC), и серверов для большинства других компонентов операционной системы. Эти серверы функционируют в отдельных адресных пространствах и используют быстрый механизм IPC для связи с микроядром и другими серверами.

История

Ядро K42 базируется на операционной системе Tornado, разработанной в Университете Торонто. K42 – это третье поколение исследований университета в области масштабируемых операционных систем. Операционная система Tornado на многопроцессорной системе nuMachine была вторым поколением, а операционная система Hurricane на многопроцессорной системе Hector – первым поколением.

Особенности

K42 поддерживает бинарные интерфейсы приложений (ABI) Linux PowerPC 64 и 32, поэтому большинство бинарных файлов PowerPC Linux могут работать на K42 без изменений, включая реляционную базу данных DB2. K42 имеет некоторые драйверы устройств, реализованные специально для него, но основную аппаратную поддержку он получает, напрямую подключая драйверы устройств Linux к специальному серверу. Еще одной целью разработки K42 является создание настраиваемой и удобной в обслуживании системы. Благодаря объектно-ориентированному подходу к проектированию, приложения могут настраивать и оптимизировать необходимые сервисы ОС, а также динамически заменять реализации объектов ядра "на лету". Это особенно важно для приложений, таких как базы данных и веб-серверы, где возможность управления физическими ресурсами может повысить производительность.