Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Курсовая работа по ОС.docx
Скачиваний:
12
Добавлен:
02.05.2015
Размер:
51.69 Кб
Скачать

Министерство образования и науки Российской Федерации

Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования

«Сибирская государственная автомобильно-дорожная академия

(СибАДИ)»

Факультет Информационные системы в управлении

Специальность Прикладная информатика

Кафедра Прикладная информатика в экономике

Пояснительная записка

к курсовому проекту

по дисциплине «Операционные системы»

Название работы «Реализация мониторов на известном языке программирования»

Выполнил: студент гр.ПИб-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. Наконец, стали появляться многопроцессорные рабочие станции и ПК. Параллельное аппаратное обеспечение используется больше, чем когда-либо, а параллельное программирование становится необходимым.

Параллельная программа содержит несколько процессов, работающих совместно над выполнением некоторой задачи. Каждый процесс— это последовательная программа, а точнее — последовательность операторов, выполняемых один за другим. Последовательная программа имеет один поток управления, а параллельная — несколько.

Совместная работа процессов параллельной программы осуществляется с помощью их взаимодействия. Взаимодействие программируется с применением разделяемых переменных или пересылки сообщений. Если используются разделяемые переменные, то один процесс осуществляет запись в переменную, считываемую другим процессом. При пересылке сообщений один процесс отправляет сообщение, которое получает другой.

При любом виде взаимодействия процессам необходима взаимная синхронизация. Существуют два основных вида синхронизации — взаимное исключение и условная синхронизация. Взаимное исключение обеспечивает, чтобы критические секции операторов не выполнялись одновременно. Условная синхронизация задерживает процесс до тех пор, пока не выполнится определенное условие. Например, взаимодействие процессов производителя и потребителя часто обеспечивается с помощью буфера в разделяемой памяти. Производитель записывает в буфер, потребитель читает из него. Чтобы предотвратить одновременное использование буфера и производителем, и потребителем (тогда может быть считано не полностью записанное сообщение), используется взаимное исключение. Условная синхронизация используется для проверки, было ли считано потребителем последнее записанное в буфер сообщение.