- •Учбово - методичні матеріали Основна література
- •Додаткова література
- •Методичні вказівки
- •Методичні вказівки до виконання лабораторних робіт
- •Лабораторна робота №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
2. Створення програм моделювання кількох процесів, що конкурують за спільні ресурси
Мета роботи. Засобами мови JAVA створити паралельні процеси, що асинхронно використовують спільні ресурси при допомозі моніторних повідомлень.
Основные вопросы, на которые сосредоточивается внимание разработчиков ОС, связанное с управлением процессами и потоками:
Многозадачность: управления множеством процессов в однопроцессорной системе.
Многопроцессорность: управление множеством процессов в многопроцессорной системе.
Распределенные вычисления: управление множеством процессов, выполняемых в распределенной вычислительной системе с множеством компьютеров (кластеры).
Рассмотрим в контексте многопроцессорности и многозадачности проблему параллельности выполнения процессов. Основным требованием поддержки параллельных процессов является возможность обеспечения взаимоисключений, то есть возможность обеспечить роботу только одного процесса с приостановлением выполнения всех остальных. При необходимости использовать один и тот же ресурс параллельные процессы вступают в конфликт друг с другом. В частности, если два процесса желают получить доступ до одного ресурса, то ОС выделит этот ресурс одному з процессов, тогда как второй процесс вынужден ожидать на завершение работы с ресурсом первого. Управление конкуренцией неизбежно приводит к участию ОС в этом процессе, поскольку именно она распределяет ресурсы.
2.1. Понятие процесса
Основным понятием, связанным с операционными системами, есть понятие вычислительный процесс или процесс - абстрактное понятие, которое описывает работу программы. Для ОС процесс представляет собой единицу работы, заявку на потребление системных ресурсов. В качестве примеров можно назвать следующие процессы (задачи): прикладные программы пользователей, утилиты и другие системные обрабатывающие программы.
Все современные компьютеры могут выполнять одновременно несколько дел. Например, одновременно из запущенной программы пользователя может выполняться чтение из дискеты и вывод текста на экран дисплея или принтер. В многозадачной системе процессор переключается между программами, предоставляя каждой из них определенный квант времени. При этом в каждый конкретный момент времени процессор занятый только одной программой, создавая параллельные работы со всеми программами.
Поэтому под процессом понимают программу вместе с данными и необходимыми ресурсами, которая выполняется вычислительной системой, включая текущие значения счетчика команд и регистров. Разумеется, на самом деле существует только один физический счетчик команд, в который загружается логический счетчик команд текущего процесса. Таким образом, все программное обеспечение, в том числе ОС, которые выполняются на компьютере, представляют собой ряд процессов.
2.2. Понятие ресурса
Определение концепции процесса преследует цель выработать механизм распределения и управления ресурсами. Понятие ресурса, также как и понятие процесса, являются, пожалуй, основными при рассмотрении ОС. Термин ресурс обычно применяется по отношению к повторно используемым объектам, которые запрашиваются, используются и освобождаются процессами в период их активности. Другими словами, ресурсом называется всякий объект, который может распределяться внутри системы.
Ресурсы могут быть разделяемыми (или делимыми), когда несколько процессов могут их использовать одновременно (в один и тот же момент времени) или параллельно (в течение некоторого интервала времени процессы используют ресурс попеременно), а может быть и неделимыми.
При разработке первых ОС ресурсами считались процессорное время, память, каналы ввода-вывода и периферийные устройства. Однако очень скоро понятие ресурса стало гораздо более универсальным и общим. Различного рода программные и информационные ресурсы также могут быть определены для системы как объекты, которые могут разделяться и распределяться. Более того, помимо системных ресурсов, о которых мы сейчас говорили, как ресурс стали толковать и такие объекты, как сообщения, которыми обмениваются задачи.
В свою очередь, некоторые разделяемые ресурсы могут быть выгружаемыми ресурсами. Образцом такого ресурса является память. Рассмотрим, например, систему с пользовательской памятью 64 Мбайт, одним принтером и двумя процессами по 64 Мбайт, каждый из которых хочет что-то напечатать. Загружается в память процесс А, запрашивает и получает принтер, затем начинает вычислять данные для печати. Еще не закончив расчеты, он превышает свой квант времени и выгружается на диск в область подкачки вместе с программой и расчетными данными, освобождая ресурс (память) для следующего процесса.
Теперь работает процесс В и безуспешно пытается обратиться к принтеру (неделимому ресурсу) и не может продолжить свою работу без принтера, который занят процессом А. В свою очередь, процесс В занимает память, и ни один из них не может продолжать работу без ресурса, удерживаемого другим. К счастью, можно выгрузить (забрать) память у процесса В, переместив его на диск в область подкачки и скачав с диска в память процесс А. Теперь процесс А может закончить вычисления, выполнить печать и затем освободить принтер.
Неделимый ресурс, в противоположность разделяемым (или делимым), - это такой ресурс, который нельзя забрать от текущего владельца, не уничтожив результаты его вычислений. Например, если в момент записи на компакт-диск внезапно отнять у процесса устройство, то в результате мы получим испорченный компакт-диск.
Последовательность событий, необходимых для использования ресурса представлена ниже в абстрактной форме.
Запрос ресурса.
Использование ресурса.
Возврат ресурса.
Если ресурс недоступен, когда он требуется, то запрашивающий его процесс вынужден ждать. В некоторых ОС при неудачном обращении к ресурсу процесс автоматически блокируется, и возобновляется только после того, как ресурс становится доступным. В других системах запрос ресурса, получивший отказ, возвращает код ошибки, тогда вызывающий процесс может подождать немного и повторить попытку заново.
