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


 

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

16412. Емпіричне дослідження гендерних особливостей міжособистісної взаємодії у ранній юності 403.5 KB
  Проблема стосунків жінки і чоловіка в суспільстві прадавня. Сьогодні вона набула особливої гостроти оскільки в світі активізується боротьба за ствердження демократичних норм і принципів. У цьому контексті гендерне партнерство (рівні відносини статей), гендерна рівність набувають все більшої актуальності.
16413. Национальные проекты в России, как одна из форм государственного управления. Национальный проект «Демография» 1.23 MB
  Причины депопуляции в ошибках конкретных государственных правителей — Депопуляция процесс объективный, исторически заданный. Для России низкая рождаемость, ведущая к депопуляции, будет иметь катастрофические последствия. — Депопуляция нежелательна, но не катастрофична; противостоять ей можно.
16414. Планирование, как функция управления 113.5 KB
  Планирование как функция управления Понятие функции управления. Функция планирование. Процесс стратегического планирования. I. Суть любого управления – это достижение организацией целей при наиболее оптимальном использовании ресурсов. ...
16415. Функция организация 166 KB
  Функция организация Сущность функции организация Построение организации Делегирование полномочий I. Организация как функция управления нацелена на то чтобы претворить намеченные планы и решения в жизнь. Ранее мы рассматривал...
16416. Функция мотивация 108 KB
  Функция мотивация Сущность функции мотивации Теории мотивации I. Руководителю чтобы эффективно двигаться к намеченной цели необходимо координировать работу и заставить персонал выполнять ее. Функция мотивации состоит в побуждении перс
16417. Функция контроль 107.5 KB
  Функция контроль Цели задачи и содержание функции контроль Процесс контроля I. Контроль – процесс обеспечения достижения организацией своих целей постоянное сравнение того что есть с тем что должно быть. Функция контроль – состоит в наблю...
16418. Антропоцентрический подход в исследовании текстов (на основе документов официально-делового стиля) 201 KB
  В данной работе рассматривается жанровая организация официально-делового дискурса на примере объяснительных записок с целью многоаспектного исследования их коммуникативно-прагматических характеристик. В работе преобладает антропоцентрический подход, что находится в русле современных лингвистических исследований.
16419. Функции Excel для расчета амортизации АМР, АМГД, ДОБ и ДДОБ 43 KB
  Функции Excel для расчета амортизации АМР АМГД ДОБ и ДДОБ. Под амортизацией подразумевается уменьшение обычно на единицу времени стоимости имущества в процессе эксплуатации. Функция АМР SLN возвращает величину амортизации имущества за один период времени используя ...
16420. Функции Excel для расчета амортизации АПЛ, АСЧ, ФУО и ДДОБ 44 KB
  Функции Excel для расчета амортизации АПЛ АСЧ ФУО и ДДОБ. Под амортизацией подразумевается уменьшение обычно на единицу времени стоимости имущества в процессе эксплуатации. Функция АПЛ SLN возвращает величину амортизации имущества за один период времени используя м...