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


 

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

24999. Принцип работы модемов 62.47 KB
  Современные модемы обеспечивают гораздо большую скорость передачи данных. Применяемые в них протоколы передачи данных и коррекции ошибок обеспечивают надежную связь даже на не очень хороших телефонных линиях. В процессе передачи компьютерных данных по большинству линий связи выполняется двойное их ' преобразование: поток данных из компьютера побайтно преобразуется в последовательность отдельных бит которая далее превращается в сигнал при годный для передачи по телефонным линиям. Принимаемые данные претерпевают обратное преобразование: из...
25000. О мониторах - подробнее 131 KB
  Количество точек по горизонтали и по вертикали которые могут изображаться на экране монитора называется его разрешением. Принцип работы электроннолучевого монитора стеклянная колба сигналы управления лучом электронная пушка покрытие из люминофора электронный луч же монитора может меняться за счет объединения соседних триад. Количество раз которое сменится изображение на экране электроннолучевого монитора за 1 секунду называется частотой кадровой развертки.
25001. Манипуляторы 37.71 KB
  Наиболее распространенным из них является так называемая Мышь Она служит для ввода данных или одиночных команд выбираемых из меню ли текстограмм графических оболочек выведенных на экран монитора. Мышь представляет собой небольшую коробочку с двумя или тремя клавишами и утопленным свободно вращающимся в любом направлении шариком на нижней поверхности. Для работы с мышью необходима плоская поверхность с этой целью используют резиновые коврики Mouse Pad. Так как с помощью мыши нельзя вводить в компьютер серии команд поэтому мышь и...
25002. Текстовый редактор. Назначение и основные возможности 59.21 KB
  Обычно текстовыми редакторами принято называть программы выполняющие простейшие операции по редактированию текста а процессорами программы обладающие расширенными по сравнению с редакторами средствами для компьютерной обработки текста. В процессе подготовки текстовых документов можно выделить следующие этапы: набор текста; редактирование; форматирование текста разметка страниц; печать просмотр перед печатью текста на экране печать на бумаге. Основные функции текстовых процессоров: создание документов; редактирование документов...
25003. ПОЧЕМУ РАБОТА ЗА КОМПЬЮТЕРОМ ЧАСТО ПРИВОДИТ К БОЛИ 82.5 KB
  Выплачиваемые компенсации достигают астрономических размеров а некоторым пострадавшим от работы за компьютерам приходится расплачиваться жестокими болями в течение всей жизни. Недавние исследования показали что примерно 20 нарушений здоровья связанных с работой за компьютером вызваны не вредностью компьютера как такового а незнанием основных правил работы с ним а также неправильной организацией рабочего места. В 1996 году Государственный комитет санитарноэпидемиологического надзора утвердил Гигиенические требования к видеодисплейным...
25004. Понятие информации. Информационные процессы 48.19 KB
  Мы говорим: я получил важную информацию у меня недостаточно информации для принятия решения кто владеет информацией правит миром не особенно задумываясь о том что же такое информация. В этом заключена одна из особенностей понятия информации: оно относится к числу базовых понятий таких как число в математике которые можно пояснять уточнять использовать но нельзя однозначно определить. Юристы например используют определение из закона Об информации информатизации и защите информации: информация сведения о лицах предметах...
25005. Принтер — основное устройство для вывода инфор 48.5 KB
  Во время печати на его поверхность подается высокое напряжение которое распределяет статический заряд по поверхности барабана. У цветных лазерных принтеров соответствующие и стоимость и скорость печати. Поскольку лазер формирует прообраз изображения целиком на барабане то к моменту печати он уже полностью должен быть в памяти принтера. Большой объем памяти требуется при печати большого потока документов.
25006. Сканеры. Принцип действия и классификация сканеров 137.87 KB
  В процессе сканирования оригинал освещается источником света. В основном все планшетные сканеры рассчитаны на получение копии с одного оригинала однако к некоторым моделям сканеров прилагаются дополнительные приспособления для последовательной подачи и сканирования нескольких оригиналов. К преимуществам планшетных сканеров следует отнести простоту использования возможность сканирования как плоских оригиналов в широком диапазоне размеров так и небольших трех мерных объектов. При необходимости сканирования оригиналов нестандартного большого...
25007. Вопросы по Информационным технологиям 25.5 KB
  Виды информации. Виды компьютерной графики. Виды. Виды.