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 обеспечивают достаточный набор механизмов, использующихся при взаимодействии потоков и процессов.


 

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

73772. Початки української козачини 378 KB
  Вони брали ся за рішеннє сього питання тодї як се явище не тільки скристалїзувало ся вповнї набуло незвичайної екстензивної сили стало великою й впливовою суспільною верствою але й покрило собою иньші суспільні верстви стало репрезентантом української народности pr ехсеllеnсе подібно як народ шляхецькийrdquo; репрезентував сучасну народнїсть польську. І таке всенародне значіннє козачини в звязку з незмірноориґінальними прикладами козацького устрою козацької стихії що так різко відріжняли її на тлї загального поневолення народнїх...
73775. Профессионально-этические принципы работы практического психолога 25.21 KB
  Очевидные самоочевидные и даже в чемто банальные принципы типа не кричи на клиента не бей клиента не плюй в клиента не наноси ему увечий и т. Например психологконсультант неоправданно оскорбляет клиента доводя его до истерики или использует в некоторых случаях совершенно не адекватные методы был случай когда один весьма солидный специалист в профконсультации под видом инноваций применил метод иглоукалывания да еще в затемненной комнате при свечах и с полуобнаженным телом ошарашенного подростка. Роджерса пишет:...
73776. Этические проблемы в научной деятельности психолога 22.64 KB
  Проблема в том что для чистоты исследования часто приходится работать в режиме субъектобъектных отношений что предполагает повышенную этическую готовность и нравственную ответственность психологаисследователя. Проблема недобросовестности исследования. Этическая проблема заключается в вынужденной необходимости истинных авторов соглашаться на такое соавторство ради того чтобы книга вообще была издана. Очень непростой является проблема семейственности в науке когда с одной стороны создаются благоприятные условия для откровенных...
73777. Важнейшие требования к личности практического психолога 14.66 KB
  Иными словами превалирующая роль отводится психологическому и психотерапевтическому а также психокоррекционному и психодиагностическому инструментарию при этом личностные характеристики психолога считаются чемто вторичным. Подобная позиция присуща теоретическим концепциям рассматривающим психологическую помощь как воздействие психолога на клиента. Обобщая многочисленные исследования профессионально важных личностных черт психотерапевтов и психологов можно выделить следующие личностные черты желательные для практического психолога: ...
73778. Проблема «модели специалиста» и индивидуального стиля деятельности психолога 22.45 KB
  Обычно приводится примерно такое обоснование: невозможно втиснуть в модель все характеристики профессиональной деятельности вместе с необходимостью импровизировать в труде а также невозможно выделить общепризнанный стандартнообразцовый профиль личностных и профессиональных качеств специалиста под который можно было бы подгонять будущих психологов. Маркова выделяет следующие основные составляющие модели специалиста: 1 профессиограмму то есть описание самой деятельности психолога; 2 профессиональнодолжностные требования...
73779. Профессиональные деструкции в развитии психолога 22.97 KB
  Работа может способствовать личностному развитию но может иметь и отрицательные для личности последствия. Проблема в балансе соотношении позитивных и негативных изменений личности работника. Профессиональные деструкции проявляются в снижении эффективности труда в ухудшении взаимоотношений с окружающими в ухудшении здоровья и главное в формировании отрицательных личностных качеств и даже в распаде целостной личности работника. Специалисты обычно выделяют и анализируют негативные качества формирующиеся в работе школьных учителей: ...
73780. Эффективность труда психолога 20.5 KB
  Сложность оценки эффективности труда психолога связана с тем что основной результат его работы существует сокрыт во внутреннем мире других людей. Центральные вопросы связанные с оценкой эффективности деятельности профессионального психолога состоят в следующем: кто и по каким критериям может и должен производить эту оценку По всей видимости официально оценивать эффективность работы психолога должны четыре типа лиц или общественных групп: администрация организации где психолог работает профессиональное сообщество клиенты сам...