Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Курсовик Риня / Курсовик / Отчет по ОС.doc
Скачиваний:
57
Добавлен:
15.06.2014
Размер:
161.79 Кб
Скачать

Омский государственный технический университет.

КАФЕДРА Информатики и вычислительной техники.

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

к курсовой работе

по курсу " Операционные системы ".

ВЫПОЛНИЛ студент гр. ИВТ-345

_______________ Гимадиев Р.М.

ПРОВЕРИЛ

______________ Флоренсов А.Н.

ОМСК 2007.

Вариант №29

Разработка многопоточной программного приложения для операционной системы Windows.

Разработать для ОС типа Windows многопоточную программную имитацию работы лифта. Лифт перемещается между пятью этажами. Фиксированное число N потенциальных пассажиров двигаются независимо друг от друга. На первом этаже каждый из них дожидается появления лифта, ожидая, если оказывается необходимым, в очереди, и входит в лифт для подъема на случайно вычисляемый этаж. Грузоподъемность лифта 3 человека. После выхода из лифта пассажиры с различной скоростью движутся по этажу и затем спускаются по "лестнице" вниз на первый этаж. Программа должна перед началом работы вводить значение числа N. Поведение модели должно отображаться на экране в текстовом режиме с помощью текстов и символов по усмотрению разработчика. Поведение пассажиров должно имитироваться с помощью отдельных нитей. Для правильного взаимодействия использовать семафоры.

Описание программы

В данной программе изображён лифт перемещающийся между 5 этажами. Для отображения лифта,этажей и пассажиров использовалась функция WriteConsoleOutputCharacter, для удобства координаты считались при помощи цикла for

пр:

for (i=1;i<40;i++)

{k.X=i; k.Y=9;

WriteConsoleOutputCharacter(hout,"_",1,k,NULL);}

символ х выводится начиная с координаты (1;9) по (40;9)

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

пр:

pk=VverhL(pk,1); //vverh na 2-oy etaj

r=random(5); //proverka na vihod

if (r==1) //если выходит

{

pk=Vniz(pk,num+1); //выходим из лифта

ar[num-1]++;

Ожидание пассажиров около лифта организованно при помощи функции WaitForSingleObject, соответственно для освобождения перекрёстка после его проезда используется функция ReleaseSemaphore. Для установления курсора перед вводом количества людей, использовалась функция SetConsoleCursorPosition.

Для поочередности входа в лифт используется семафор. В начале программы происходит процесс его создания CreateMutex.

Все нити выполняются бесконечное количество раз при помощи цикла while.

По окончании программы все хэндлы нитей закрываются CloseHandle.

Соседние файлы в папке Курсовик