Анализ операционной системы МСВС на предмет наличия уязвимостей

Дипломная работа - Компьютеры, программирование

Другие дипломы по предмету Компьютеры, программирование



Каждому такому выполнению соответствует процесс операционной системы. Каждый процесс выполняется в собственной виртуальной памяти, и, тем самым, процессы защищены один от другого, т.е. один процесс не в состоянии неконтролируемым образом прочитать что-либо из памяти другого процесса или записать в нее. Однако контролируемые взаимодействия процессов допускаются системой, в том числе за iет возможности разделения одного сегмента памяти между виртуальной памятью нескольких процессов.

Конечно, существенно более важно защищать саму операционную систему от возможности ее повреждения, каким бы то ни было, пользовательским процессом. В ОС МСВС это достигается за iет того, что ядро системы работает в собственном "ядерном" виртуальном пространстве, к которому не может иметь доступа ни один пользовательский процесс.

Понятие нити

В ядре ОС МСВС существует механизм легковесных процессов light-weight processes, или нитей (потоков) управления threads. Нить - это процесс, выполняющийся в виртуальной памяти, используемой совместно с другими нитями того же "тяжеловесного" (т.е. обладающего отдельной виртуальной памятью) процесса.

В ОС МСВС понятие процесса жестко связано с понятием отдельной и недоступной для других процессов виртуальной памяти. Каждый процесс был защищен ядром операционной системы от неконтролируемого вмешательства других процессов.

Связывание процесса с виртуальной памятью порождает некоторые проблемы. Если с каждым процессом связана отдельная виртуальная память, то смена контекста процессора, т.е. его переключение с выполнения одного процесса на выполнение другого процесса является относительно дорогостоящей операцией.

Что же понимается под нитью? Это независимый поток управления, выполняемый в контексте некоторого процесса. Фактически, понятие контекста процесса, изменяется следующим образом. Все, что не относится к потоку управления: виртуальная память, дескрипторы открытых файлов и т.д., остается в общем контексте процесса. Вещи, которые характерны для потока управления: регистровый контекст, стеки разного уровня и т.д., переходят из контекста процесса в контекст нити. Общая картина показана на рисунке

Рис. 2.3 - Соотношение контекста процесса и контекстов нитей

Как видно из рисунка, все нити процесса выполняются в его контексте, но каждая нить имеет свой собственный контекст. Контекст нити, как и контекст процесса, состоит из пользовательской и ядерной составляющих. Пользовательская составляющая контекста нити включает индивидуальный стек нити. Поскольку нити одного процесса выполняются в общей виртуальной памяти, все нити процесса имеют равные права доступа к любым частям виртуальной памяти процесса. Стек (сегмент стека) любой нити процесса в принципе не защищен от произвольного (например, по причине ошибки) доступа со стороны других нитей.

Виртуальная память

Основным идеей распределения виртуальной памяти в ОС МСВС является обеспечение защиты пользовательских программ друг от друга и предоставление операционной системе возможности динамически гибко перераспределять основную память между одновременно поддерживаемыми пользовательскими процессами.

Каждый процесiункционирует в своем собственном виртуальном адресном пространстве, не пересекающемся с другими. Адресное пространство процесса может быть большим, чем физическая оперативная память.

Идея механизма виртуальной памяти ОС МСВС состоит в том, что адрес памяти, вырабатываемый командой, интерпретируется аппаратурой не как реальный адрес некоторого элемента основной памяти, а как некоторая структура, разные поля которой обрабатываются разным образом.

Виртуальная память (виртуальная память каждого процесса) и физическая основная память представляются состоящими из наборов блоков или страниц одинакового размера. Для удобства реализации размер страницы всегда выбирается равным числу, являющемуся степенью 2. Тогда, если общая длина виртуального адреса есть N (это всегда степень 2 - 16, 32, 64), а размер страницы есть 2M), то виртуальный адрес рассматривается как структура, состоящая из двух полей: первое поле задает номер страницы виртуальной памяти, второе поле задает смещение внутри страницы до адресуемого элемента памяти (в большинстве случаев - байта).

Область памяти, занятая программой разделена на три части: text (выполняемые коды программы), data (статические данные программы), stack (динамические данные). Когда ОС освобождает место в памяти за iет textа, то она не занимается сбросом его на диск. Она сразу помечает его как свободный. Действительно, когда потребуется загрузить text обратно в память, его можно будет взять из самого выполняемого файла с программой. Такая экономия имеет побочные эффекты. Первый это потеря быстродействия. Второй состоит в том, что файл программы, которая в данный момент выполняется, невозможно уничтожить. Операционная система сообщит в этом случае: "text file busy", и откажется выполнять удаление.

Виртуальная память поддерживается с помощью pagingа - разрешения виртуальных адресов в физические, с подкачкой отсутствующих страниц памяти со swap-области на жестком диске. Swapingа как такового в ОС МСВС нет, вместо него применяется гораздо более гибкий paging. Swaping - по определению, это полная выгрузка программы на swap-область iелью освобождения места в оперативной памяти.

Введение подобной модели организации виртуальной памяти и тщательное продумывание связи аппаратно-независ?/p>