Файл: Функции операционных систем персональных компьютеров.pdf

ВУЗ: Не указан

Категория: Курсовая работа

Дисциплина: Не указана

Добавлен: 29.03.2023

Просмотров: 371

Скачиваний: 2

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

5.6 Динамическая загрузка и выгрузка драйверов

Помимо проблемы разработки новых драйверов, существует также проблема включения драйвера в модули работающей ОС, то есть динамическая загрузка и выгрузка драйверов. Поскольку набор периферийных устройств, которые потенциально поддерживаются этой ОС, всегда значительно шире, чем набор устройств, которыми ОС должна управлять при установке на конкретном компьютере, ценным свойством ОС является возможность динамической загрузки требуемого драйвера в ОЗУ (без выключения ОС) и выгрузите его после того, как Потребность в поддержке устройства прошла, что может значительно сэкономить системную память. [4,6]

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

Поддержка динамической загрузки драйверов практически обязательна для современных универсальных операционных систем. [6]

5.7 Поддержка нескольких файловых систем

Диски представляют собой особый тип периферийных устройств, поскольку именно на них хранится большая часть как пользовательских, так и системных данных. Данные на дисках организованы в файловые системы, а свойства файловой системы во многом определяют свойства самой ОС - ее отказоустойчивость, скорость, максимальный объем памяти. Популярность файловой системы часто приводит к ее миграции с родной ОС на другие операционные системы - например, файловая система FAT впервые появилась в MS-DOS, но затем была реализована в OS / 2, семействе MS Windows и многих других. UNIX-реализации. Поэтому поддержка нескольких популярных файловых систем для подсистемы ввода-вывода так же важна, как и поддержка широкого спектра периферийных устройств. Также важно, что архитектура подсистемы ввода / вывода позволяет просто включать в свою структуру новые типы файловых систем без необходимости переписывать код. Обычно операционная система имеет специальный программный уровень, отвечающий за решение этой проблемы, например, уровень VFS (виртуальная файловая система) в версиях UNIX на основе кода System V Release 4.[7]


5.8 Поддержка синхронных и асинхронных операций ввода-вывода

Операция ввода / вывода может быть выполнена на программном модуле, который запросил операцию, в синхронном или асинхронном режимах. Значение этих режимов такое же, как и для системных вызовов, описанных выше - синхронный режим означает, что программный модуль приостанавливает свою работу до завершения операции ввода-вывода, а в асинхронном режиме программный модуль продолжает работать в многопрограммном режиме со в то же время с операцией ввода / вывода. Разница в том, что операция ввода-вывода может быть инициирована не только пользовательским процессом - в этом случае операция выполняется как часть системного вызова, но также и кодом ядра, например, кодом подсистемы виртуальной памяти для чтение страницы, которая отсутствует в памяти.

Подсистема ввода-вывода должна предоставлять своим клиентам (пользовательские процессы и коды ядра) возможность выполнять как синхронные, так и асинхронные операции ввода-вывода, в зависимости от потребностей вызывающего. Системные вызовы ввода / вывода чаще формализуются как синхронные процедуры, поскольку такие операции занимают много времени, и пользовательскому процессу или потоку все равно придется ждать, пока результаты операции продолжатся. Внутренние вызовы для операций ввода-вывода из модулей ядра обычно выполняются в форме асинхронных процедур, поскольку кодам ядра требуется свобода выбора дальнейшего поведения после запроса операции ввода-вывода. Использование асинхронных процедур приводит к более гибким решениям, поскольку на основе асинхронного вызова вы всегда можете создать синхронный вызов, создав дополнительную промежуточную процедуру, которая блокирует выполнение вызывающей процедуры до завершения ввода-вывода. Иногда процессу приложения также необходимо выполнить асинхронную операцию ввода-вывода, например, с микроядерной архитектурой, когда часть кода выполняется в пользовательском режиме как процесс приложения, но выполняет функции операционной системы, которые требуют полной свободы действия даже после вызова операции ввода-вывода. [1,5,9,15]

5.9 Менеджер ввода-вывода


В подсистеме ввода-вывода наряду с модулями, отражающими специфику внешних устройств и образующими вертикальные подсистемы, существуют модули универсального назначения. Эти модули организуют согласованную работу всех остальных компонентов подсистемы ввода-вывода и взаимодействие с пользовательскими процессами и другими подсистемами ОС. Так же как и функции управления устройствами, эти организующие функции распределены по всем уровням, образуя оболочку. Эта оболочка иногда называется менеджером ввода-вывода. Задачи такого менеджера довольно разнообразны.[11]

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

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

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


Еще одной функцией менеджера ввода-вывода является организация взаимодействия модулей ввода-вывода с модулями других подсистем ОС, таких как подсистема управления процессами, виртуальной памятью и другими.[2,3,4]

Примерами подобного менеджера являются менеджер ввода-вывода ОС Windows NT, а также среда STREAMS, существующая во многих версиях операционной системы UNIX. Менеджер ввода-вывода Windows NT организует взаимодействие между модулями с помощью пакетов запросов ввода-вывода - IRP (I/O Request Packet). Получив запрос от процедуры системного вызова, менеджер формирует IRP и передает его нужному драйверу. Драйвер после выполнения запрошенной операции возвращает ответ в виде другого IRP менеджеру, а тот, в свою очередь, может при необходимости передать этот IRP другому драйверу. Менеджер позволяет драйверам задавать взаимосвязи (bindings) между собой, и на основании информации о взаимосвязях и происходит передача пакетов IRP. Кроме того, менеджер Windows NT поддерживает динамическую загрузку-выгрузку драйверов без останова системы.

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

5.10 Безопасность. Угрозы безопасности

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

Считается, что безопасная система должна обладать свойствами конфиденциальности, доступности и целостности. Любое потенциальное действие, которое нарушает конфиденциальность, целостность и доступность информации, называется угрозой. Реализованная угроза называется атакой.[7]

Конфиденциальная (конфиденциальная) система обеспечивает уверенность в том, что секретные данные будут доступны только тем пользователям, которым разрешен этот доступ (таких пользователей называют авторизованными). Под «доступностью» подразумевается гарантия того, что авторизованные пользователи всегда будут иметь доступ к необходимой им информации. Наконец, целостность системы подразумевает, что неавторизованные пользователи не могут каким-либо образом изменять данные.


Защита информации направлена ​​на борьбу с так называемыми преднамеренными угрозами, то есть теми, которые, в отличие от случайных угроз (ошибки пользователей, сбои оборудования и т.д.), Предназначены для нанесения вреда пользователям ОС. [14]

Преднамеренные угрозы делятся на активные и пассивные. Пассивная угроза - несанкционированный доступ к информации без изменения состояния системы, активная - несанкционированное изменение системы. Пассивные атаки труднее обнаружить, поскольку они не влекут за собой никаких изменений данных. Защита от пассивных атак основана на средствах их предотвращения.

Существует несколько типов угроз. Самая распространенная угроза - это попытка войти в систему под видом легитимного пользователя, например, попытка угадать и выбрать пароли. Более сложный вариант - ввести в систему программу, которая отображает слово login. Многие легальные пользователи одновременно начинают пытаться войти в систему, и их попытки могут быть зарегистрированы. Такие, казалось бы, безобидные программы, которые выполняют нежелательные функции, называются «троянскими конями». Иногда можно торпедировать работу программы проверки паролей, многократно нажимая клавиши del, break, отмены и т. Д. Для защиты от таких атак ОС запускает процесс, называемый аутентификацией пользователя. [4, 15]

Другие виды угроз связаны с нежелательными действиями законных пользователей, которые могут, например, пытаться читать страницы памяти, диски и ленты, которые сохранили информацию, связанную с предыдущим использованием. Защита в таких случаях основана на надежной системе авторизации. Атаки типа «отказ в обслуживании» также попадают в эту категорию, когда сервер наводнен мощным потоком запросов и становится практически недоступным для отдельных авторизованных пользователей. [7]

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