Исследование механизмов межпроцессорного взаимодействия

Автор работы: Пользователь скрыл имя, 20 Ноября 2013 в 19:33, курсовая работа

Краткое описание

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

Содержание

1. Введение 1
2. Постановка задачи 2
3. Краткие теоретические основы разрабатываемой темы 3
4. Алгоритм работы 6
5. Руководство пользователя 11
6. Результаты работы 12
7. Заключение 13
8. Список использованных источников 13
9. Приложение с исходными кодами разработанных программ 14

Вложенные файлы: 1 файл

kursach5.docx

— 210.23 Кб (Скачать файл)

ФЕДЕРАЛЬНОЕ АГЕНТСТВО СВЯЗИ

Федеральное государственное образовательное  бюджетное учреждение

высшего профессионального  образования

Московский  технический университет связи  и информатики

----------------------------------------------------------------------------------------------------

Кафедра Математической кибернетики и информационных технологий

 

 

 

 

 

КУРСОВАЯ  РАБОТА

по дисциплине

ОПЕРАЦИОННЫЕ  СИСТЕМЫ

на тему:

«ИССЛЕДОВАНИЕ МЕХАНИЗМОВ МЕЖПРОЦЕССНОГО ВЗАИМОДЕЙСТВИЯ»

 

 

Выполнил:

студент Зенин Кирилл Эдуардович

группа: ИТ1002

Проверила:

Королькова Татьяна Валерьевна, старший преподаватель

Оценка_________________________

Дата___________________________

 

 

                                                                  

 

Москва 2013

 

СОДЕРЖАНИЕ

 

1. Введение 1

2. Постановка задачи 2

3. Краткие теоретические  основы разрабатываемой темы 3

4. Алгоритм работы 6

5. Руководство пользователя 11

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

7. Заключение 13

8. Список использованных  источников 13

9. Приложение с исходными  кодами разработанных программ 14

1. ВВЕДЕНИЕ

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

Задачи курсовой работы:

  1. Изучить методы разработки клиент-серверных приложений.
  2. Изучить механизмы обмена данными в Windows NT и особенности их применения на практике.
  3. Изучить средства синхронизации процессов  в Windows NT и особенности их применения на практике.
  4. Изучить функции Win32 API для получения системной информации, информации о процессах и потоках, состоянии памяти.
  5. Создать серверные приложения и приложение-клиент, обменивающиеся данными через заданный интерфейс.
  6. Оформить результаты выполнения курсовой работы в виде пояснительной записки в соответствии с предъявляемыми требованиями.

 

2. ПОСТАНОВКА ЗАДАЧИ

Разработать многозадачное приложение, выполняющее получение, сбор и вывод  системной информации в соответствии с вариантом задания:

вар.

Способ 

коммуникации

Процесс 1

определяет и передает

Процесс 2

определяет и передает

1

2

3

4

5, 29

отображение

файлов

- системные цвета (для 2-3-х элементов);

- код раскладки клавиатуры

- идентификатор текущего процесса;

- дескриптор текущего  процесса


 

Разработать программу, выполняющую  с помощью заданного механизма  межпроцессного обмена данными, сбор и вывод данных, полученных  клиентскими процессами. Работа должна быть организована таким образом, чтобы данные клиентов не перемежались друг с другом, т.е. сначала полностью выводятся данные, поставленные 1-м клиентом, а затем данные второго клиента, или наоборот.

Минимальный функционал сервера:

- создание  заданного  средства коммуникации;

- получение данных от  клиента;

- вывод  полученных  данных на экран.

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

 

3. КРАТКИЕ ТЕОРЕТИЧЕСКИЕ ОСНОВЫ РАЗРАБАТЫВАЕМОЙ ТЕМЫ

Клиент-сервер — вычислительная или сетевая архитектура, в которой задания или сетевая нагрузка распределены между поставщиками услуг (сервисов), называемыми серверами, и заказчиками услуг, называемыми клиентами.

Преимущества:

- Отсутствие  дублирования кода программы-сервера  программами-клиентами.

- Так  как все вычисления выполняются  на сервере, то требования к  компьютерам, на которых установлен  клиент, снижаются.

- Все  данные хранятся на сервере,  который, как правило, защищён  гораздо лучше большинства клиентов. На сервере проще обеспечить  контроль полномочий, чтобы разрешать  доступ к данным только клиентам  с соответствующими правами доступа.

- Позволяет  объединить различные клиенты.  Использовать ресурсы одного  сервера часто могут клиенты  с разными аппаратными платформами,  операционными системами и т. п.

- Позволяет  разгрузить сети за счёт того, что между сервером и клиентом  передаются небольшие порции  данных.

Недостатки:

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

- Поддержка  работы данной системы требует  отдельного специалиста — системного администратора.

- Высокая  стоимость оборудования.

Системные средства коммуникации процессов:

Для обеспечения сетевых коммуникаций используется отображение файлов. Механизм отображения файлов позволяет процессу трактовать содержимое файла как блок памяти в адресном пространстве этого процесса. Процесс может использовать обычные операции с указателями для того, чтобы считывать и изменять содержимое файла. Когда два или более процесса получают доступ к одинаковым отображениям файлов, то каждый процесс получает указатель на память в собственном адресном пространстве, которое он может использовать для модифицирования содержимого файла. Отсюда следует, что процессы также должны использовать объект синхронизации, например семафор, чтобы предотвратить разрушение данных в многозадачной среде.

Программист может использовать специальный вид отображения файла для обеспечения именованной разделенной памяти между процессами. Если при создании объекта-отображения файла указывается файл подкачки системы (swapping file), то отображение файла создается как блок совместно используемой памяти. Другие процессы также могут получить доступ к этому блоку, открыв такое же отображение файла.

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

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

 

 

 

 

 

 

 

 

 

 

 

4. АЛГОРИТМ РАБОТЫ

Начало


Создание событий Event1="e1", Event2="e2", endEvent1, endEvent2 и критической секции critsect

Создание сокета

Связывание сокета с адресом и номером порта

Прослушивание сокета

Запуск клиентских приложений. Запуск потоков reqv1 и reqv2 для обмена данными с клиентами.

Освобождение событий endEvent1 и endEvent2.

(Завершение работы потоков reqv1 и reqv2)

Закрытие сокета.

Конец

Алгоритм работы серверного приложения


 

Начало


Занятие критической секции critsect

Прием от клиента

Освобождение события Event1

Освобождение критической  секции critsect и события endEvent1

Конец

Отправка запроса клиенту 1

Получение ответа от клиента 1

Вывод ответа от клиента 1

Алгоритм работы потока reqv1 

Начало


Занятие критической секции critsect

Прием от клиента

Освобождение события Event2

Освобождение критической  секции critsect и события endEvent2

Конец

Отправка запроса клиенту 2

Получение ответа от клиента 2

Вывод ответа от клиента 2

Алгоритм работы потока reqv2 

Начало


Создание события и мьютекса Event1="e1", Mutex="Mutex"

Создание сокета

Сбор хостов

Соединение

Ожидание запроса от сервера

Запрос от сервера

Сбор данных

Конец

Занятие мьютекса Mutex

Отправка данных

Освобождение события Event1

Алгоритм работы клиентского приложения 1 

Алгоритм работы клиентского приложения 2 Начало


Создание события и мьютекса Event2="e2", Mutex="Mutex"

Создание сокета

Сбор хостов

Соединение

Ожидание запроса от сервера

Запрос от сервера

Сбор данных

Конец

Занятие мьютекса Mutex

Отправка данных

Освобождение события Event2

 

5. РУКОВОДСТВО ПОЛЬЗОВАТЕЛЯ

client.exe – исполняемый файл клиентского  приложения; 
server1.exe и server2.exe – исполняемые файлы серверных приложений; 
        

Работа  серверных приложений. 
После запуска серверного приложения, открывает файл отображения. С помощью событий регулируется обновление состояния сервера. Состояния сервера:

 

1) клиент не подключен - не запущено клиент приложение;

2) ожидание запроса - ожидание запроса от клиента;

3) запрос получен - был получен запрос, сервер собирает и передает данные клиенту, состояние отображается до тех пор пока клиент не вернется в меню. 

Работа  клиентского приложения. 
После запуска клиентского приложения оно создает файл и файл отображения. Клиент выводит главное меню, где можно сделать запрос серверам или выйти из программы. После выбора запроса клиент отображает ответ сервера, если соответствующее серверное приложение запущено, или ошибку в противном случае. После нажатия любой клавиши клиент возвращается в главное меню. 

6. РЕЗУЛЬТАТЫ РАБОТЫ

 

7. ЗАКЛЮЧЕНИЕ

Для организации межпроцессного взаимодействия клиент-серверных приложений, было использовано отображение файлов. Применение данного механизма межпроцессного взаимодействия возможно не только в пределах одного компьютера, но и между несколькими компьютерами. Для синхронизации клиентских приложений были применены мьютексы. Для синхронизации потоков серверного приложения – критические секции. А также для синхронизации потоков серверного приложения с клиентскими приложениями – события.

8. СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ

1) http://mkiit.ru/operating-systems

2) http://msdn.microsoft.com

 

9. ПРИЛОЖЕНИЕ

Клиент:

#include<conio.h>

#include<iostream>

#include<winsock2.h>

#include<locale.h>

#include<process.h>

#include<math.h>

using namespace std;

 

HANDLE srv1R=CreateEvent(NULL,FALSE,FALSE,L"SR1"),

srv2R=CreateEvent(NULL,FALSE,FALSE,L"SR2");

 

void diagramm (float percent)

{

int n = 40;

float x = floor(percent/100*n + 0.5);

cout<<"\n\n\n\t";

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

{

if (i<x) cout<<(char)2;

else cout<<(char)1;

}

cout<<endl;

}

 

char* bytes(DWORD status, char* str)

{

double stat = (double)status;

int i;

for(i=0;stat>=1024;++i,stat/=1024);

sprintf(str,"%.2f",stat);

strcat(str,"\t");

switch(i)

{

case 1:strcat(str,"Кило");break;

case 2:strcat(str,"Мега");break;

case 3:strcat(str,"Гига");break;

}

strcat(str,"байт");

return str;

}

 

void main(){

setlocale(LC_ALL,"rus");

//Инициализация отображения файла

HANDLE server1,server2,hFile=CreateFile(L"temp",GENERIC_READ|GENERIC_WRITE,FILE_SHARE_READ|FILE_SHARE_WRITE,NULL,OPEN_ALWAYS,FILE_FLAG_DELETE_ON_CLOSE|FILE_ATTRIBUTE_HIDDEN,0);

if(!hFile){

cout<<"Не удалось создать файл.";

system("pause");

return;

}

DWORD m;

WriteFile(hFile," ",1,&m,0);

HANDLE fMapping=CreateFileMapping(hFile,NULL,PAGE_READWRITE,0,0,L"Mem");

if(!fMapping){

cout<<"Не удалось создать файл отображения.";

system("pause");

return;

}

cout<<"Дескриптор файла: "<<hFile<<"\nДескриптор отображения файла: "<<fMapping<<endl;

Информация о работе Исследование механизмов межпроцессорного взаимодействия