Операционные системы — теория

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

Операционная система

Операционная система — это комплекс взаимосвязанных программ, который взаимодействует как интерфейс между приложениями и пользователями.

Основные функции операционных систем:

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

Операционная система управляет процессами. Одна из задач операционной системы — распределение ресурсов между процессами, конкурирующими за эти ресурсы.

Понятие процесса: процесс это динамический объект который возникает в операционной системе после запуска программы, он содержит требования к ресурсам.

Контекст процесса — информация о текущем состоянии процесса, которая включает описание:

  • свойств процесса,
  • открытых файлов,
  • занимаемых участков оперативной памяти,
  • состояния регистров процесса,
  • и иные описания.

Задачи операционной системы при управлении ресурсами

  • Планирование ресурса.
  • Раздача ресурсов.
  • Отслеживание состояния и учет ресурсов.
  • Решение конфликтов между ресурсами.

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

Пользователь взаимодействует с операционной системой через пользовательский интерфейс (UI — user interface).

Пользовательские интерфейсы бывают:
1. CLI — интерфейс командной строки.
2. GUI — графический пользовательский интерфейс.

Пример интерфейса командной строки.

Маршрутизация в Windows

Пример графического пользовательского интерфейса.

Выбор типа динамического обновления DNS-зоны

Подсистема управления памятью

Подсистема управления памятью выполняет следующие задачи:

  1. Ведет учет занятой и свободной оперативной памяти.
  2. Выделяет память процессам и освобождает память при завершении процесса.
  3. Настраивает адресно-зависимые части кодов процесса на физические адреса выделенной памяти.
  4. Защищает память выделенную определенному процессу.
  5. Работает с виртуальной памятью.

Виртуальная память это участок памяти на жестком диске который дополняет оперативную память в случае ее нехватки.

Использование виртуальной памяти позволяет работать с процессорами адресное пространство которых больше, чем оперативная память и увеличивать количество выполняемых одновременно процессов.

По сути подсистема управления памятью проверяет есть ли свадебная оперативная память, если да — выделяет, если нет — задействует виртуальную память.

Подсистема управления файлами

Файловая система позволяет работать не напрямую с данными на носителях, а с файлами.

Файл, по сути, это некоторая последовательность байт которая имеет определенное имя. Тесть виртуальный объект.

Задачи файловой системы:

  1. Предоставление наборов данных в виде иерархической структуры файлов и каталогов.
  2. Преобразование символьных имен файлов в физические адреса данных на диске.
  3. Организация совместного доступа к файлам.
  4. Защита файлов от несанкционированного доступа.

Подсистема управления процессами

Позволяет работать процессам с ресурсами.

  1. Производит генерацию и хранение данных о потребностях процесса в ресурсах и о фактически выделенных ресурсах.
  2. Выделяет оперативную память, процессорное время и другие ресурсы для работы процесса.
  3. Поддерживает очередь заявок процессов на ресурсы.

Задачи подсистемы:

  1. Защита ресурсов, которые были выделены процессу, от вмешательства других процессов.
  2. Организация совместного доступа к ресурсам.
  3. Синхронизация работы процессов при совместном доступе к ресурсам.
  4. Реализация межпроцессорного взаимодействия.

Управление памятью

Рассмотрим управление памятью в операционных системах подробнее.

Виртуальное адресное пространство процесса

Типы адресов:

  • Символьные имена — идентификаторы переменных и команд в программе, присваиваемые программистом.
  • Виртуальные адреса — условные адреса, присваиваемые транслятором.
  • Физические адреса — номера ячеек оперативной памяти, в которых находятся переменные и команды.

Символьные метки:

  1. Метки операторов заменяют для программиста адреса, по которым команды находятся в памяти.
  2. Имена переменных заменяют адреса, по которым данные находятся в памяти.
  3. Имя программы заменяет адрес, по которому первая команда программы находится в памяти.

Физическая память

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

Количество ячеек физической памяти ограничено и фиксировано.

Виртуальное адресное пространство

Совокупностью виртуальных адресов процесса называют виртуальным адресным пространством.

У процессов одинаков диапазон виртуальных адресов, но виртуальные пространства различны, так как отображаются на разные физические адреса.

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

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

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

Размер назначенного адресного пространства может меняться во время выполнения процесса.

Отображение виртуального адресного пространства на физическую память

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

Память бывает разделяемая и неразделяемая.

Разделяемая память это память, которая видна более чем одному процессу или память, которая присутствует в виртуальном адресном пространстве более чем одного процесса.

Неразделяемая память это закрытая область для хранения собственных данных процесса.

На рисунке выше разделимый участок оперативной памяти отмечен серым цветом.

Для каждого процесса виртуальное адресное пространство делиться на две части:

  1. Системная часть – одинакова для всех процессов и содержит ядро операционной системы и разделяемые различными объектами процессы.
  2. Пользовательская часть – индивидуальна для каждого процесса и содержит коды и данные прикладной программы.

Системная часть разделяется на вытесняемую и не вытесняемую.

По сути: если памяти не хватает, то вытесняемая память переходит из оперативной памяти на жесткий диск. Как я писал ранее это очень любимая тема Windows 10.

Подведем итог. В операционной система подсистема управления памятью решает следующие задачи:

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

Обычно мы слышим такой термин как файл подкачки. так вот, файл подкачки это ни что иное как виртуальная память. То есть это метод организации вычислительного процесса при котором некоторые данные временно выгружаются на жесткий диск. Теперь если вы увидите надпись «Файл подкачки» знайте что это такое.

Управление устройствами в операционных системах

Управление устройствами в операционной системе производится с помощью подсистемы управления устройствами ввода-вывода.

Функции подсистемы:

  • Организация параллельной работы устройств ввода-вывода и процессора.
  • Согласование кеширования и обмена данными.
  • Разделение устройств между процессами.
  • Обеспечение работоспособности логического пользовательского интерфейса.
  • Поддержка драйверов устройств.
  • Поддержка различных файловых систем.

То есть подсистема отвечает за то, что бы операционная система могла работать с различными устройствами.

Операционная система взаимодействует с подсистемой ввода-вывода с помощью:

  • Контроллеров.
  • Драйверов.

Контроллер это блок управления устройством ввода-вывода.

Драйвер это программный модуль, который управляет устройством.

Контроллер получает от драйвера выводимые на устройстве данные и управляющие команды. После окончания выполнения задачи контроллер выполняет прерывание.

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

Контроллер управляет устройством, он работает независимо от операционной системы в периоды между выдачами команд.

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

Подсистема ввода-вывода согласовывает скорость обмена и кеширования данных с контроллером устройства.

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

Чтобы согласовать скорости используется буферизация данных и реализуется процесс синхронного доступа считывающего и пишущего потоков к буферу.

Структура подсистемы ввода-вывода

На этом все. Если у вас появились вопросы, задавайте их в комментариях.


Анатолий Бузов
Анатолий Бузов / автор материала / об авторе / услуги / проекты

Обучаю HTML, CSS, PHP. Создаю и продвигаю сайты, скрипты и программы. Занимаюсь информационной безопасностью. Рассмотрю различные виды сотрудничества.


Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *