ОС. Эволюция. Устройство. Управление задачами и ресурсами

advertisement
СИСТЕМНОЕ И ПРИКЛАДНОЕ
ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ
Лекция 2.
ОС: Эволюция. Общее устройство.
Управление задачами. API.
Взаимодействие процессов.
Эволюция
операционных систем
Эволюция ОС
1. Библиотеки ввода-вывода
2. «Мониторы» (1950е)
•
•
автоматизация исполнения заданий
обработка программных ошибок
3. Мультипрограммные ОС для мейнфреймов
(1960е)
•
•
многопользовательский режим
мультипрограммирование
-
•
пакетная обработка
разделение времени
привелегированный и прикладной режимы
работы
3
Эволюция ОС
Сетевые ОС (1970е)
4.
•
распределённое хранение и обработка данных
ОС мини-компьютеров
5.
•
UNIX
-
конец 70х – начало 80х: TCP/IP, университетские сети
разнообразие версий UNIX породило стандарт POSIX
Персональные компьютеры (1980е)
6.
•
возврат к однопользовательским однозадачным системам
Современность
7.
•
развитие сетей (Internet с середины 90х)
-
•
серверные ОС с повышенными требованиями к безопасности
встраиваемые и мобильные решения
-
виток эволюции мобильных ОС
ОС реального времени
4
Классификации ОС
По назначению
• общего назначения
• специальные
• для встроенных
систем
• для организации
баз данных
• для решения
задач реального
времени
По организации работы
с ВС
• однопользовательские
• многопользовательские
По архитектуре ядра
• монолитные
• микроядерные
5
Классификации ОС
По режиму обработки
• с однопрограммным режимом
• с мультипрограммным режимом
• Системы пакетной обработки
- Главный критерий – пропускная способность,
минимизация простоев
- Переключение процессора инициирует задача
• Системы разделения времени
- Главное – интерактивность работы
- Приложениям выделяются кванты процессорного
времени
• Системы реального времени
- Главное – соблюдение заданного времени отклика
- Управление технологическими процессами и объектами
6
Общее устройство ОС
Основные функции ОС
• Управление привилегиями доступа
• Пользовательский интерфейс
• Управление исполнением приложений
• исполнение задач
• планирование и диспетчеризация
- в т.ч., контроль времени ответа для ОС реального времени
• коммуникации между задачами
• сервисные функции (API)
• защищённый режим работы приложений
• Управление вводом-выводом
• Упавление памятью
• Сервисные функции
8
Архитектура ОС
Ядро
• Функции, решающие внутрисистемные
задачи
• Переключение контекста, загрузка/выгрузка
страниц, обработка прерываний
• API – системные вызовы
Структура ядра:
• Монолитная – ядро является цельной
программой
• Микроядерная – состоит из набора
самостоятельных программ и
координирующего их работу микроядра
9
Архитектура ОС
Остальные модули ОС (вне ядра)
• Утилиты
• решают отдельные сервисные задачи
(дефрагментация, диагностика)
• Системные обрабатывающие программы
• редакторы, компиляторы, компоновщики
• Пакет пользовательских программ
• файловый менеджер, эмулятор терминала
• Библиотеки процедур
• Математические функции, функции ввода-вывода,
и т.п
10
Архитектура ОС
Многослойная структура ОС
Ядро может содержать
• Средства аппаратной поддержки ОС
• Средства поддержки привилегированного режима,
средства переключения контекстов, защиты
областей памяти
• Машинно-зависимые компоненты
• Уровень абстракции от аппаратуры
• Базовые механизмы ядра
• Менеджеры ресурсов
• Интерфейс системных вызовов
11
Архитектура ОС
Принципы построения ядра
Монолитное ядро
• Единственный способ добавить новые
компоненты – пересборка ядра
• Основные функции ОС выполняются в
привилегированном режиме
• Ядро имеет доступ к памяти приложений
• Взаимодействие программы с ядром –
посредством системных вызовов
• Каждый процесс должен иметь свой
собственный стек режима пользователя и
стек режима ядра
12
Архитектура ОС
Принципы построения ядра
13
Архитектура ОС
Принципы построения ядра
Микроядерная архитектура
• Все компоненты, кроме микроядра, самостоятельные процессы
• Взаимодействие компонентов – через
обмен сообщениями
• Микроядро обеспечивает
• взаимодействие между процессорами
• первичную обработку прерываний
• базовое управление памятью
14
Архитектура ОС
Принципы построения ядра
15
Архитектура ОС
Принципы построения ядра
• Менеджеры ресурсов – серверы ОС
• обслуживают запросы от других процессов
16
Архитектура ОС
Принципы построения ядра
В привилегированном режиме микроядерной
ОС работает только само микроядро
17
Архитектура ОС
Сравнение подходов
Монолитное ядро
+ Высокая скорость
+ Простота
проектирования (нет
жётской модульности)
- Сложность
модификации, требует
пересборки ядра
- Низкая надёжность за
счёт работы всех
модулей в едином
адресном пространстве,
чревато крахом
Микроядро
- Накладные расходы
снижают производительность
- Сложно минимизировать
взаимодействие между
слоями
+ Модульность облегчает
модификации
+ Проще процесс отладки
+ Выше надёжность
18
Управление задачами
Управление задачами
Основные функции ОС:
• создание и удаление задач
• планирование и диспетчеризация задач
• синхронизация задач, обеспечение их
средствами коммуникации
20
Управление задачами
Операции ОС
• создание (порождение)/уничтожение
процесса
• приостановка/возобновление процесса
• блокирование/пробуждение процесса
• запуск процесса
• изменение приоритета процесса
21
Создание и удаление
процессов и потоков
Создание процесса:
• создать дескриптор
• загрузить код и данные процесса в ОП
• создать главный поток выполнения
• дескриптор потока
Завершение процесса:
• закрыть все файлы
• освободить память
• код, данные, системные структуры
• скорректировать очереди и списки ресурсов
22
Планирование и
диспетчеризация задач
Планирование:
• определение момента переключения
• выбор потока для выполнения из очереди
Стратегии планирования
• заканчивать вычисления в том же порядке, в
каком они начаты
• приоритет коротким процессам
• равенство пользователей (включая время
ожидания)
23
Планирование и
диспетчеризация задач
• Статическое планирование
• системы реального времени
• весь набор одновременных задач
определён заранее
• Динамическое планирование
• во время работы, анализ текущей ситуации
• потоки и процессы появляются
выполняются недетерминированно по
времени
24
Планирование и
диспетчеризация задач
Диспетчеризация – переключение в
соответствии с планом
• сохранение контекста текущего потока,
который требуется сменить
• загрузка контекста нового потока, выбранного
в результате планирования
• запуск нового потока на выполнение
Контекст потока
• общая часть – ссылки на файлы, ресурсы
• индивидуальная – содержимое регистров,
режим процессора, флаги
25
Алгоритмы планирования
• Невытесняющие
• активный поток сам передаёт управление
системе
• разработчики программ решают задачу
планирования, разбивая приложение на
части
• Вытесняющие
• ОС принимает решение и переключает
задачи
• механизмы квантования или приоритетов
26
Алгоритмы планирования
Невытесняющие алгоритмы
Достоинства
• исключено внезапное прерывание
задачи
• нет условий гонки – монопольная
работа
• более быстрое переключение задач
Недостатки
• сложнее разрабатывать программы
• зацикливание потока блокирует систему
27
Алгоритмы планирования
Вытесняющие алгоритмы
Основанные на квантовании
• каждый поток получает квант времени
• кванты разных задач могут различаться
(в среднем, десятки мс)
Основанные на приоритетах
• задача снимается с выполнения при
появлении новой задачи более
высокого приоритета
28
Стратегии планирования
• обслуживание в порядке поступления
• невытесняющая
• приоритет коротким процессам
• невытесняющая бесприоритетная
• круговая схема (round robin)
• вытесняющая с квантованием
• планирование согласно приоритетам
• вытесняющая реального времени
• смешанный тип
• сочетаются квантование и приоритеты
29
Интерфейс прикладного
программирования ОС
Application Programming
Interface
Назначение:
• Доступ прикладным программам к
системным ресурсам и функциям ОС
Виды API:
• Интерфейс Runtime-библиотек (RTL)
• API прикладных/системных программ в
составе ОС
• прочие
31
Варианты реализации API
• На уровне модулей ОС
•
•
•
•
за выполнение функций API отвечает ОС
объектный код – часть ОС
SDK отвечает только за вызов функций ОС
высокая эффективность, низкая переносимость
• На уровне SDK
• RTL предлагает унифицированный интерфейс
- абстрагирует от конкретных вызовов API ОС
• SDK обеспечивает связывание с RTL
- на конкретной платформе может быть своя реализация
• снижается эффективность, растёт переносимость
- требуется перекомпиляция
• Внешние библиотеки
• случаи, выходящие за рамки компетенции runtime-библиотек
32
Пример API vs. RTL
• malloc() – функция CRT для выделения памяти
• в Windows API её общее содержимое:
void * malloc (size_t size)
{
// проверки
return HeapAlloc(_crtheap, 0, size ? size
: 1);
}
где HeapAlloc – системная функция Windows.
• в glibc реализация malloc куда сложнее (для POSIXсистем использует системные вызовы brk/sbrk)
33
Стандарт POSIX
• Portable Operating System Interface for Unix
• «Переносимый интерфейс операционных систем Unix»
• стандарт API UNIX-систем (и не только)
• Отдельные документы покрывают ту или иную часть
системных функций:
• POSIX.1, Корневые службы (включает стандарт ANSI C)
- процессы, ввод-вывод, память, сигналы, пайпы, таймеры, и т.п.
• POSIX.1b, Расширения реального времени
- планирование, RT-сигналы, I/O, память, таймеры, и проч.
• POSIX.1c, Расширения потоков
- создание потоков, планирование, синхронизация
• POSIX.2, Командная оболочка и утилиты
34
Пример: POSIX vs. WinAPI
#include
#include
#include
#include
#include
<sys/types.h>
<sys/stat.h>
<wait.h>
<fcntl.h>
<stdio.h>
int processFile( char *fileName)
{
int handle, numRead, total = 0;
char buf;
// файл открывается на чтение
handle = open( fileName, O_RDONLY);
DWORD processFile(LPVOID lpFileName )
{
HANDLE handle; // описатель файла
DWORD numRead, total = 0;
char buf;
// файл открывается на чтение:
handle = CreateFile(
(LPCTSTR)lpFileName,
GENERIC_READ, FILE_SHARE_READ,
NULL, OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL, NULL);
// цикл чтения до конца файла
do {
// чтение одного символа из файла
ReadFile(
handle, (LPVOID) &buf, 1,
&numRead, NULL);
if (buf == 0x20) total++;
} while ( numRead > 0);
// цикл чтения до конца файла
do {
// чтение одного символа из файла
numRead = read( handle, &buf, 1):
if (buf == 0x20) total++;
} while (numRead > 0);
// закрытие файла
close( handle);
fprintf( stderr, "(ThreadID: %Lu), File
%s. spaces = %d\n", GetCurrentThreadId(),
lpFileName, Total);
return total;
// закрытие файла
CloseHandle( handle);
}
return 0;
}
35
Пример: POSIX vs. WinAPI
// определён ранее:
int processFile(char * fileName);
// определён ранее:
DWORD processFile(LPVOID lpFileName);
int main(int argc, char *argv[])
{
int i, pid, status;
for (i = 1; i < argc; i++) {
// запускаем дочерний процесс
pid = fork();
if (pid == 0) {
// если выполняется дочерний процесс
printf("(PID: %6). File %s. spaces %d\n“,
getpid(),
argv[i],
processFile( argv[i]));
// выход из процесса
exit();
}
// если выполняется родительский
процесс
else {
printf(
"processFile started (pid=%d)\n",
pid);
}
}
// ожидание завершения процессов
if (pid != 0) while (wait(&status)>0);
return 0;
}
int main(int argc, char *argv[])
{
int i;
DWORD pid;
HANDLE hThrd[255]; // дескрипторы потоков
for (i = 0; i < (argc-1); i++) {
// запуск потока
hThrd[i] = CreateThread(
NULL, 0x4000,
(LPTHREAD_START_ROUTINE) \
processFile,
(LPVOID) argv[i+l], 0, &pid);
fprintf(
stdout,
"processFile started (HND=Xd)\n",
hThrd[i]);
}
// ожидание окончания работы всех потоков
WaitForMultipleObjects(
argc-1,
hThrd,
true,
INFINITE);
return 0;
}
36
Организация
взаимодействия
процессов
Взаимодействие процессов
• Независимые процессы
• не воздействуют друг на друга
• Взаимодействующие процессы
• конкурирующие
- доступ к общим переменным
• сотрудничающие
- результаты работы одного передаются другому
38
Взаимодействие процессов
Ресурсы
• разделяемые
• используются совместно
• доступ разных процессов разделяется по времени
• критические
• не допускают общего использования
Синхронизация потоков
• приостановка потока до наступления события
• активизация потока при его наступлении
39
Взаимодействие процессов
Проблемы отсутствия синхронизации
• Возникновение гонок
• конечный результат неопределён и зависит
от случайного порядка работы потоков
• Взаимные блокировки (тупики, дедлоки)
• несколько процессов ждут событий,
порождаемых одним из ожидающих
процессов
40
Средства синхронизации
Критическая секция
• определяется для критических данных
• предотвращает несогласованные
изменения (гонку)
Примеры
• два потока работают с одним счётчиком
• транзакции при работе с БД
41
Средства синхронизации
Семафоры
• Переменная специального типа,
доступная параллельным процессам
для операций «закрытия» и «открытия»
• При отказе доступа к ресурсу
используется механизм ожидания
• при активации процесс выполняет
повторную попытку обращения к семафору
• либо считает попытку успешной и
переходит дальше
42
Средства синхронизации
Обмен сообщениями
• Отправление и получение сообщений
могут быть блокирующими и
неблокирующими
• Типичные комбинации:
• рандеву (блокирующие отправка и
получение)
• неблокирующее отправление,
блокирующее получение – самое частое
• неблокирующие операции
43
Средства синхронизации
Обмен сообщениями
Получение сообщений
• блокирующее – более естественная форма
•
•
при сбое или потере сообщения процесс
блокируется навсегда
неблокирующее
•
чтобы избежать потери сообщения, нужно
выполнять доп. проверки
Адресация сообщений
• прямая (указание отправителя или
получателя)
• косвенная (отправка через совместные
структуры – «почтовые ящики»)
44
Средства синхронизации
Почтовые ящики
Основные достоинства
• процессу не нужно знать о других процессах, пока он
не получит сообщения от них
• два процесса могут обмениваться более чем одним
сообщением за один раз
• ОС может гарантировать невмешательство в
общение двух процессов
• очереди буферов позволяют процессу-отправителю
продолжать работу, не обращая внимание на
получателя
Недостатки
• ещё один ресурс, которым нужно управлять
• статический характер этого ресурса
45
Средства синхронизации
Конвейеры
• Конвейер – программный канал связи (поток
данных между процессами)
• устроен по принципу кольцевого буфера
• FIFO-обработка
46
Средства синхронизации
Очереди сообщений
• Для очередей возможны разные стратегии
обработки:
•
•
•
•
FIFO
LIFO (last in – first out)
приоритетная выборка
произвольный доступ
• В отличие от канала, сообщение не
удаляется из очереди при чтении
• В очередь помещается только указатель и
размер сообщения
47
Download