- •Учбово - методичні матеріали Основна література
- •Додаткова література
- •Методичні вказівки
- •Методичні вказівки до виконання лабораторних робіт
- •Лабораторна робота №1
- •1.2. Кешування даних
- •1.2.2. Принцип дії кеш-пам'яті
- •1.3. Вступ до мови програмування Java
- •1.3.1. Виконання Java-програми
- •1.3.2. Що таке jdk
- •1.3.3. Як використовувати jdk
- •1.3.4. Проста програма на Java
- •1.4. Завдання до лабораторної роботи
- •Лабораторна робота № 2
- •2. Створення програм моделювання кількох процесів, що конкурують за спільні ресурси
- •2.1. Понятие процесса
- •2.2. Понятие ресурса
- •2.3. Модель процесса
- •2.4. Создание процесса
- •2.5. Завершение процесса
- •2.6. Состояние процессов
- •2.7. Описание процессов
- •2.8. Управляющие структуры ос
- •2.9. Структуры управления процессами
- •2.9.1. Местоположение процесса
- •2.9.2. Атрибуты процессов
- •Идентификация процессов
- •Информация о состоянии процесса
- •Управляющая информация процесса
- •2.10. Управление процессами
- •2.11. Потоки. Симметричная многопроцессорная обработка
- •2.11.1. Понятие потока
- •2.11.2. Модель потока
- •2.11.3. Использование потоков
- •2.12. Потоки на уровне пользователя и на уровне ядра
- •2.12.1. Потоки на уровне пользователя (ult)
- •2.12.2. Потоки на уровне ядра (klt)
- •2.12.3. Комбинированные подходы
- •2.12.4. Всплывающие потоки
- •Многозадачность в Java. Учебный пример создания и запуска потоков в Java, часть 1
- •Вопросы для самопроверки
- •2.14. Принципы параллельных вычислений
- •2.14.1. Участие операционной системы
- •2.14.2. Взаимодействие процессов
- •2.14.3. Требования к взаимным исключениям
- •2.14.4. Многозадачность в Java. Учебный пример Производитель-Потребитель, часть 2
- •Результаты выполнения программы, 1-й вариант
- •Результаты выполнения программы, 2-й вариант
- •Результаты выполнения программы, 3-й вариант
- •Вопросы для самопроверки
- •2.15. Взаимоисключения: программный подход
- •2.15.1. Алгоритм Деккера
- •2.15.2. Алгоритм Петерсона
- •2.16. Семафоры
- •2.17. Взаимные исключения
- •Листинг 2.8. Взаимоисключения с использованием семафоров
- •2.18. Задача “Производителя-Потребителя” ("Писатель-Читатель")
- •2.19. Мониторы
- •2.19.1. Мониторы с сигналами (мониторы Хоара)
- •2.19.2. Мониторы с оповещением и широковещанием
- •2.19.3. Многозадачность в Java. Учебный пример Производитель-Потребитель, часть 3
- •Результаты выполнения программы, 1-й вариант
- •Результаты выполнения программы, 2-й вариант
- •Вопросы для самопроверки
- •2.20. Завдання на виконання роботи
- •Таб. 2.1. Варіанти завдань
- •Лабораторна робота № 3
- •3. Створення програм моделювання кількох процесів-виробників та процесів-споживачів, що обмінюються інформацією через буферний пул
- •3.1. Теоретичні відомості
- •3.2. Завдання на виконання роботи
- •Лабораторна робота № 4
- •4. Моделювання процесів, що конкурують за спільні ресурси з використанням методів планування
- •4.1. Призупинені процеси
- •4.2. Завдання на виконання роботи
- •Лабораторна робота № 5
- •5. Моделювання Управління процесами та потоками в ос linux Мета роботи. Засвоєння методу планування процесів ос linux, основаному на керуванні пріоритетами та їхнього моделювання засобами мови java.
- •5.1. Процеси у linux
- •5.2. Потоки у linux
- •5.3. Завдання на виконання роботи
2.10. Управление процессами
Перед тем как обсудить метод, который ОС использует для управления процессами, рассмотрим сначала расхождения между режимами работы процессора при выполнении кода ОС, и при выполнении кодов программ пользователя. Большинство процессоров поддерживают два режима работы. Определенные команды выполняются только в более привилегированном режиме. К ним относятся команды чтения или внесения изменений в управляющие регистры (LDTR , GDTR и др.), команды ввода-вывода, а также команды, которые связанные с управлением памятью. Кроме того, доступ к некоторым участкам памяти может быть разрешен только в привилегированном режиме.
Режим с меньшими привилегиями называют режимом пользователя, так как в нем выполняются программы пользователя. Режим с более высокими привилегиями называется системным режимом (system mode), режимом управления (control mode) или режимом ядра (kernel mode). Ядро - это часть ОС, которая выполняет важнейшей ее функции. Приблизительный перечень функций ядра.
Управление процессами
- Создание и завершение процессов
- Планирование и диспетчеризация процессов
- Переключение процессов
- Синхронизация и поддержка обмена информацией между процессами
- Организация управляющих блоков процессов
Управление памятью
- выделение адресного пространства процессам
- Свопинг
- Управление страницами и сегментами
Управление ввдом-выводом
- Управление буферами
- Выделение процессам каналов и устройств ввода-вывода
Функции поддержки
- Обработка прерываний
- Учет использования ресурсов
- Текущий контроль системы
С приведенного легко понять, для чего нужны два выше упомянутых режима. Это необходимо для защиты ОС и ее основных структур, таких как управляющие блоки процессов, от возможного влияния программ пользователей. Программы, которые работают в режиме ядра, имеют полный контроль над процессором и всеми его командами и регистрами, а также имеют доступ к всем ячейкам памяти. Такой уровень привилегий для программ пользователей не нужный, поэтому, исходя из соображений безопасности, лучше сделать его недоступным для программ пользователя.
В связи с этим возникает два вопроса: каким образом процессор может определить, в каком режиме может выполняться данная программа, и как осуществляется переключение с одного режима в другой? Относительно первого вопроса, то в PSW программы есть специальный бит (VM), где указан режим выполнения. При некоторых событиях возникает изменение этого бита. Например, если программа вызовет сервис ОС, устанавливается режим ядра (обычно это возникает в результате выполнения команд изменения режима).
2.11. Потоки. Симметричная многопроцессорная обработка
2.11.1. Понятие потока
Говоря о процессах, мы отмечали, что операционная система поддерживает их обособленность: у каждого процесса имеется свое виртуальное адресное пространство, каждому процессу назначаются свои ресурсы - файлы, окна и т.д. Такая обособленность нужна для того, чтобы защитить один процесс от другого, поскольку они, совместно используя все ресурсы машины, конкурируют друг с другом. В общем случае процессы принадлежат разным пользователям, разделяющим один компьютер, и ОС берет на себя роль арбитра в спорах процессов за ресурсы. Понятие процесса было введено для реализации идей мультипрограммирования. При мультипрограммировании повышается пропускная способность системы, но отдельный процесс никогда не может быть выполнен быстрее, чем если бы он выполнялся в однопрограммном режиме (всякое разделение ресурсов замедляет работу одного из участников за счет дополнительных затрат времени на ожидание освобождения ресурса).
Однако задача, решаемая в рамках одного процесса, может обладать внутренним параллелизмом, который в принципе позволяет ускорить ее решение. Например, в ходе выполнения задачи происходит обращение к внешнему устройству, и на время этой операции можно не блокировать полностью выполнение процесса, а продолжить вычисления по другой "ветви" процесса. Таким образом, для реализации “мультизадачности” в ее истинном толковании необходимо тоже ввести соответствующую сущность. Такой сущностью и стали так называемые “легковесные” процессы, или, как их теперь называют, - потоки или треды (нити, thread). Рассмотрим эти понятия подробнее.
