
- •Понятие и классификация ос
- •Основные задачи:
- •Эволюция ос
- •Основные понятия и концепции ос
- •Классификация ос
- •По особенности алгоритма управления ресурсом.
- •По особенностям аппаратных платформ.
- •По особенностям методов построения.
- •Управление процессами
- •Операции над процессами.
- •Алгоритмы планирования
- •2 Группы алгоритмов планирования
- •Потоки (Thread)
- •Средства взаимодействия и синхронизация процессов
- •Семафоры
- •Типовые ситуации с использованием s-ов.
- •Взаимное исключение на семафоре:
- •Синхронизация на семафоре:
- •Семафор как счетчик ресурсов:
- •Взаимоблокировки
- •Неделимые транзакции
- •Архитектура и управление процессами в ос семейства Windows
- •В каждой Windows системе выполняются процессы:
- •Процесс windows состоит из:
- •Синхронизация потоков
- •Для связи между процессами используются:
- •Архитектура процессов Unix.
- •Управление процессами.
- •Создание новых процессов.
- •Межпроцессное взаимодействие.
- •Файловая система
- •Функции файловой системы:
- •Типы файлов:
- •Структуризация фалов
- •Адресация и доступ к файлам
- •Размещение в виде связанного списка блоков дисковой памяти.
- •Использования связанного списка индексов.
- •Операции над файлом
- •Обобщённая модель файловой системы.
- •Отображаемые в память файлы.
- •Современная архитектура файловой системы.
- •Файловые системы windows.
- •Файловая система Fat.
- •Структура разделов под fat
- •Структура каталога ntfs
Синхронизация потоков
Лекция № 5 111012
Описатели объектов ядра handle зависят от конкретного процесса. Существуют способы работы с одними и теми же объектами ядра из разных процессов:
Наследование описателя.
Дублирование описателя с помощью системной функции Duplicatehandle.
Именование объекты ядра. При создании объекта ядра для синхронизации mutex, семафор и т.д. Можно задать ему уникальное имя в системе.
Для связи между процессами используются:
Разделяемая память, включая возможность преобразования страниц ОС в страницы файлов на диске и наоборот.
Анонимные каналы. Для двухстороннего обмена между дочерними и родительскими процессами. Или между 2 дочерними.
Именованные каналы. Двухсторонний обмен между процессом сервером и одним или несколькими процессами и клиентами. Могут использоваться для обмена данными локально или по сети.
Сокеты (дейтаграмм, потоков). Представляют собой абстрактный объект для обозначения одного из концов сетевого соединения.
Сообщения.
Архитектура процессов Unix.
Unix (UnixAIX) многозадачная многопользовательская система, оперирующая 2 типами базовых объектов:
Файлы, включая пользовательскую информацию, доступ к устройствам, интерфейсы процессного взаимодействия.
Процессы.
Архитектура системы включает монолитное ядро, системные утилиты, резидентные программы (постоянно находящаяся в ОС - демоны), пользовательские программы.
Существует
2
уровня доступа:
системный и пользовательский.
Рис. 1.
Доступ к структурам ядра осуществляется через файловый интерфейс.
Управление процессами.
Дескрипторы всех процессов описываются структурой proc и объединяются в список (таблица процессов), память для которой динамически выделяется в области ядра.
Контекст процесса описывается структурой user и хранится непосредственно примыкая к образу процесса, перемещаясь вместе с ним.
Обе структуры доступны только программам ядра. При необходимости выполнить действия в привилегированном режиме, программа генерирует системный вызов и управление передаётся соответствующей программе ядра. С этого момента процесс считается системным.
Фазы процесса: пользовательская и системная.
Контекст
процесса
включает его идентификатор PID(номер
таблицы дескрипторов), идентификатор
родительского процесса (PPID)
и данные о состоянии. При завершении
процесса его уникальный номер может
быть передан другому. Все процессы
образуют иерархию, корнем которой
является процесс init.
Для процессов характерно особое состояние
(зомби).
Процесс получает его, если завершился
раньше, чем этого ожидал его родитель.
Рис. 2. Смена состояний процесса
Рис.
3. Планирование процессов на основе
циклической очереди с приоритетом.
На основании значения приоритета определяется возможность процесса прибывать в основной памяти. Размер временного кванта процесса и места в общей очереди процессов.
Используется система динамически изменяющихся приоритетов. При создании процесса ему приписывается установленный системой статический приоритет, изменяемый при помощи системного вызова nice.
Все процессы с динамический приоритетом не ниже порогового значения участвуют в конкуренции за процессор.
Рис.4. Распределение номеров приоритетов.
Высокий 0
приоритеты 1
реального …
времени 38
39
Пользовательские 40
приоритеты 41
(по умолчанию) …
254
Низкий приоритет 255
(wait)
Приоритеты реального времени являются фиксированными и такие процессы могут быть запущены только root-пользователем. Приоритет потов вычисляется как:
Priority=x_nice+[([_nice+4)/64*(CPUpenalty)]
x_nice = значение nice + базовый приоритет
если p_nice >60
то x_nice = (p_nice*2)-60
иначе
x_nice = p_nice
CPU penalty = CPU usage * R/32 / поумолчанию R = 16.
Каждый квант времени на выполнение CPUusage увеличивается на единицу.