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


 

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

78510. Объединение сетей средствами сетевого и транспортного уровней: протоколы, адресация, маршрутизация 26 KB
  Это отличает их от протоколов канального уровня которые передают пакеты только получателям в той же ЛВС. Для сетевого уровня необходима адресация. Протоколы сетевого уровня многоуровневой модели сетевого взаимодействия отвечают за передачу данных от отправителя к получателю по интерсети. Самый популярный протокол сетевого уровня протокол IP IPадрес привязывается к сетевому адаптеру который выполняет упаковку пакета данных транспортного уровня в дейтаграмму идентификацию систем в сети по их IPадресам определение наиболее эффективного...
78511. Основные типы аппаратных сетевых устройств: назначение, принципы функционирования, характеристики 28 KB
  Поэтому адаптеру необходим буфер для временного хранения данных прибывающих от компьютера или из сети в то время когда адаптер занят формированием кадра и его подготовкой к обработке. Концентратор обычно имеет несколько портов к которым с помощью отдельных физических сегментов кабеля подключаются конечные узлы сети компьютеры. Концентратор объединяет отдельные физические сегменты сети в единую разделяемую среду доступ к которой осуществляется в соответствии с протоколов локальных сетей. Приемопередатчики трансиверы и повторители...
78512. Технологии удаленного доступа и глобальных сетевых связей 37 KB
  Понятие удаленного доступа к сети включает различные типы и варианты подсоединения одиночных компьютеров либо малых домашних или офисных сетей к территориально отдаленным крупным сетям. Подключение к глобальной сети может осуществляться одним из способов: удаленный доступ по коммутируемой телефонной линии. Наиболее развитыми но не единственными сетями такого типа являются так называемые сети с интегральными услугами ISDN цифровые сети с интегральными услугами в которых не только осуществлен переход к полностью цифровой форме передачи...
78513. Назначение и функции операционных систем, их архитектурные типы, классификация и основные семейства 27.5 KB
  ОС – это комплекс управляющих и обрабатывающих программ, который, с одной стороны, выступает как интерфейс между пользователем и аппаратными компонентами вычислительных машин и вычислительных систем, а с другой стороны предназначен для эффективного управления вычислительными процессами
78514. Операционные системы: концепции и механизмы управления процессами и ресурсами 38 KB
  Функциями ОС по управлению памятью являются: отслеживание свободной и занятой памяти выделение памяти процессам и освобождение памяти при завершении процессов вытеснение процессов из оперативной памяти на диск когда размеры основной памяти не достаточны для размещения в ней всех процессов и возвращение их в оперативную память когда в ней освобождается место а также настройка адресов программы на конкретную область физической памяти. Так как во время трансляции в общем случае не известно в какое место оперативной памяти будет загружена...
78515. Операционные системы: управление файлами и файловые системы 28.5 KB
  Файловая система NTFS. Файл в системе NTFS это не просто линейная последовательность байтов как в системе FT. Отличительными свойствами ФС NTFS являются: Поддержка больших файлов и больших дисков объемом до 264 байт. Структура тома раздела NTFS: Все пространство тома NTFS представляет собой либо файл либо часть файла.
78516. Основные характеристики и особенности организации современных операционных систем 26.5 KB
  Типы ОС: общие специальные и специализированные бортовой автокомпьютер CISCO управление коммутаторами и маршрутизаторами Общая характеристика Windows XP. Windows XP объединяет в себе лучшие качества предыдущих версий Windows: надежность стабильность и управляемость от Windows 2000 простой и понятный интерфейс а также технологию Plug Ply от Windows 98. В Windows XP появился новый более эффективный интерфейс пользователя включающий новые возможности группировки и поиска документов новый внешний вид возможность быстрого...
78517. Основные задачи системного администрирования и их практическая реализация 33 KB
  Важнейшей сферой профессиональной деятельности специалистов в области информационных технологий является управление администрирование функционированием ОС как отдельных компьютеров так и их групп объединенных в вычислительные сети. Системное администрирование в общем случае сводится к решению следующих основных задач: управление и обслуживание пользователей вычислительной системы создание и поддержка учетных записей пользователей управление доступом пользователей к ресурсам; управление и обслуживание ресурсов вычислительной системы ...
78518. Понятие, назначение и основные принципы организации распределенной обработки информации. Архитектура, свойства и характеристики распределенных систем 29.5 KB
  Понятие назначение и основные принципы организации распределенной обработки информации. Под распределенной обработкой информации понимается комплекс операций с информацией проводимый на независимых но связанных между собой ВМ предназначенных для выполнения общих задач. Возможность взаимодействия вычислительных систем при реализации распределенной обработки информации определяют как их способность к совместному использованию данных или к совместной работе с использованием стандартных интерфейсов. Целью распределенной обработки информации...