Автор работы: Пользователь скрыл имя, 20 Ноября 2013 в 19:33, курсовая работа
Целью данной курсовой работы является закрепление и углубление теоретических знаний в области современных операционных систем, приобретение практических навыков разработки клиент-серверных приложений, использующих стандартные механизмы межпроцессного взаимодействия.
1. Введение 1
2. Постановка задачи 2
3. Краткие теоретические  основы разрабатываемой темы 3
4. Алгоритм работы 6
5. Руководство пользователя 11
6. Результаты работы 12
7. Заключение 13
8. Список использованных  источников 13
9. Приложение с исходными  кодами разработанных программ 14
ФЕДЕРАЛЬНОЕ АГЕНТСТВО СВЯЗИ
Федеральное 
государственное 
высшего профессионального образования
Московский технический университет связи и информатики
------------------------------
Кафедра Математической кибернетики и информационных технологий
КУРСОВАЯ РАБОТА
по дисциплине
ОПЕРАЦИОННЫЕ СИСТЕМЫ
на тему:
«ИССЛЕДОВАНИЕ МЕХАНИЗМОВ МЕЖПРОЦЕССНОГО ВЗАИМОДЕЙСТВИЯ»
Выполнил:
студент Зенин Кирилл Эдуардович
группа: ИТ1002
Проверила:
Королькова Татьяна Валерьевна, старший преподаватель
Оценка________________________
Дата__________________________
                              
Москва 2013
 
СОДЕРЖАНИЕ
1. Введение 1
2. Постановка задачи 2
3. Краткие теоретические основы разрабатываемой темы 3
4. Алгоритм работы 6
5. Руководство пользователя 11
6. Результаты работы 12
7. Заключение 13
8. Список использованных источников 13
9. Приложение с исходными 
кодами разработанных программ 
Целью данной курсовой работы является закрепление и углубление теоретических знаний в области современных операционных систем, приобретение практических навыков разработки клиент-серверных приложений, использующих стандартные механизмы межпроцессного взаимодействия.
Задачи курсовой работы:
 
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.
(Завершение работы потоков req
Закрытие сокета.
Конец
Алгоритм работы серверного приложения
 
Начало
Занятие критической секции critsect
Прием от клиента
Освобождение события Event1
Освобождение критической секции critsect и события endEvent1
Конец
Отправка запроса клиенту 1
Получение ответа от клиента 1
Вывод ответа от клиента 1
Начало
Занятие критической секции critsect
Прием от клиента
Освобождение события Event2
Освобождение критической секции critsect и события endEvent2
Конец
Отправка запроса клиенту 2
Получение ответа от клиента 2
Вывод ответа от клиента 2
Начало
Создание события и мьютекса Event1="e1", Mutex="Mutex"
Создание сокета
Сбор хостов
Соединение
Ожидание запроса от сервера
Запрос от сервера
Сбор данных
Конец
Занятие мьютекса Mutex
Отправка данных
Освобождение события Event1
Алгоритм работы клиентского приложения 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-
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,
srv2R=CreateEvent(NULL,FALSE,
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/=
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=
if(!hFile){
cout<<"Не удалось создать файл.";
system("pause");
return;
}
DWORD m;
WriteFile(hFile," ",1,&m,0);
HANDLE fMapping=CreateFileMapping(
if(!fMapping){
cout<<"Не удалось создать файл отображения.";
system("pause");
return;
}
cout<<"Дескриптор файла: "<<hFile<<"\nДескриптор отображения файла: "<<fMapping<<endl;
Информация о работе Исследование механизмов межпроцессорного взаимодействия