Автор работы: Пользователь скрыл имя, 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;
Информация о работе Исследование механизмов межпроцессорного взаимодействия