Введение в архитектуру UNIX. Лекция 2

Содержание

Слайд 2

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

Причины популярности UNIX

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

стандартов
Мощный модульный пользовательский интерфейс
Иерархическая файловая система
Большое количество свободно распространяемых приложений
Слайд 3

Архитектура UNIX

Архитектура UNIX

Слайд 4

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

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

периферийным устройствам
Слайд 5

Структура ядра

Структура ядра

Слайд 6

Основные подсистемы ядра Файловая подсистема Подсистема управления процессами и памятью Подсистема ввода/вывода

Основные подсистемы ядра

Файловая подсистема
Подсистема управления процессами и памятью
Подсистема ввода/вывода

Слайд 7

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

Файловая подсистема

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

доступа
Слайд 8

Подсистема управления процессами Создание и удаление процессов Распределение системных ресурсов Синхронизация процессов Межпроцессное взаимодействие

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

Создание и удаление процессов
Распределение системных ресурсов
Синхронизация процессов
Межпроцессное взаимодействие

Слайд 9

Подсистема ввода/вывода Обеспечение работы с периферийными устройствами Буферизация данных Взаимодействие с драйверами

Подсистема ввода/вывода

Обеспечение работы с периферийными устройствами
Буферизация данных
Взаимодействие с драйверами

Слайд 10

Инфраструктура процесса ОС UNIX

Инфраструктура процесса ОС UNIX

Слайд 11

Основные структуры данных процесса

Основные структуры данных процесса

Слайд 12

Структура proc

Структура proc

Слайд 13

Граф состояний процесса

Граф состояний процесса

Слайд 14

Состояния процесса (1) Режим задачи. Выполнение прикладных инструкций процесса Режим ядра.

Состояния процесса (1)

Режим задачи. Выполнение прикладных инструкций процесса
Режим ядра. Выполнение системных

инструкций от имени процесса
Готов к запуску. В очереди на выполнение
Слайд 15

Состояния процесса (2) Сон (ожидание недоступного ресурса) При переходе из режима

Состояния процесса (2)

Сон (ожидание недоступного ресурса)
При переходе из режима ядра в

режим задачи может произойти переключение контекста
Создан (fork)
Зомби (exit или по сигналу)
Слайд 16

Контекст процесса АП в режиме задачи Управляющая информация Окружение процесса Аппаратный контекст

Контекст процесса

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

Слайд 17

Переключение контекста Текущий процесс переходит в состояние сна, ожидая недоступного ресурса

Переключение контекста

Текущий процесс переходит в состояние сна, ожидая недоступного ресурса
Текущий процесс

завершает свое выполнение
После пересчета приоритетов в очереди на выполнение находится более высокоприоритетный процесс
Происходит пробуждение более высокоприоритетного процесса
Слайд 18

Прерывание от таймера (1) Обновление статистики использования процессора для текущего процесса

Прерывание от таймера (1)

Обновление статистики использования процессора для текущего процесса
Выполнение ряда

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

Прерывание от таймера (2) Обработка отложенных вызовов Обработка алармов Пробуждение системных

Прерывание от таймера (2)

Обработка отложенных вызовов
Обработка алармов
Пробуждение системных процессов (своппер, диспетчер

страниц)
Нотация главного тика
Слайд 20

Планирование процессов Системы пакетной обработки данных Интерактивные системы (системы разделения времени) Системы реального времени

Планирование процессов

Системы пакетной обработки данных
Интерактивные системы (системы разделения времени)
Системы реального времени

Слайд 21

Системы пакетной обработки данных Пропускная способность – максимальной количество задач в

Системы пакетной обработки данных

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

времени
Оборотное время – минимизация времени, затрачиваемого на ожидание обслуживания и обработку задачи
Использование процессора – поддержка постоянной занятости процессора
Слайд 22

Системы разделения времени Время отклика – быстрая реакция на запросы Соразмерность – выполнение пожеланий пользователя

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

Время отклика – быстрая реакция на запросы
Соразмерность – выполнение

пожеланий пользователя
Слайд 23

Системы реального времени Окончание работы к сроку – предотвращение потери данных

Системы реального времени

Окончание работы к сроку – предотвращение потери данных
Предсказуемость –

предотвращение деградации качества в мультимедийных системах
Слайд 24

Классы приложений Интерактивные Фоновые Реального времени

Классы приложений

Интерактивные
Фоновые
Реального времени

Слайд 25

Принципы управления памятью Примитивное управление памятью (специализированные микропроцессорные системы) Расширенное управление (чаще всего виртуальная память)

Принципы управления памятью

Примитивное управление памятью (специализированные микропроцессорные системы)
Расширенное управление (чаще всего

виртуальная память)
Слайд 26

Примитивное управление Нет защиты программ друг от друга и от ОС

Примитивное управление

Нет защиты программ друг от друга и от ОС
Заранее на

этапе компиляции надо знать физические адреса
Объем физической памяти будет ограничивать число процессов
Слайд 27

Виртуальная память (1) Выполнение задач, размер которых превышает размер ОП Выполнение

Виртуальная память (1)

Выполнение задач, размер которых превышает размер ОП
Выполнение частично загруженных

в память задач. Ускорение времени их запуска
Размещение нескольких задач одновременно в памяти
Слайд 28

Виртуальная память (2) Размещение задач в произвольном месте ОП Размещение задачи

Виртуальная память (2)

Размещение задач в произвольном месте ОП
Размещение задачи в нескольких

различных частях ОП
Совместное использование областей памяти (сегмент кода)
Слайд 29

Виртуальная и физическая память

Виртуальная и физическая память

Слайд 30

Селектор сегмента

Селектор сегмента

Слайд 31

Дескриптор сегмента (1)

Дескриптор сегмента (1)

Слайд 32

Дескриптор сегмента (2)

Дескриптор сегмента (2)

Слайд 33

Трансляция адреса с использованием механизма сегментации

Трансляция адреса с использованием механизма сегментации

Слайд 34

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

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

Слайд 35

Адресное пространство процесса 32-разрядный линейный адрес (4Г) Старший (1Г) АП ядра

Адресное пространство процесса

32-разрядный линейный адрес (4Г)
Старший (1Г) АП ядра – 256

элементов каталога страниц
Младшие (3Г) АП задачи – 768 элементов каталога страниц
Слайд 36

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

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

Слайд 37

Страничный механизм в основном реализуется за счет аппаратной поддержки, но ОС

Страничный механизм в основном реализуется за счет аппаратной поддержки, но ОС

отвечает за:
Размещение в памяти каталога таблиц страниц и таблиц страниц
Установка отображения путем записи соответствующих значений в таблицы страниц
Обработка страничных ошибок
Управление сверхоперативным кэшем
Обеспечение обмена между ОП и ВП
Слайд 38

Ранние версии UNIX (свопинг)

Ранние версии UNIX (свопинг)

Слайд 39

Принципы страничного замещения Принцип загрузки (fetch policy) Принцип размещения (placement policy) Принцип замещения (replacement policy)

Принципы страничного замещения

Принцип загрузки (fetch policy)
Принцип размещения (placement policy)
Принцип замещения (replacement

policy)
Слайд 40

Страничное замещение по требованию

Страничное замещение по требованию

Слайд 41

Возможное местонахождение страниц процесса

Возможное местонахождение страниц процесса

Слайд 42

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

Преимущества страничного замещения

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

очень быстро
Большее число программ может быть загружено и выполняться одновременно
Перемещение отдельных страниц между ОП и ВП требует меньших затрат
Слайд 43

Алгоритмы замещения страниц (1) Оптимальный алгоритм (практически неосуществим) NRU (Not Recently

Алгоритмы замещения страниц (1)

Оптимальный алгоритм (практически неосуществим)
NRU (Not Recently Used) не

использовавшаяся в последнее время страница
FIFO первым прибыл, первым обслужен
Вторая попытка (усовершенствованный FIFO)
Слайд 44

Алгоритмы замещения страниц (2) Часы (другая реализация алгоритма «Вторая попытка») LRU

Алгоритмы замещения страниц (2)

Часы (другая реализация алгоритма «Вторая попытка»)
LRU (Least Recently

Used) страница, не использовавшееся больше всего
NFU (Not Frequently Used) редко использовавшаяся страница
Старение
Рабочий набор
WSClock
Слайд 45

Оптимальный алгоритм Выгрузить страницу, которая не будет использована больше всего. Можно

Оптимальный алгоритм

Выгрузить страницу, которая не будет использована больше всего.
Можно реализовать только

для конкретной программы с заранее заданным входным набором данных
Слайд 46

NRU (1) Используется 2 бита: R (Referenced) обращение M (Modified) изменение

NRU (1)

Используется 2 бита:
R (Referenced) обращение
M (Modified) изменение

Слайд 47

NRU (2) 4 класса страниц: Не было обращений и изменений Не

NRU (2)

4 класса страниц:
Не было обращений и изменений
Не было обращений, страница

изменена
Было обращение, страница не изменена
Произошло и обращение и изменение
Слайд 48

NRU (3) Удаление страницы в непустом классе с наименьшим номером

NRU (3)

Удаление страницы в непустом классе с наименьшим номером

Слайд 49

FIFO Ведется список всех страниц, находящихся в данный момент в памяти.

FIFO

Ведется список всех страниц, находящихся в данный момент в памяти.
При страничном

прерывании выгружается страница из головы списка, а новая добавляется в хвост списка.
Слайд 50

Вторая попытка Модифицированный алгоритм FIFO. При попытке удаления у страницы проверяется

Вторая попытка

Модифицированный алгоритм FIFO.
При попытке удаления у страницы проверяется бит R.

Если он равен 0, то страница удаляется, если – нет, то бит сбрасывается и страница помещается в начало списка как только что загруженная.
Слайд 51

Часы Модифицированный алгоритм «Вторая попытка». Список страниц является кольцевым, что снижает

Часы

Модифицированный алгоритм «Вторая попытка».
Список страниц является кольцевым, что снижает затраты на

перемещение страниц из головы в хвост списка.
Слайд 52

LRU Выгружается из памяти страница, не использовавшаяся больше всего. Сложно реализовать

LRU

Выгружается из памяти страница, не использовавшаяся больше всего.
Сложно реализовать алгоритм, так

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

NFU Для каждой страницы ведется счетчик. После каждого прерывания от таймера

NFU

Для каждой страницы ведется счетчик. После каждого прерывания от таймера к

счетчику прибавляется значение бита R.
Для выгрузки выбирается страница с наименьшим значением счетчика.
Алгоритм «ничего не забывает» в пределах каждого процесса
Слайд 54

Старение Модификация алгоритма NFU. Каждый счетчик перед прибавлением R сдвигается вправо

Старение

Модификация алгоритма NFU.
Каждый счетчик перед прибавлением R сдвигается вправо на один

разряд. Прибавление осуществляется в крайний левый бит. Практика показывает, что 8 бит достаточно
Слайд 55

Рабочий набор Все программы характеризуются локальностью обращений к памяти. Можно использовать

Рабочий набор

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

страниц из «рабочего набора» текущего процесса.
Трудность алгоритма определения «рабочего набора»
Слайд 56

WSClock Модификация алгоритма «рабочего набора». Используются «часы» в виде кольцевого списка.

WSClock

Модификация алгоритма «рабочего набора». Используются «часы» в виде кольцевого списка. С

каждой страницей связано время ее загрузки с диска
Слайд 57

Лучшими алгоритмами являются: старение и WSClock

Лучшими алгоритмами являются:
старение и WSClock

Слайд 58

Создание процесса Системный вызов fork() Создается точная копия родительского процесса за некоторыми отличиями

Создание процесса

Системный вызов fork()
Создается точная копия родительского процесса за некоторыми отличиями

Слайд 59

Отличия родительского и дочернего процессов (1) Уникальный идентификатор PID Отличается идентификатор

Отличия родительского и дочернего процессов (1)

Уникальный идентификатор PID
Отличается идентификатор родителя PPID
Дочерний

процесс получает собственную копию u-area (файловые дескрипторы, но записи разделяются)
Слайд 60

Отличия родительского и дочернего процессов (2) Очищаются ожидающие доставки сигналы Обнуляется

Отличия родительского и дочернего процессов (2)

Очищаются ожидающие доставки сигналы
Обнуляется временная статистика

(время выполнения в режиме ядра и режиме задачи)
Блокировки памяти и записей не наследуются
Слайд 61

Отличия родительского и дочернего процессов (3) Возвращаемое значение fork() родительский процесс

Отличия родительского и дочернего процессов (3)

Возвращаемое значение fork()
родительский процесс –

PID потомка
дочерний процесс – 0
Слайд 62

Действия, выполняемые fork() (1) Резервирует место в области свопинга для сегмента

Действия, выполняемые fork() (1)

Резервирует место в области свопинга для сегмента данных

и стека
Размещает и инициализирует новую запись в таблице процессов и присваивает PID
Слайд 63

Действия, выполняемые fork() (2) Размещает карты отображения, необходимые для трансляции адреса

Действия, выполняемые fork() (2)

Размещает карты отображения, необходимые для трансляции адреса
Размещает u-area

и копирует ее содержимое с родительского процесса
Слайд 64

Действия, выполняемые fork() (3) Инициализирует аппаратный контекст, копируя его с родительского

Действия, выполняемые fork() (3)

Инициализирует аппаратный контекст, копируя его с родительского процесса
Устанавливает

возвращаемое значение fork()
Состояние – готов к запуску
Слайд 65

Запуск новой программы Системный вызов exec() Не порождает нового процесса Происходит

Запуск новой программы Системный вызов exec()

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

процесса
Анализирует содержимое исполняемого файла
Слайд 66

Действия, выполняемые exec() (1) Производит трансляцию имени файла Анализирует заголовок файла

Действия, выполняемые exec() (1)

Производит трансляцию имени файла
Анализирует заголовок файла
Обрабатывает биты setuid

и setgid
Сохраняет аргументы вызова и переменные окружения
Слайд 67

Действия, выполняемые exec() (2) Резервирует место в области свопинга для сегмента

Действия, выполняемые exec() (2)

Резервирует место в области свопинга для сегмента данных

и стека
Освобождает старые области процесса и свопинга
Слайд 68

Действия, выполняемые exec() (3) Размещает и инициализирует карты отображения, необходимые для

Действия, выполняемые exec() (3)

Размещает и инициализирует карты отображения, необходимые для трансляции

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

Действия, выполняемые exec() (4) Копирует сохраненные аргументы и переменные окружения в

Действия, выполняемые exec() (4)

Копирует сохраненные аргументы и переменные окружения в новый

стек процесса
Устанавливает обработчики сигналов
Инициализирует аппаратный контекст процесса
Слайд 70

Завершение выполнения процесса Добровольно exit() Принудительно по сигналу Процесс освобождает все

Завершение выполнения процесса

Добровольно exit()
Принудительно по сигналу
Процесс освобождает все ресурсы и переходит

в состояние зомби
Слайд 71

Действия, выполняемые при завершении (1) Отключает все сигналы Закрывает все открытые

Действия, выполняемые при завершении (1)

Отключает все сигналы
Закрывает все открытые файлы
Сохраняет статистику

использования вычислительных ресурсов и код возврата в записи таблицы процессов
Слайд 72

Действия, выполняемые при завершении (2) Состояние – зомби Процесс init –

Действия, выполняемые при завершении (2)

Состояние – зомби
Процесс init – родитель для

всех потомков данного процесса
Освобождает адресное пространство процесса, u-area, карты отображения и области свопинга