66546

МНОГОПОТОЧНОСТЬ. МЕЖПРОЦЕССНЫЕ ВЗАИМОДЕЙСТВИЯ

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

Информатика, кибернетика и программирование

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

Русский

2014-08-22

64.6 KB

0 чел.

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

Санкт-Петербургский государственный политехнический университет

Факультет технической кибернетики

Кафедра «Информационная безопасность компьютерных систем»

ОТЧЕТ

по лабораторной работе №5

«МНОГОПОТОЧНОСТЬ. МЕЖПРОЦЕССНЫЕ ВЗАИМОДЕЙСТВИЯ»

по курсу «Операционные системы»

Выполнил

студент гр. 2088/4    А.А.Чернышев

                           <подпись>

Руководитель     А.С. Коноплев

                           <подпись>

Санкт-Петербург

2011

  1.  Формулировка задания

Цель работы изучение процессов разработки многопоточных приложений для семейств ОС UNIX и Windows, стандартных механизмов взаимодействия процессов.

2. Использованные теоретические сведения

Материалы из методического пособия 05.pdf, материалы интернет ресурсов msdn.com, и rus-linux.net, unix-manuals.com.

3. Результаты работы

3.1. Выполнение индивидуального задания

Windows. Написать программу, создающую два потока, которые выполняются в одном адресном пространстве (в одном процессе). Их разделяемый ресурс - целочисленный массив, который содержит данные совместного использования. Потоки должны обрабатывать массив поочередно. Использовать критическую секцию для синхронизации. Пример обработки массива: нахождение суммы всех элементов, вывод этой суммы на экран и запись её в первый элемент массива.

Была разработана следующая программа: один поток находит сумму всех элементов и записывает эту сумму в первый элемент; второй поток выводит элементы массива.

//=========================CRIT=============================//

//========================WINDOWS===========================//

#include<windows.h>

#include<iostream>

using namespace std;

CRITICAL_SECTION cs;

int ar[]={2,5,6,4,3};

int coutn;

void SumArr();

int sem=0;

int main() {

       HANDLE htr;

       DWORD dwId;

       InitializeCriticalSection(&cs);

 htr=CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)SumArr,NULL,0,&dwId);

       Sleep(130);

  while(ar[0]<1000) {

   while (sem == 0);

   sem = 1;

               EnterCriticalSection(&cs);

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

               cout<<ar[i]<<" ";

               cout<<endl;

               LeaveCriticalSection(&cs);

   sem = 0;

       }

       

       CloseHandle(htr);

       DeleteCriticalSection(&cs);

       cin.get();

       return 0;

}

void SumArr() {

       while(ar[0]<1000) {

  while (sem == 1);

   sem = 0;

       int sum=0;

  EnterCriticalSection(&cs);

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

               sum+=ar[i];

   ar[0]=sum;

       LeaveCriticalSection(&cs);

 sem = 1;

       }

}

В результате работы получаем:

3.2. Ответы на контрольные вопросы

Как организовать критическую секцию программы при помощи функций работы с семафорами потоков Linux?

Перед входом в критическую секцию необходимо осуществить вызов sem_wait(), с целью захвата ресурса – оповещения других потоков о входе в критическую секцию. После выходя необходимо освободить ресурс, осуществив вызов sem_post().

Как организовать критическую секцию в Windows?
Способ аналогичен приведённому выше, но следует использовать вызовы EnterCriticalSection() и LeaveCriticalSection()

Какие средства межпроцессорного взаимодействия в UNIX вы знаете?

Каждый процесс в ОС UNIX выполняется в собственном виртуальном адресном пространстве. Адресные пространства процессов изолированы, даже родственные процессы, образованные в результате ветвления через системный вызов fork(), принадлежащие одному пользователю и исполняющие одну программу не могут напрямую обращаться к данным в адресном пространстве друг друга. Для обмена данными между несколькими параллельными процессами и обеспечения их синхронизации ядро UNIX поддерживает специальные ресурсы – средства межпроцессорного взаимодействия (inter - process communication facilities, IPC), доступ процессов к этим ресурсам осуществляется через системные вызовы ядра. Современные версии UNIX поддерживают широкий набор IPC, при использовании каждого из них ядро обеспечивает как взаимодействие процессов,

так некоторые правила разграничения доступа к IPC для исключения нежелательных взаимодействий между процессами различных пользователей.

В качестве простейших средств межпроцессного взаимодействия можно рассматривать файлы (регулярные, каталоги, файлы устройств и пр.) на файловой системе UNIX. Для синхронизации процессов при доступе к файлам поддерживается возможность установки и проверки блокировок на отдельные

участки файлов (см. описание вызова fcntl()).

Другими характерными для UNIX средствами межпроцессного

взаимодействия являются: сигналы, неименованные каналы (pipe), именованные каналы (файлы fifo).

4. Выводы

Операционные системы Windows и UNIX обеспечивают достаточный набор механизмов, использующихся при взаимодействии потоков и процессов.


 

А также другие работы, которые могут Вас заинтересовать

35446. ПСИХИАТР, ПСИХОТЕРАПЕВТ, ПСИХОЛОГ – WHO ЕСТЬ КТО 35.5 KB
  В тот день я подумал идя домой что одна из главных проблем всех заинтересованных в этом споре сторон определиться в терминах к примеру понятие параноидный для психиатра это не совсем то что вкладывает в него психолог и нет числа этим трудностям перевода. При этом все и психиатры и психологи занимаются психотерапией на вполне законных основаниях и порой небезуспешно Еще одна проблема илиили: двух мнений быть не может существует только единственно правильное учение и психотерапевт который его исповедует а все...
35447. СТРОЕНИЕ, РАЗВИТИЕ И ФУНКЦИОНАЛЬНОЕ ЗНАЧЕНИЕ РАЗЛИЧНЫХ ОТДЕЛОВ НЕРВНОЙ СИСТЕМЫ 15.49 KB
  В центре спинного мозга расположено серое вещество скопление нервных клеток нейронов окруженное белым веществом образованным нервными волокнами. Рефлексы мочеиспускания и дефекации рефлекторного набухания полового члена л иззержснчс семени у мужчины эрекция и ЭЯКУЛЯЦИЯ также связаны с функцией спинного мозга.Спинной мозг осуществляет и проводниковую функцию нервные волокна составляющие основную массу белого вещества образуют проводящее SjTH сииндаго мозга.Деятельность спинного мозга у человека в значительной подчинена координирующим...
35448. My Favourite Film Romeo and Juliet 14.76 KB
  And Ill try to tell you about this film. In the town of Verona there were two rich families, the Capulets and the Montagues. There was an old quarrel between those two families. One day Capulet made a great supper. At that supper Romeo saw Juliet and fell in love with her at ones.
35449. Gone with the wind. My Favourite Film 17.43 KB
  I don't like horror films nd I find them quite disgusting. Sometimes I my wtch police drm or historicl film but I'm not very keen on these types of films. Now let me tell you bout one of my fvourite films Gone with the wind by the novel by Mrgret Mitchell.
35450. Высшая нервная деятельность детей на протяжении первых 3 лет жизни 13.23 KB
  Высшая нервная деятельность детей раннего возраста характеризуется неуравновешенностью двух основных нервных процессов: процессы возбуждения преобладают над процессами торможения. В поведении детей много широко разлитых иррадиированных реакций. Поэтому нельзя требовать от детей быстрого прекращения начатого ими действия или выполнения какоголибо движения и быстрого переключения с одного действия на другое.
35451. Условные и безусловные рефлексы 10.8 KB
  Безусловные рефлексы природный запас готовых стереотипных реакций организма. Безусловные рефлексы одинаковы у всех особей одного вида. Условные рефлексы Но поведение высших животных и человека характеризуется не только врожденными т.
35452. Мотивация и емоции 10.94 KB
  На основании мотиваций формируется поведения ведущее к удовлетворению исходной потребности. Под эмоциями следует понимать определенное состояние организма человека и высших животных которое формируется под влиянием внешней или внутренней потребности или мысленного представления и сопровождается комплексом соматических и вегетативных сдвигов имеющих адаптационное значение. Таким образом эмоции следует рассматривать в качестве своеобразной приспособительной реакции которая формируется в процессе эволюции.
35453. Рост и развитие косной ткани 13.28 KB
  Можно выделить две различающиеся по происхождению группы костей. Большая часть костей нашего тела развивается на месте хряща. После этого продольный рост костей возможен в ограниченных пределах за счет суставного хряща покрывающего эпифизы на поверхности обращенной в полость сустава.Рост костей в толщину происходит по их поверхности.
35454. Двигательный режим учащихся и вред гиподинамии 14.08 KB
  Суточная двигательная активность детей может быть выражена в объеме естественных локомоций. Например у мальчиков 1415 лет по сравнению со школьниками 89 лет суточная двигательная активность увеличивается более чем на 35 а объем выполненной при этом работы на 160. Естественная суточная активность девочек ниже чем мальчиков. Девочки в меньшей мере проявляют двигательную активность самостоятельно и нуждаются в большей доле организованных форм физического воспитания.