itmo_conspects

Лекция 4. Архитектура ОС, часть 1

Архитектура ПО очень схожа с архитектурой зданий и домом - поиск компромиссов

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

Яркий пример - собор Саграда Фамилия в Барселоне. Взявшийся за него в конце XIX века архитектор Антонио Гауди, придумавший уникальные архитектурные решения (в частности, подгонка каждого каменного блока), не успел его достроить, из-за чего он почти сто лет как не достроен

Сейчас выделяют 5 уровней архитектур:

На этой лекции будет разбираться функциональная архитектура

Функциональная архитектура

Определим цель операционной системы: обеспечение производительности, надежности и безопасности аппаратного обеспечения, программного обеспечения, данных и интерфейсов

Выделим метафункции ОС:

  1. Управление разработкой и исполнением пользовательского ПО

    1. Высокоуровневый API для разработки ПО

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

    2. Управление исполнением программы

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

    3. Обнаружение и обработка ошибок

      Давным-давно ошибки вызывали прерывание процессора, который прекращал исполнение инструкций.
      Теперь же процесс не умирает, а помещается в состояние “exception”, при котором делается дамп памяти процесса, с помощью которого можно вычислить баг

    4. Высокоуровневый доступ к устройствам ввода-вывода

      Это работа компьютерных мышек, клавиатур, веб-камер, принтеров и т.п.

    5. Управление хранилищем

      Пример: имеем диск с файловой системой NTFS (или EXT4) и флешка с FAT32. Нужно перенести каталог с файлам. Хранилища у нас с совсем разными структурами, поэтому ОС нужно уметь работать с ними прозрачно

    6. Мониторинг использования ресурсов

      Чтобы операционной системе построить график использования процессора, нужно использовать этот же самый процессор

  2. Оптимизация использования ресурсов

    1. Механизм для решения многокритериальных задач

      Ранняя аналогия с супермаркетом была одномерная, но в компьютере таких касс несколько. Нужно, чтобы были:

      • всегда занятой процессор
      • всегда занятая память
      • всегда занятой диск

      И другие компоненты. Для этого используют суперкритерий (другое название свертка):

      supercritiria

      Здесь k_i - критерий оптимальности использования какого-то ресурса, а α, β, γ - веса этих критериев. Цель - максимизировать k с крышечкой. Далее алгоритм думает, как распределять ресурсы

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

      conditional supercritiria

    2. Цикл Деминга (Цикл PDCA)

      Цикл PDCA состоит в следующем:

      PDCA Cycle

      • Plan - планирование действия
      • Do - действие
      • Check - проверка текущего состояния
      • Act (или Adjuct) - корректировка направления

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

  3. Поддержка администрирования и эксплуатации

    1. Диагностика - средства, которые в автономическом режиме прогнозируют и анализируют отказ компонентов

    2. Восстановление - автоматизация восстановления

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

  4. Поддержка развития операционной системы

    1. Обновление - архитектурно должны быть заложены механизмы обновления ОС

    2. Кастомизация - способность изменять функционал под требуемые нужды (например, изменение ядра)