programming

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

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

Требования к ОС

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

Структура ОС

Ядро (Kernel) - резидентная часть ОС, работающая в режиме супервизора (обычно работает в режиме физической адресации)

Структура:
Интерфейсы программных вызовов (API - Application Programming Interface)
Динамически подгружаемые драйверы физических и виртуальных устройств
Ядро ОС
Аппаратура
  • Ядро подгружает процессы
  • Динамически подгружаемые драйверы устройств:
    • резидентные/нерезидентные (резидентные находятся в оперативной памяти с момента запуска и находятся там всё время работы)
    • работают в пользовательском/привилегированном режиме

Системный вызов - обращение к ОС за выполнением той или иной функции (возможности, услуги, сервиса. Уровень API)

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

Пример структурной организации классической системы

Монолитные системы

Бывают монолитные системы. Они строятся без жёсткой структуры и с наиболее быстрыми и оптимальными путями решения.

Пример монолитной системы:
Такая система построена оптимальным образом, но сложно модифицируется. В ней трудно искать ошибки.

  • Подобно замене видеокарты в одноплатном компьютере, замена какого-либо компонента системы - трудный процесс.

Многослойные ядра

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

  • Замена одного из модулей такой системы заметно проще. Новый модуль должен соответствовать API.
  • Такие системы менее эффективны.

Микроядерная архитектура

  • Изначально была исследовательской моделью
  • По сей день используется компанией Apple в iPhone, используется в BSD.
  • Ядро с минимальной функциональностью. (очень “маленькое” ядро. Реализованы, например, первичная обработка прерываний и работа с оперативной памятью)
  • К такому ядру могут быть подключены, например, несколько разных драйверов файловых систем.
  • Плюсы:
    • Высокая гибкость. Главное требование к новым модулям - поддержка подключения.
  • Минусы:
    • Неэффективность. На примере read(), для выполнения операции нужно совершить обращение к микроядру, которое осуществит запрос к драйверу устройства, который… Это долго.

Логические функции ОС

  • Управление процессами
    • Выделение ресурсов.
  • Управление ОП
    • Организация оперативной памяти на конкретной платформе.
  • Планирование
    • Разрешение конкуренции процессов за ресурсы.
    • Планирование распределения ресурсов.
  • Управление устройствами и ФС
    • Управление внешними запоминающими устройствами и файловой системой.
  • Сетевое взаимодействие
    • Одиночный компьютер - почти немыслимое образование.
  • Безопасность
    • Статическая - средства аутентификации, которые определяют набор прав и возможностей пользователя.
    • Динамическая - отслеживание процессов, которые могут привести к нарушению безопасности.

Типы операционных систем

Пакетная ОС

В нашем случае мультипроцессная.

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

Такая система наиболее эффективно загружает процессор. Минимизация переключения между процессами.

  • Эффективны в больших вычислениях.

Системы разделения времени

Квант времени ЦП - некоторый фиксированный ОС промежуток времени работы ЦП.

  • Переключение выполнения процессов происходит:
    • Исчерпался выделенный квант времени.
    • Выполнение процесса завершено
    • Возникло прерывание.
    • Зацикливания процесса.
  • Если квант малый, возможен процесс выполнения в интерактивном режиме (быстрый отклик).
    • Например, ввод буквы с клавиатуры. не требует больших вычислений и выполняется за квант времени
  • Критерий эффективности - скорость отклика на запрос.
  • Кванты времени могут быть разными для интерактивных/не интерактивных задач.

Модель организации планирования процесса


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

  • Если в системе появляется готовый к исполнению процесс с приоритетом выше исполняемого, ему выделяется квант времени соответствующего размера. Исполняемый процесс будт прерван и получит статус ожидания.
  • -> работа зависит от того, каким образом будут определены приоритеты процессов.
  • Само планирование процессов может занимать много времени.
  • По картинке:
    • Днём, когда люди работают, лучше сделать приоритетными интерактивные задачи.
    • На втором месте - счёт-отладка.
    • Когда все ушли на обед, можно и основной счёт провести.
    • Рабочий день завершился. Теперь приоритетные процессы - отладочные.
    • Вторые - счёт.
    • Интерактивные труднодоступны.
    • Ночью - в первую очередь счёт.
    • Можно администраторские процессы сделать приоритетными.

ОС реального времени

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

  • Например, при работе автопилота самолёта.
    • Система получает показания с различных датчиков и в оперативном режиме принимает решение, какие действия нужно выполнить.
    • Время принятия решения ограничено.
  • Система, гарантирующая обработку событий из некоторого набора определённых событий за время, не превышающее установленный предел времени для данного события.
  • Часто для жёстких временных рамок (по последствиям) используются системы семейства UNIX.

Сетевые, распределённые ОС

Сетевая ОС - ОС, которая обеспечивает функции распределения приложений в сети.

  • Например, система, управляющая высокопроизводительным кластером.

Распределённая ОС - ОС, функционирующая на многопроцессорном/многомашинном комплексе, в котором на каждом из узлов функционирует своё ядро, а также, система, обе печивающая распределение возможностей (ресурсов) ОС.