Операционные системы -вопросы теории

       

Нарушения стекового порядка загрузки и выгрузки в MS DOS



Рисунок 4.15. Нарушения стекового порядка загрузки и выгрузки в MS DOS


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

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

В системах с динамической сборкой первые две проблемы не так остры, потому что память выделяется и освобождается небольшими кусочками, по блоку на каждый объектный модуль, и код программы обычно не занимает непрерывного пространства. Соответственно такие системы часто разрешают и данным программы занимать несмежные области памяти.
Такой подход используется многими системами с открытой памятью — AmigaDOS, Oberon, системами программирования для транспьютера и т. д. Проблема фрагментации при этом не снимается полностью, однако для создания катастрофической фрагментации не достаточно двух загрузок задач и одной выгрузки, а требуется довольно длительная работа, сопровождающаяся интенсивным выделением и освобождением памяти.
В системе MacOS был предложен достаточно оригинальный метод борьбы с фрагментацией, заслуживающий отдельного обсуждения

 




Содержание раздела