Антон Шумихин - Архитектура ОС

Preview:

Citation preview

ITDays.1.0Днепропетровск, март 2010

Операционная система как «душа» компьютера

Разновидности ОСЯдро ОСДрайвера и прикладные

программыИнтерфейс пользователя

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

Интерфейсы ОС

Загрузка программ в память и их выполнение

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

Обеспечение человеческого интерфейса

Взаимодействие компьютеров по сети

Бытовые и промышленные приборы

АвтомобилиМобильные средства связиИгровые приставки

1970 - год начала компьютерной эры Кен Томпсон и Брайан Ричи

формируют основные требования и концепции ОС

Они создают UNIX В конце 70х университет Berkeley

добавляет сетевую подсистему и выпускает BSD

В начале 80х Билл Гейтс основывает Microsoft и выпускает PC DOS

В середине 80х Ричард Столмен организует фонд свободного ПО и проект GNU по разработке бесплатной и открытой ОС

Стив Джобс и Стив Возняк, основатели Apple, выпускают дистрибутив Macintosh

В начале 90х Линус Торвальдс начинает разработку ядра Linux по подобию Unix

Microsoft выпускает Windows 3.11, 95, 98, ME

Параллельно развивает линию NT и выпускает Windows 2000 (NT 4), XP, 2003, Vista, 2008 и 7.0

В начале 2000х Apple выпускает Mac OS X

В середине 2000х появляется дистрибутив Gnu\Linux Ubuntu

62% (XP), 17% (Vista), 7% (Win7)

9% (Mac OS X), 1% (iPhone OS)

3% (GNU\Linux)

Плюсы: Легко использовать Обновления и поддержка

Минусы: Дорогая Нестабильная и незащищенная

Плюсы: Легко использовать Защищенная и стабильная Красивый дизайн

Минусы: Дорогая

Плюсы: Бесплатная с открытым кодом Защищенная и стабильная Скромные требования к оборудованию Легко программировать

Минусы: Трудна для освоения Нет официальной поддержки

Программы, управляющие другими программами (микроядро)

Программы, управляющие оборудованием (макроядро)

Планировщик – занимается распределением процессорного времени между программами

Менеджер памяти – регулирует использование памяти программами и ОС

Межпроцессный обмен – позволяет программам взаимодействовать друг с другом

Файловая система – обеспечивает долговременное хранилище данных

Драйвер – это программное расширение для ядра ОС

Файловых систем (FAT, NTFS, EXT, HFS)

Периферийных устройствСетевые драйверыЛюбая программа, работающая в

режиме ядра

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

Утилиты для конфигурирования ОС

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

Оболочки (пользовательские интерфейсы): текстовые и графические

Совокупность ядра ОС и системных программ

Программа – набор инструкций Процесс – выполняющаяся программа Процесс – контейнер ресурсов ОС для

некоторой программы: память для инструкций, несколько нитей выполнения, описатели файлов и сокетов

Для процесса отводится 4 Гб (32-битная ОС) или 16 Тб (64-битная ОС) памяти

Первые 3 Гб отводятся для кода программы

Последние 4Гб – для кода ОСИ так для каждого процессаСейчас редко на компьютере есть

хотя бы 4 Гб оперативной памяти, а раньше было еще меньше

ОС для процесса создает иллюзию наличия нужного объема памяти

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

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

Таким образом, если процессу не хватает памяти, ОС начинает использовать дисковое пространство

Для Windows – pagefile.sys в корне системного раздела

Для Mac и Linux – отдельный раздел диска или несколько файлов

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

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

Первая – для инструкций обычной программы

Вторая – для инструкций ОС Только инструкции из второй области

памяти могут напрямую обращаться к аппаратуре компьютера

Они называются инструкциями, выполняемыми в режиме ядра

Инструкции из первой области работают в режиме пользователя

Это обычные прикладные программы

Системный вызов – обращение пользовательского кода к функциям ОС

Нить – последовательность инструкция

Каждый процесс имеет, как минимум, одну нить выполнения - главную

Планировщик по таймеру переключает нити внутри процессов, а не процессы

Создается иллюзия параллельного выполнения программ

Каждая нить может быть в двух основных состояниях: сон и выполнение

Выполнение может быть в режиме пользователя или режиме ядра

Переключение между режимами происходит по программному или аппаратному прерыванию процессора

Файл – это некогда именованная область памяти

Файловая система (абстрактно) – дерево файлов, не обязательно физически существующих

Файловая система (физически) – набор записей на диске определенного формата

Каталог (директория, папка) – специальный файл с информацией о других файлах

Ссылка (ярлык) – специальный файл, указывающий на другой конкретный файл

Популярные файловые системы: FAT32 (флешки, дискеты), NTFS (Windows), HFS+ (Mac OS X), Ext (Linux)

Сокет (гнездо) – абстракция ОС на подобии файла для работы с сетью

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

Программа, выводящая слово «Hello» на языке программирования С (файл hello.c):

int main(){ puts("Hello"); return 0;}

Препроцессор

Компилятор

Ассемблер

Редактор

Откомпилированные файлы

hello.c

Программист

Статические

библиотеки

hello.i hello.s

hello.o

Динамические

библиотеки

hello.exe

.lib, .a.dll, .so, .dylib

.o, .obj

Программа

Компоновщик

Загрузчик

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

Следование, ветвление и цикл

Зацикливаются (при этом «висит» всё)

Некоторые нити засыпают в ожидании системного вызова

Различают командный и графический интерфейсы пользователя (оболочка)

ITDays.1.0Днепропетровск, март 2010