Файл: Функции операционных систем персональных компьютеров.pdf
Добавлен: 29.03.2023
Просмотров: 377
Скачиваний: 2
СОДЕРЖАНИЕ
Другие мейнфреймовые операционные системы
Миникомпьютеры и развитие UNIX
Классификация операционной системы
Структура операционной системы
5.5 Разделение устройств и данных между процессами
5.6 Динамическая загрузка и выгрузка драйверов
5.7 Поддержка нескольких файловых систем
5.8 Поддержка синхронных и асинхронных операций ввода-вывода
Память является критически важным ресурсом, который требует тщательного управления многопрограммной операционной системой. Особая роль памяти обусловлена тем, что процессор может выполнять инструкции Морданта только в том случае, если они находятся в памяти. Память распределяется как между модулями прикладных программ, так и между модулями самой операционной системы.
В ранних операционных системах управление памятью сводилось к загрузке программы и ее данных с внешнего диска (перфоленты, магнитной ленты или магнитного диска) в память. С появлением мультипрограммирования ОС были поставлены новые задачи, связанные с распределением доступной памяти между несколькими одновременно запущенными программами.
Функции ОС для управления памятью в многопрограммной системе:[5,8]
• отслеживание свободной и занятой памяти;
• выделение памяти для процессов и освобождение памяти при завершении процессов;
• стирание кодов и данных процесса из ОЗУ на диск (полное или частичное), когда основная память недостаточно велика, чтобы вместить все процессы в нем, и возврат их в ОЗУ, когда в ней освободилось место;
• установка адресов программы для определенной области физической памяти.
В дополнение к первоначальному выделению памяти процессам при их создании ОС также должна заниматься динамическим выделением памяти, то есть выполнять запросы приложений для выделения дополнительной памяти во время выполнения. После того, как приложение больше не нуждается в дополнительной памяти, оно может вернуть ее в систему. Выделение памяти произвольной длины в случайные моменты времени из общего пула памяти приводит к фрагментации и, как следствие, к ее неэффективному использованию. Дефрагментация памяти также является функцией операционной системы. [7]
Во время работы операционной системы ей часто приходится создавать новые информационные сервисные структуры, такие как дескрипторы процессов и потоки, различные таблицы распределения ресурсов, буферы, используемые процессами для обмена данными, синхронизации объектов и т.д. Все эти системные объекты требуют памяти. Некоторые операционные системы предварительно выделяют (во время установки) некоторый фиксированный объем памяти для системных нужд. В других случаях ОС использует более гибкий подход, при котором память для системных целей выделяется динамически. В этом случае различные подсистемы ОС при создании своих таблиц, объектов, структур и т.д. Обращаются к подсистеме управления памятью с запросами.
Защита памяти является еще одной важной задачей операционной системы, которая заключается в том, чтобы предотвратить запись или чтение данных запущенным процессом из памяти, назначенной другому процессу. Эта функция, как правило, реализуется программными модулями ОС в тесном взаимодействии с аппаратным обеспечением. [4,8]
5.3 Алгоритмы памяти
Каждому процессу должна быть назначена одна непрерывная область физической памяти, или же память может быть выделена порциями? Должны ли сегменты программы, загруженные в память, находиться в одном и том же месте в течение всего периода процесса, или они могут время от времени перемещаться? Что делать, если сегменты программы не помещаются в доступную память? Различные операционные системы с разными ответами на эти и другие основные вопросы управления памятью. Далее будут рассмотрены наиболее распространенные подходы к распределению памяти, которые были характерны для разных периодов разработки операционных систем. Некоторые из них по-прежнему актуальны и широко используются в современных операционных системах, тогда как другие в основном представляют познавательный интерес, хотя их все еще можно найти в специализированных системах. [1]
Все алгоритмы выделения памяти делятся на два класса: алгоритмы, которые используют перемещение сегментов процесса между ОЗУ и диском, и алгоритмы, которые не используют внешнюю память.
5.4 Ввод и вывод информации
Подсистема ввода-вывода многопрограммной ОС при обмене данными с внешними компьютерными устройствами должна решать ряд общих задач, наиболее важными из которых являются следующие:
• организация параллельной работы устройств ввода-вывода и процессора;
• согласование скоростей передачи данных и кеширование данных;
• разделение устройств и данных между процессами;
• обеспечение удобного логического интерфейса между устройствами и остальной частью системы;
• поддержка широкого круга драйверов с возможностью простого включения нового драйвера в систему;
• динамическая загрузка и выгрузка драйверов;
• поддержка нескольких файловых систем;
• поддержка синхронных и асинхронных операций ввода-вывода;
Рассмотрим некоторые задачи подробнее.
Организация параллельной работы устройств ввода-вывода и процессора [7]
Каждое устройство ввода-вывода вычислительной системы - диск, принтер, терминал и т.д. - оснащено специализированным блоком управления, называемым контроллером. Контроллер взаимодействует с драйвером - системным программным модулем, предназначенным для управления этим устройством. Контроллер периодически получает информацию от драйвера к устройству, а также команды управления, которые указывают, что нужно делать с этой информацией (например, выводить в виде текста в определенную область терминала или записывать в конкретный сектор диск). Под управлением контроллера устройство может выполнять свои операции автономно в течение некоторого времени, не требуя внимания со стороны центрального процессора. Это время зависит от многих факторов - количества выводимой информации, степени интеллекта контроллера, который управляет устройством, скорости устройства и т.д. Даже самый примитивный контроллер, выполняющий простые функции, обычно тратит довольно много времени на независимая реализация этой функции после получения другой инструкции от процессора. То же самое относится и к сложным контроллерам, поскольку скорость любого устройства ввода-вывода, даже самого быстрого, обычно значительно ниже скорости процессора. [13,16]
Процессы, происходящие в контроллерах, происходят в периоды между выдачей команд независимо от ОС. Подсистема ввода / вывода должна планировать в режиме реального времени (в котором работают внешние устройства) запуск и приостановку большого количества различных драйверов, обеспечивая приемлемое время реакции каждого драйвера на события независимого контроллера. С другой стороны, необходимо минимизировать использование ЦП при выполнении задач ввода-вывода, оставляя как можно больше процессорного времени для выполнения пользовательских потоков. [4]
Эта задача является классической задачей планирования систем реального времени и обычно решается на основе многоуровневой схемы приоритетного обслуживания прерываний. Чтобы обеспечить приемлемый уровень реакции, все драйверы (или части драйверов) распределены по нескольким уровням приоритета в соответствии с требованиями к времени реакции и времени использования процессора. Для реализации схемы приоритетов обычно используется общий диспетчер прерываний ОС. [11]
5.5 Разделение устройств и данных между процессами
Устройства ввода / вывода могут быть предоставлены процессам как в исключительном, так и в совместном (совместном) использовании. В то же время ОС должна обеспечивать управление доступом таким же образом, как и когда процессы обращаются к другим ресурсам вычислительной системы - проверяя права пользователя или группы пользователей, от имени которых процесс действует для выполнения определенной операции над устройством. Например, определенной группе пользователей разрешено использовать последовательный порт в монополии, в то время как другим пользователям это запрещено.
Операционная система может контролировать доступ не только к устройству в целом, но также к отдельным частям данных, хранящихся или отображаемых этим устройством.[6] Диск - это типичный пример устройства, для которого важно контролировать доступ не к устройству в целом, а к отдельным каталогам и файлам. При отображении информации на графическом дисплее отдельные окна экрана также представляют ресурсы, к которым требуется тот или иной тип доступа для процессов, происходящих в системе. В то же время для каждой части данных или части устройства могут быть установлены его собственные права доступа, которые не связаны напрямую с правами доступа к устройству в целом. Таким образом, в файловой системе, обычно для каждого каталога и файла, вы можете установить индивидуальные права доступа. Очевидно, что для организации совместного доступа к частям устройства или частям данных, хранящихся на нем, обязательным условием является задача режима совместного использования устройства в целом. [2,6]
Одно и то же устройство в разные периоды времени может использоваться как в общем, так и в монопольном режиме. Однако есть устройства, которые обычно имеют один из этих режимов, например, последовательные порты и буквенно-цифровые терминалы чаще используются в монопольном режиме, а накопители используются в режиме совместного использования. Операционная система должна предоставлять эти устройства в обоих режимах, отслеживая процедуры захвата и освобождения монопольных устройств, а в случае совместного использования оптимизируя последовательность операций ввода-вывода для различных процессов, чтобы улучшить общую производительность, если это возможно. Например, при обмене данными с несколькими процессами на диске вы можете упростить последовательность операций таким образом, чтобы затраты времени на перемещение головок значительно сократились (в то время как для некоторых процессов некоторое замедление операции ввода-вывода возможно).
Когда устройство разделяется между процессами, может возникнуть необходимость отделить части этих двух процессов друг от друга. Обычно такая необходимость возникает при совместном использовании так называемых последовательных устройств, в которых, в отличие от устройств прямого доступа, они не рассматриваются. Типичным представителем этого типа устройств является принтер, который не выделяется в качестве проприетарного процесса, и в то же время каждый документ должен быть напечатан в виде последовательного набора страниц. Для таких устройств организована очередь задач для вывода, причем каждая задача представляет собой часть данных, которые не могут быть прерваны, например, документ для печати. Для хранения очереди заданий используется файл спула, который одновременно координирует скорость принтера и ОЗУ и позволяет организовать разбиение данных на логические порции. Поскольку файл спулинга расположен на общем устройстве прямого доступа, процессы могут одновременно выполнять вывод на принтер, помещая данные в свой раздел спулинга. [2,5]
Обеспечение удобного логического интерфейса между устройствами и остальной частью системы
Разнообразные устройства ввода / вывода делают ОС особенно актуальной для создания экранирующего логического интерфейса между периферийными устройствами и приложениями. Практически все современные операционные системы поддерживают модель периферийных файлов в качестве основы для такого интерфейса, когда любое устройство обращается к программисту приложения как к последовательному набору байтов, который может обрабатываться через унифицированные системные вызовы (например, чтение и запись), указывая имя файла устройства и смещение от начала последовательности байтов. Для поддержки такого интерфейса подсистеме ввода-вывода необходимо проделать большую работу, учитывая разницу в организации операций обмена данными, например, с жестким диском и графическим терминалом. [11]
Привлекательность модели файлового устройства заключается в ее простоте и однородности для устройств любого типа, но во многих случаях она слишком плоха для программирования операций ввода-вывода какого-либо устройства. Поэтому эта модель часто используется только в качестве основы, на которой подсистема ввода / вывода строит более содержательную модель устройств определенного типа. Подсистема ввода / вывода, как правило, предоставляет специальный интерфейс для отображения графической информации на дисплее или принтере, для программирования операций сетевого обмена и т.д. В то же время разработчик конкретного интерфейса всегда может полагаться на существующий базовый интерфейс.