- •Глава 2. Назначение и функции операционной системы
- •2.1. Операционные системы автономного компьютера
- •2.1.1. Расширенная виртуальная машина
- •2.1.2. Управление ресурсами
- •2.2. Основные функции операционной системы автономного компьютера
- •2.2.1. Управление процессами
- •2.2.2. Управление памятью
- •2.2.3. Управление файлами и внешними устройствами
- •2.2.4. Защита данных и администрирование
- •2.2.5. Интерфейс прикладного программирования
- •2.2.6. Пользовательский интерфейс
- •2.3. Сетевые операционные системы
- •2.3.1. Функциональные компоненты сетевой операционной системы
- •2.3.2. Сетевые службы и сетевые сервисы
- •2.3.3. Встроенные сетевые службы и сетевые оболочки
- •2.3.4. Одноранговые и серверные сетевые операционные системы
- •2.3.5. Операционные системы в одноранговых сетях
- •2.3.6. Операционные системы в сетях с выделенными серверами
- •2.4. Требования к современным операционным системам
- •Вопросы для самоконтроля
2.2.2. Управление памятью
Память является важнейшим ресурсом, требующим тщательного управления со стороны операционной системы, так как процесс может выполняться процессором только в том случае, если его коды и данные (не обязательно все) находятся в оперативной памяти. Распределению подлежит вся оперативная память, не занятая операционной системой.
Функциями операционной системы по управлению памятью являются: отслеживание свободной и занятой памяти, выделение памяти процессам и освобождение памяти при завершении процессов, защита памяти одного процесса от несанкционированного доступа других процессов, вытеснение процессов из оперативной памяти на диск, когда размеры основной памяти не достаточны для размещения в ней всех процессов, и возвращение их в оперативную память, когда в ней освобождается место, а также настройка адресов программы на конкретную область физической памяти.
Одним из наиболее распространенных способов управления памятью в современных операционных системах является так называемая виртуальная память. Наличие в операционной системе механизма виртуальной памяти позволяет программисту писать программы так, как будто в его распоряжении имеется однородная оперативная память большого объема, зачастую превышающего объем имеющейся физической памяти. В действительности все коды и данные программы хранятся на магнитном диске и по мере необходимости частями отображаются в оперативную память. При перемещении программы между оперативной памятью и диском подсистема виртуальной памяти выполняет трансляцию виртуальных адресов, полученных в результате компиляции и компоновки программы, в физические адреса ячеек оперативной памяти.
2.2.3. Управление файлами и внешними устройствами
Способность операционной системы к сокрытию от пользователей или программистов сложностей реальной аппаратуры особенно хорошо проявляется в подсистеме управления файлами и внешними устройствами. Подсистема управления файлами также называется файловой системой, а подсистема управления внешними устройствами – подсистемой ввода-вывода.
Операционная система виртуализирует отдельный набор данных, хранящихся на внешнем накопителе, в виде файла – простой неструктурированной последовательности байтов, имеющих символьное имя. Для удобства работы файлы группируются в каталоги, а те в свою очередь в каталоги более высокого уровня. С помощью операционной системы пользователь или программист может выполнять над файлами и каталогами различные действия, например: создание, копирование, удаление, запись, чтение и т.д.
При выполнении своих функций файловая система тесно взаимодействует с подсистемой ввода-вывода, которая по запросам файловой системы осуществляет передачу данных между оперативной памятью и дисками.
Подсистема ввода-вывода выполняет роль интерфейса ко всем устройствам подключенным к компьютеру. Управление устройствами осуществляется с помощью специальных программ называемых драйверами. Для каждого устройства существует своя программа управления – драйвер. Для пользователей важно, чтобы операционная система включала как можно больше разнообразных драйверов, так как это позволит подключить к компьютеру большое количество внешних устройств различных производителей.
Поддержание высокоуровневого унифицированного интерфейса прикладного программирования к различным устройствам ввода-вывода является одной из наиболее важных задач операционной системы. Эта задача заключается в том, чтобы обмен с любым внешним устройством выглядел как обмен с файлом, имеющим имя и представляющим собой неструктурированную последовательность байтов.
