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




НазваниеРоссийской Федерации Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования
Дата публикации17.10.2016
Размер9.76 Kb.
ТипЛабораторная работа
Министерство образования и науки Российской Федерации

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

Московский авиационный институт
(национальный исследовательский университет)


Кафедра 304

Отчёт по лабораторным работам по курсу

«Операционные системы»
Лабораторная работа №4


Выполнил студент гр.13-401

Волосюк К.Г.

Принял доцент кафедры 304

КТН, Корнеенкова А.В.

Москва 2013

Лабораторная работа № 4

Семафоры и синхронизация процессов


Для хранения процессов, ожидающих как обычные, так и бинарные семафоры, используется очередь. При этом возникает вопрос о порядке извлечения процессов из данной очереди. Наиболее корректный способ — использование принципа "первым вошел — первым вышел" (first-in-first-out — FIFO). При этом первым из очереди освобождается процесс, который был заблокирован дольше других.

Семафор, использующий данный метод, называется сильным семафором (strong semaphore). Семафор, порядок извлечения процессов из очереди которого не определен, называется слабым семафором (weak semaphore). На рис. 5.2 (из [DENN84]) приведен пример работы сильного семафора. Здесь процессы А, В и С зависят от результатов работы процесса D. Изначально работает процесс А (®); процессы В, С и D находятся в списке активных процессов, ожидая своей очереди. Значение семафора равно 1, это указывает на то, что один из результатов работы процесса D имеется в наличии.

Когда процесс А выполняет инструкцию wait, он тут же получает разрешение на дальнейшую работу и вновь становится в очередь на выполнение в списке активных процессов. Затем приступает к работе процесс В (©), который в конечном счете также выполняет инструкцию wait, в результате чего процесс приостанавливается, давая возможность приступить к работе процессу D (®).

Когда процесс D завершает работу над получением нового результата, он выполняет инструкцию signal, которая позволяет процессу В перейти из списка приостановленных процессов в список активных (®). Процесс D присоединяется к списку активных процессов, и к выполнению приступает процесс С (©), но тут же приостанавливается при выполнении инструкции wait. Точно так же приостанавливается и выполнение процессов А и В, давая возможность процессу D приступить к работе (©).

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

http://life-prog.ru/os/untitled-7_clip_image1002.jpg
Требуется разработать:

  1. примитивы V(S), P(S), SIGNA, WAIT, работающие в среде процессов p1 и p2;

  2. структуру данных ресурса R;

  3. структуру указателя описи ресурса;

  4. структуру очереди с ее заголовком;

  5. программу вставки в очередь Insert[q];

  6. программу удаления Remove[q];

  7. распределитель Allocator;

  8. построить программу динамического моделирования обращений к R от двух процессов p1 и p2.

Листинг программы:

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Threading;

using System.Diagnostics;

using System.Threading.Tasks;
namespace MutSem

{

class Program

{

static void Main(string[] args)

{

int threadCount = 6;

int semaphoreCount = 1;

Semaphore semaphore = new Semaphore(semaphoreCount, semaphoreCount);

Thread[] threads = new Thread[threadCount];

for (int i = 0; i < threadCount; i++)

{

threads[i] = new Thread(ThreadMain);

threads[i].Start(semaphore);

}
for (int i = 0; i < threadCount; i++)

{

threads[i].Join();

}

Console.WriteLine("Все потоки завершены");

}

static void ThreadMain(object о)

{

Semaphore semaphore = о as Semaphore;

Trace.Assert(semaphore != null, "о должны иметь тип Semaphore");

bool isCompleted = false;

while (!isCompleted)

{

if (semaphore.WaitOne(600, false))

{

try

{

Console.WriteLine("Поток {0} заблокировал семафор", Thread.CurrentThread.ManagedThreadId);

Thread.Sleep(2000);

}

finally

{

semaphore.Release();

Console.WriteLine("Поток {0} снял блокировку с семафора", Thread.CurrentThread.ManagedThreadId);

isCompleted = true;

}

}

else

{

Console.WriteLine("Тайм-аут для потока {0}; повторное ожидание", Thread.CurrentThread.ManagedThreadId);

}

}

}

}

}
Результат выполнения программы:
c:\users\кирилл\desktop\семофор.png

Похожие:

Российской Федерации Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования iconНауки Российской Федерации Федеральное государственное бюджетное...
Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования
Российской Федерации Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования iconНауки Российской Федерации Федеральное государственное бюджетное...
Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования
Российской Федерации Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования iconРоссийской Федерации Федеральное государственное бюджетное образовательное...
Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования
Российской Федерации Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования iconРоссийской Федерации Федеральное государственное бюджетное образовательное...
Филиала федерального государственного образовательного учреждения высшего профессионального образования
Российской Федерации Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования iconРоссийской Федерации Федеральное государственное бюджетное образовательное...
Цели и задачи дисциплины «исследование социально-экономических и политических процессов»
Российской Федерации Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования iconУчебно-методический комплекс учебная дисциплина «Теория государства и права»
Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования «Российская академия народного...
Российской Федерации Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования iconРабочая программа дисциплины «культурология»
Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования
Российской Федерации Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования iconИркутский государственный университет физический факультет
Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования
Российской Федерации Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования iconОтчет о самообследовании Федеральное государственное образовательное учреждение
Федерального агентства лесного хозяйства (Рослесхоза) Министерства природных ресурсов Российской Федерации №189 от 17. 04. 2007 года...
Российской Федерации Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования iconМетодические рекомендации по выполнению контрольных работ Оренбург
Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования
Вы можете разместить ссылку на наш сайт:
Школьные материалы


При копировании материала укажите ссылку © 2013
контакты
dopoln.ru
Главная страница