- •Системное программное обеспечение
- •Разд. 1. Операционные системы и среды
- •Тема 1.1. Структура программного обеспечения вычислительной системы
- •Тема 1.2 Назначение, функции и структура операционной системы
- •1.2.1 Типы ос. Системы реального времени и операционные системы реального времени
- •Тема 1.3. Управление временем центрального процессора
- •Рекомендуется всегда проверять возвращаемое значение Res. Получение и использование процессом ссылок на себя
- •Использование потоков при разработке приложений
- •1.3.3 Синхронизация взаимодействующих потоков
- •Interlocked – функции.
- •Семафорные примитивы Дейкстры
- •Решение проблемы критических участков с помощью семафорных примитивов Дейкстры
- •1.3.4 Синхронизации потоков средствами операционной системы
- •Пример 2
- •Пример 3 Поток_1 Поток_2
- •1.3.5. Проблема тупиков и методы борьбы с тупиками
- •Взаимного исключения, при котором процессы имеют монопольный доступ к ресурсам;
- •Ожидания, при котором процесс, запрашивающий ресурс, ждет до тех пор, пока запрос не будет удовлетворен, удерживая ранее полученные ресурсы;
- •Методы борьбы с тупиками
- •Тема 1.4 Управление памятью
- •Защищенный режим процессоров Intel и его возможности
- •1.4.2. Реализация многозадачного режима в защищенном режиме процессоров фирмы Intel
- •Аппаратная поддержка многозадачности
- •Обработка прерываний в реальном режиме. Вектора прерываний.
- •Режимы работы мп 386
- •Системный режим
- •Особенности s – режима.
- •Организация виртуальной памяти
- •Управление страничной памятью в ос ms Windows
- •Линейный адрес
- •1.4.4. Разделы в виртуальном адресном пространстве процесса
- •Области применения dll
- •Основные dll ms Windows:
- •Создание dll
- •Использование dll (импорт функций из dll)
- •Неявная загрузка dll (неявное подключение)
- •Явная загрузка dll
- •Выполнение процедур инициализации и деинициализации Dll
- •Тема 1.6 Структура ms Windows и драйверы режима ядра
- •Тема 1.7 Управление вводом-выводом и файловые системы Win32
- •Эволюция файловых систем эвм
- •Раздел 2. Программирование в операционной среде
- •Тема 2.1. Ассемблеры и макроязыки
- •2.1.1. Этапы подготовки программы к выполнению
- •Операнды команд
- •Алгоритмы работы Ассемблеров
- •Двухпроходный Ассемблер - 1-й проход
- •2.1.2. Макроязыки
- •Заголовок макроопределения
- •Окончание макроопределения
- •Локальные переменные макроопределения
- •Присваивание значений переменным макроопределения
- •Оператор безусловного перехода и метки макроопределения
- •Тема 2.2.Трансляторы
- •2.3.1. Трансляторы. Компиляторы и интерпретаторы. Мобильность программного обеспечения
- •Тема 2.3 Формальные языки и грамматики
- •Синтаксический и лексический анализатор
- •Детерминированные и недетерминированные автоматы
- •Алгоритм синтаксического анализа
- •Пример 1
- •Пример 2
1.2.1 Типы ос. Системы реального времени и операционные системы реального времени
Операционные системы в зависимости от количества одновременно выполняемых задач делятся на однозадачные и многозадачные.
Многозадачные ОС делятся на однопользовательские и многопользовательские.
Многопользовательские ОС делятся на офисные, серверные и ОС реального времени.
Системы реального времени делятся на ОС жесткого реального времени и ОС мягкого реального времени.
Обзор современных операционных систем. Перспективные ОС
Современные операционные системы – ОС фирмы Microsoft – MS Windows 2000, XP, Serwer 2003, Windows , операционные системы UNIX и Linux.
Перспективная операционная система - MS Windows 8.
Управление ресурсами. Понятие ресурса. Виды ресурсов
Вычислительный процесс - выполнение отдельной программы с её данными на процессоре.
Ресурсом ПК называется любой объект, который может распределяться при работе системы. Ресурсы могут быть разделяемыми, если несколько процессов могут использовать его одновременно, или параллельно (попеременно) используемыми, или неделимыми.
Виды ресурсов
Время центрального процессора (ЦП) (разделяемый, используется попеременно потоками).
Оперативная память (разделяемый, используется одновременно или параллельно)
Внешние устройства (разделяемый – винчестер; неразделяемый – магнитная лента, стриммер; модем – разделяемый ресурс).
Информационные ресурсы:
Данные на внешних устройствах (файлы).
Программные модули:
Реентерабельные (прерываемые в любой момент);
Повторно входимые – состоящие из секций. Прерывание и повторное вхождение возможно после завершения выполнения секции;
Нереентерабельные. Последовательно исполняемые или выполняемые в режиме последовательной многозадачности. Требует меньше памяти, чем реентерабельные, поскольку локальные данные могут не храниться в стеке.
Состояния вычислительного процесса
Вычислительный процесс может находиться в одном из трёх состояний:
Готовность к выполнению
Выполнение
Ожидание, блокировка.
Рисунок 1- 2 – диаграмма состояний процесса в офисной ОС
Д
ля
систем реального времени в наборе
состояний задач определено четвёртое
состояние: бездействие.
Выполнение
Бездействие
Готовность
Блокировка
Рисунок 1-3 – диаграмма состояний процесса в ОС реального времени
Реализация управления задачами в ОС
Для управления задачами ОС должна располагать необходимой информацией о каждой задаче. На каждую задачу заводится специальная структура – описатель задачи или дескриптор процесса. Он включает в себя:
идентификатор процесса (PID);
переменную состояния (в каком состоянии находится процесс);
область памяти для сохранения регистров ЦП (контекст задачи);
приоритет процесса;
информацию о ресурсах процесса: открытые файлы, состояние ввода-вывода.
Тема 1.3. Управление временем центрального процессора
1.3.1. Процессы и потоки. Задания
Ранее в MS DOS и Win 3. 1 процесс определялся как экземпляр выполняемой программы. В отличие от MS DOS, процессы в Win 32 инертны, т. е. В Win 32 процесс ничего не выполняет.
Процесс владеет:
4 Гб адресным пространством (при выполнении на 32-х разрядном ЦП).
Файлами.
Одним или несколькими потоками.
Процесс обладает:
базовым классом приоритета;
маркером доступа (access token);
рабочим множеством страниц оперативной памяти.
Процессы
Чтобы процесс что-нибудь выполнил, в нем нужно создать поток (Thread). В принципе, один процесс может содержать несколько потоков и они одновременно используют код в адресном пространстве процесса. Для этого каждый поток должен поток располагать собственным набором регистров процессора, а каждый процесс – как минимум – одним потоком.
Чтобы все эти потоки работали, ОС отводит каждому из них определенное процессорное время (квант времени). Время выдается потокам квантами по кругу (см. рис. 4):
Рисунок 1- 4 - схема выделения квантов времени потокам
При создании процесса первичный поток создается системой автоматически, далее первичный поток может создавать дополнительные потоки, используя функцию CreateThread (параметры);
Потоки также могут создаваться драйверами режима ядра.
В Win9x, ME - потоки выполняются одним процессором.
В WinNT, 2000, XP Windows Server — за потоком может быть закреплен отдельный процессор (процессоров может быть до 4 (32)), тогда потоки действительно выполняются параллельно.
В Win2000 введено понятие задания (JOB).
Задание - объект ядра, обеспечивающий управление одним или несколькими процессами как группой.
Процесс может входить только в одно задание.
Задания необходимы для расширения возможностей управления процессами (потоками) - на сервере в том числе:
1. завершить все потоки задания
2. установить ограничения на потоки задания:
ограничение числа одновременно выполняющихся процессов заданий;
общий лимит на процессорное время (после истечения времени все процессы будут завершены);
индивидуальные лимиты времени на процессорное время пользовательского режима (для каждого процесса);
приоритета для всех потоков;
минимальный и максимальный размер рабочего множества страниц в ОП.
Нити (Fiber) – позволяют программисту управлять выполнением участков программы.
Функции ОС по управлению процессами и потоками.
1. создание и завершение процессов и потоков;
2. получение информации о процессах и потоках;
3. изменение приоритета процессов и потоков;
4. синхронизация потоков.
Процесс может породить другой процесс, используя функцию
CreateProcess();
Рисунок 5 – порождение процесса
Процесс Пр1порождает процесс Пр2, который в свою очередь порождает процессы Пр3 и Пр4.
Диспетчеризация потоков. Дисциплины диспетчеризации
Известные дисциплины диспетчеризации делятся на:
бесприоритетные (в современных ОС практически не используются);
приоритетные.
Приоритетные дисциплины делятся на дисциплины:
с относительными приоритетами;
с абсолютными приоритетами.
Дисциплины с абсолютными приоритетами делятся на дисциплины:
с фиксированными приоритетами;
с динамическими приоритетами.
В Win32 используется дисциплина диспетчеризации с абсолютными приоритетами – с фиксированными и динамическими приоритетами.
Уровни приоритета в Win32. Классы приоритетов процессов и потоков
Используется 32 уровня приоритета – уровень 31 самый высокий, 0 – самый низкий. Уровни приоритета разбиты на 3 группы (см. рис. 6).
16
31
Статические
приоритеты реального времени
Рисунок 1- 6 – группы приоритетов потоков
Приоритет потока равен базовому значению приоритета потока, к которому может быть добавлена динамическая составляющая. Динамическая составляющая добавляется при определенных условиях операционной системой к значениям приоритета потока в интервале от 1 до 14.
Базовый приоритет потока Win32 устанавливается, исходя из класса приоритета его процесса и уровня относительного приоритета.
В Win32 определены следующие классы приоритета процесса:
реального времени – RealTime со значением 24;
высокий – High со значением 13;
выше среднего – Above normal со значением 10;
обычный – Normal со значением 8;
ниже среднего – Below normal со значением 6;
низкий – Idle со значением 4.
В Win32 определены следующие уровни относительного приоритета потока:
Time Critical;
Highest;
Above Normal;
Normal;
Below Normal;
Lowest;
Idle.
Таблица 1. Базовые значения приоритета потоков в Win 32
Относительный приоритет потока |
Класс приоритета процесса |
|||||
Idle(4) |
Normal (-8) |
High(13) |
Real_Time(24) |
|||
(-1)фоновый |
ст.(0) |
Повыш.(+1) |
||||
Time Critical |
15 |
15 |
15 |
15 |
15 |
31 |
Highest |
6 |
9 |
10 |
11 |
15 |
26 |
Above Normal |
5 |
8 |
9 |
10 |
14 |
25 |
Normal |
4 |
7 |
8 |
9 |
13 |
24 |
Below Normal |
3 |
6 |
7 |
8 |
12 |
23 |
Lowest |
2 |
5 |
6 |
7 |
11 |
22 |
Idle |
1 |
1 |
1 |
1 |
1 |
16 |
Не все значения приоритета могут быть установлены.
Установка базового приоритета потока выполняется в два этапа. На первом этапе с помощью функции Res := SetPriorityClass (Handle, Class) устанавливается базовый класс приоритета процесса. Затем с использованием функции
Res:= SetThreadPrioriry (Handle, Prioritet)
задается базовый приоритет потока.
