Ядро OS-9 осуществляет динамическое управление всей доступной памятью системы. Задачи используют стандартные библиотеки С-вызовы для запроса и освобождения памяти. Это означает, что любое использование памяти системы должно осуществляться через косвенную регистровую адресацию, т.е. относительно внутреннего процессора предварительно загруженным адресом выделенной памяти. Когда программа запускается, ядро вначале выделяет ей память для переменных, находящихся в статической памяти и для стека. Кроме того, программа может в любое время динамически получать и освобождать дополнительную область памяти любого размера. Максимальное количество областей должно быть равно 32. Это ограничение накладывается из-за того, что ядро должно отслеживать области памяти, принадлежащие программе, так что память программы может при ее завершении динамически возвращаться в пул свободной памяти, даже в случае если не выполнена процедура освобождения занимаемой памяти при завершении программы, не говоря о некорректном ее завершении.
В общем случае память неоднородна. Память, находящаяся на основной плате обычно гораздо быстрее для процессора доступа, чем память, доступ к которой осуществляется по шине. С другой стороны некоторые области памяти могут иметь специальные возможности: графическая память дисплея, память с батарейной поддержкой, память, разделяемая процессорами. В OS-9 различные типы памяти называют цветами. Присвоение некоторой области уникального цвета позволяет программе получать память конкретного типа без необходимости знать абсолютный адрес памяти. Это сделано для того, чтобы обеспечить переносимость программы с одних платформ на другие. Кроме типа памяти OS-9 поддерживает и приоритет областей памяти. Приоритет позволяет управлять очередностью использования различных областей памяти при динамическом выделении. Это обеспечивает лучшую производительность системы. Пользователь сам определяет логическую конфигурацию памяти в виде совокупности разноцветных областей физической памяти, при этом он указывает его начальный и конечный адрес, номер цвета, приоритет и флаги атрибутов доступа: « Только читать» для ПЗУ и «Пользовательская память», которая может выделяться программе в состоянии пользователя. Пользователь фиксирует распределение памяти в модуле данных конфигурации системы. Во время холодного старта ядро строит свою структуру управления областями памяти, используя данную конфигурации. Для выделения/освобождения памяти с учетом цвета и приоритета в OS-9 используется следующий эффективный механизм:
Область свободной памяти одного и того же цвета и приоритета включается в структуру в виде отдельного связанного списка, называемого цветным узлом памяти, который представляет собой структуру, описывающую каждую область памяти, найденную при запуске системы.
В этой структуре дается начальный и конечный адреса области памяти, номер цвета области памяти, приоритет и атрибуты распределения, а также общий размер свободной области памяти в составе этой области.
Структуры данных цветных узлов памяти в этой таблице связываются вместе в виде дважды связанного списка, упорядоченного по приоритету распределения. Первая область–область с наивысшим приоритетом.
Чтобы удовлетворить запрос на выделение памяти заданного цвета, ядро просматривает список цветных узлов памяти, начиная с высшего, до тех пор, пока не найдет узел с нужным цветом и достаточно свободным пространством памяти. Затем оно просматривает список свободных областей памяти данного цветного узла, проверяя размер каждого элемента, до тех пор пока не найдет область достаточно большую, чтобы удовлетворить запрос. Если эта область больше запрошенной, ядро выделяет нужное количество памяти в верхней части этой области и сокращает размер свободной области на величину выделенной памяти. Никаких изменений в структуре самого списка не происходит. Ядро обслуживает и так называемые бесцветные запросы на выделение памяти, выделяя память только по приоритету. Если размер памяти в точности совпадает с запрошенным, то ядро удаляет эту область из связанного списка.