Архитектура ПО очень схожа с архитектурой зданий и домом - поиск компромиссов
Операционные системы пишутся годами - за эти годы может смениться множество команд. Поэтому важно, что бы соблюдался единый и консистентный подход к проектированию.
Яркий пример - собор Саграда Фамилия в Барселоне. Взявшийся за него в конце XIX века архитектор Антонио Гауди, придумавший уникальные архитектурные решения (в частности, подгонка каждого каменного блока), не успел его достроить, из-за чего он почти сто лет как не достроен
Сейчас выделяют 5 уровней архитектур:
На этой лекции будет разбираться функциональная архитектура
Определим цель операционной системы: обеспечение производительности, надежности и безопасности аппаратного обеспечения, программного обеспечения, данных и интерфейсов
Выделим метафункции ОС:
Управление разработкой и исполнением пользовательского ПО
Высокоуровневый API для разработки ПО
Например, раньше, чтобы разработчикам открыть файл, приходилось класть в стек аргументов имя файлов, параметры открытия, вызывать системный вызов, проверять на ошибки и т.д.. Сейчас же стандартные библиотеки для языков программирования оборачивают этот процесс под простым вызовом метода open
Управление исполнением программы
Например, когда пользователь два раза щелкает на ярлычок, в это время операционная система находит путь исполняемого файла по ярлыку, сама выделяет оперативную память процессу открываем ярлык, загружает инструкции в память, выполняет их и так далее. И все эти процессы происходят абсолютно прозрачно для нас
Обнаружение и обработка ошибок
Давным-давно ошибки вызывали прерывание процессора, который прекращал исполнение инструкций.
Теперь же процесс не умирает, а помещается в состояние “exception”, при котором делается дамп памяти процесса, с помощью которого можно вычислить баг
Высокоуровневый доступ к устройствам ввода-вывода
Это работа компьютерных мышек, клавиатур, веб-камер, принтеров и т.п.
Управление хранилищем
Пример: имеем диск с файловой системой NTFS (или EXT4) и флешка с FAT32. Нужно перенести каталог с файлам. Хранилища у нас с совсем разными структурами, поэтому ОС нужно уметь работать с ними прозрачно
Мониторинг использования ресурсов
Чтобы операционной системе построить график использования процессора, нужно использовать этот же самый процессор
Оптимизация использования ресурсов
Механизм для решения многокритериальных задач
Ранняя аналогия с супермаркетом была одномерная, но в компьютере таких касс несколько. Нужно, чтобы были:
И другие компоненты. Для этого используют суперкритерий (другое название свертка):
Здесь k_i
- критерий оптимальности использования какого-то ресурса, а α
, β
, γ
- веса этих критериев. Цель - максимизировать k
с крышечкой. Далее алгоритм думает, как распределять ресурсы
В местах, где имеет место быть критическим процессам, помимо суперкритерия может использоваться условный критерий:
Цикл Деминга (Цикл PDCA)
Цикл PDCA состоит в следующем:
На основе него работает планировка задач. Например, если при рендеринге видео, запустить билд проекта, то скорость рендеринга сначала сильно уменьшится, но потом будет постепенно увеличиваться
Поддержка администрирования и эксплуатации
Диагностика - средства, которые в автономическом режиме прогнозируют и анализируют отказ компонентов
Восстановление - автоматизация восстановления
Например, при неправильном извлечении диска, данные в редких случаях могут быть неправильно записаны, но журналирование файловой системы может восстановить данные по логам
Поддержка развития операционной системы
Обновление - архитектурно должны быть заложены механизмы обновления ОС
Кастомизация - способность изменять функционал под требуемые нужды (например, изменение ядра)