- •Пояснительная записка
- •Задание
- •Оглавление
- •1 Введение
- •2.Основная часть
- •2.1 Описание методологии мониторов
- •2.2 Синтаксис и семантика
- •2.3 Взаимное исключение
- •2.4 Условные переменные
- •2.5 Дисциплины сигнализации
- •2.6 Взаимоисключительность
- •2.7 Применение
- •3 Заключение Список используемых источников
Министерство образования и науки Российской Федерации
Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования
«Сибирская государственная автомобильно-дорожная академия
(СибАДИ)»
Факультет Информационные системы в управлении
Специальность Прикладная информатика
Кафедра Прикладная информатика в экономике
Пояснительная записка
к курсовому проекту
по дисциплине «Операционные системы»
Название работы «Реализация мониторов на известном языке программирования»
Выполнил: студент гр.ПИб-14И1
Никитин Н.С.
Проверил преподаватель
Олейник Л.Е.
Омск 2014
Министерство образования и науки Российской Федерации
Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования
«Сибирская государственная автомобильно-дорожная академия
(СибАДИ)»
Задание
на курсовой проект (работу)
по дисциплине «Операционные системы»
студенту гр. Пиб14-И1 Никитину Никите Сергеевичу
1.Тема проекта (работы) : «Реализация мониторов на известном языке программирования»
2. Исходные данные к проекту (работе), в том числе рекомендуемая литература :
литературные источники, интернет-сайты.
3. Содержание расчетно-пояснительной записки (перечень подлежащих разработке вопросов):
___________________________________________________________________________
4. Перечень графического материала: нет
5. Презентация курсового проекта (работы) ___________________________________________________________________________
Срок сдачи студентом законченного проекта (работы) 31.12.2014 года
Руководитель курсового проекта (работы): Олейник Л.Е.
Консультант курсового проекта (работы): нет
Задание принял к исполнению: Никитин Н.С.
подпись студента дата
Содержание
Оглавление
1 ВВЕДЕНИЕ 4
2.ОСНОВНАЯ ЧАСТЬ 7
2.1 Описание методологии мониторов 7
2.2 Синтаксис и семантика 8
2.3 Взаимное исключение 10
2.4 Условные переменные 11
2.5 Дисциплины сигнализации 14
2.6 Взаимоисключительность 16
2.7 Применение 17
3 Заключение 19
Список используемых источников 20
1 Введение
Монитор — в языках программирования, высокоуровневый механизм взаимодействия и синхронизации процессов, обеспечивающий доступ к неразделяемым ресурсам. Подход к синхронизации двух или более компьютерных задач, использующих общий ресурс, обычно аппаратуру или набор переменных. [1]
Пер Бринч Хансен был первым, кто описал и реализовал мониторы, основывая их на идеях Хоара. Впоследствии Хоар разработал теоретическую основу и показал её эквивалентность семафорам (используя исходную семантику). Впервые воплощён в языке Concurrent Pascal и использован для структурирования межпроцессного взаимодействия в операционной системе Solo.
Параллельное программирование возникло в 1962 г. с изобретением каналов — независимых аппаратных контроллеров, позволявших центральному процессору выполнять новую прикладную программу одновременно с операциями ввода-вывода других (приостановленных) программ. Параллельное программирование (слово параллельное в данном случае означает "происходящее одновременно") первоначально было уделом разработчиков операционных систем. В конце 60-х годов были созданы многопроцессорные машины. В результате не только были поставлены новые задачи разработчикам операционных систем, но и появились новые возможности у прикладных программистов.
Первой важной задачей параллельного программирования стало решение проблемы так называемой критической секции. Эта и сопутствующие ей задачи ("обедающих философов", "читателей и писателей" и т.д.) привели к появлению в 60-ё годы огромного числа научных работ. Для решения данной проблемы и упрощения работы программиста были разработаны такие элементы синхронизации, как семафоры и мониторы. К середине 70-х годов стало ясно, что для преодоления сложности, присущей параллельным программам, необходимо использовать формальные методы.
На рубеже 70-х и 80-х годов появились компьютерные сети. Для глобальных сетей стандартом стал Arpanet, а для локальных— Ethernet. Сети привели к росту распределенного программирования, которое стало основной темой в 80-х и, особенно, в 90-х годах. Суть распределенного программирования состоит во взаимодействии процессов путем передачи сообщений, а не записи и чтения разделяемых переменных.
Сейчас стала заметной необходимость обработки с массовым параллелизмом, при которой для решения одной задачи используются десятки, сотни и даже тысячи процессоров. Также видна потребность в технологии клиент-сервер, сети Internet и World Wide Web. Наконец, стали появляться многопроцессорные рабочие станции и ПК. Параллельное аппаратное обеспечение используется больше, чем когда-либо, а параллельное программирование становится необходимым.
Параллельная программа содержит несколько процессов, работающих совместно над выполнением некоторой задачи. Каждый процесс— это последовательная программа, а точнее — последовательность операторов, выполняемых один за другим. Последовательная программа имеет один поток управления, а параллельная — несколько.
Совместная работа процессов параллельной программы осуществляется с помощью их взаимодействия. Взаимодействие программируется с применением разделяемых переменных или пересылки сообщений. Если используются разделяемые переменные, то один процесс осуществляет запись в переменную, считываемую другим процессом. При пересылке сообщений один процесс отправляет сообщение, которое получает другой.
При любом виде взаимодействия процессам необходима взаимная синхронизация. Существуют два основных вида синхронизации — взаимное исключение и условная синхронизация. Взаимное исключение обеспечивает, чтобы критические секции операторов не выполнялись одновременно. Условная синхронизация задерживает процесс до тех пор, пока не выполнится определенное условие. Например, взаимодействие процессов производителя и потребителя часто обеспечивается с помощью буфера в разделяемой памяти. Производитель записывает в буфер, потребитель читает из него. Чтобы предотвратить одновременное использование буфера и производителем, и потребителем (тогда может быть считано не полностью записанное сообщение), используется взаимное исключение. Условная синхронизация используется для проверки, было ли считано потребителем последнее записанное в буфер сообщение.