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

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




































Главная

Программирование, компьютеры и кибернетика
Распределенная синхронизация процессов

Разработка проекта с помощью встроенных средств языка C#, на базе сетевого стека и сетевых функций Windows. Специфика создания удобного интерфейса программы с использованием Windows Forms, которая способна пересылать данные на удалённый компьютер.


посмотреть текст работы


скачать работу можно здесь


полная информация о работе


весь список подобных работ


Нужна помощь с учёбой? Наши эксперты готовы помочь!
Нажимая на кнопку, вы соглашаетесь с
политикой обработки персональных данных

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Размещено на http://www.allbest.ru/
Распределенная синхронизация процессов
При работе с данными на современных операционных системах остро стоит проблема в их синхронизации. Проблемы могут происходить, когда к одним и тем же данным получают доступ различные процессы. И даже не столько в случае одновременного изменения. Чтение данных в одном потоке после изменения их другим тоже может давать неверный результат в целом. Так же одной из проблем может являться уменьшение производительности работы в целом. Синхронизация - это некоторые дополнительные издержки.
Цель работы является разработка программы, создающая и запускающая несколько отдельных процессов в определённой последовательности. Информация о каждом запущенном процессе передаётся и принимается через сокеты UDP и записывается в файл.
В целом, задачей разработки являлось создание такого приложения, которое будет удалённо запускать в последовательности отдельные задачи.
В главе «Описание программ» подробно описаны теоретические особенности построения сетевого стека.
В главе «Тексты программ» находятся исходные коды на языке C# и файлы конфигурации процессов в формате INI файлов.
В главе «Выводы» даются результаты о проделанной работе.
Наиболее важными источниками знаний послужил сервис от Microsoft - MSDN, а также книга Гордеева - «Операционные системы».
Создать процессы (отдельные задачи), которые выполняются в последовательности, определяемой графом запуска в соответствии с вариантом задания. Каждая дуга графа соответствует процессу, имя дуги - имя процесса. Вершины графа - точки синхронизации процессов.
Процессы после запуска находятся в ожидании завершения предшествующих им процессов. При выполнении выводят информацию (имя процесса, время запуска и окончания работы), передают управление другим процессам и завершаются. В процессах вводится небольшая временная задержка (несколько секунд) для того, чтобы было легче отследить соответствие запусков и окончаний процессов графу запуска. Для первоначального запуска набора процессов рекомендуется использовать командный файл.
Приём и передача информации о завершении процесса осуществляется через сокеты TCP или UDP. Фактически приём-передача этой информации выступает в роли средства распределённой синхронизации процессов в IP-сети.
Необходимо предусмотреть создание необходимого числа сокетов в каждой задаче и определить корректную нумерацию портов, чтобы обмен был возможен как на локальном компьютере (local host.localdomain) так и при запуске задач на компьютерах с разными IP-адресами в пределах локальной или глобальной TCP/IP-сети. Должна быть предусмотрена возможность изменения IP-адреса компьютера при запуске процесса (ввод из командной строки, файла и т.п.). При демонстрации курсовой работы часть процессов запускается на одном, а остальные - на другом (других) компьютере (компьютерах) ЛВС.
Операционная система - Windows или Linux. Система программирования - Visual C или GNU C. Возможен “гибридный” вариант реализации, когда часть процессов работает под управление ОС Linux, а оставшиеся - под ОС MS Windows. В последнем случае для отладки вне вычислительной сети имеет смысл использовать эмуляторы другой ОС (CYGWIN, WINE) или виртуальные машины.
Граф синхронизации процессов. Вариант #2
Размещено на http://www.allbest.ru/
Размещено на http://www.allbest.ru/
Рис. 1. Граф синхронизации процессов
На графе отчётливо видно, что существует 11 дуг. Каждая дуга графа соответствует процессу. Вершины графа - точки синхронизации процессов. Имена процессов: a, b, c, d, e, f ,g, h, i, m, n.
Процесс в Windows состоит из следующих компонентов:
public static bool Write(string message) {
const string url = @"\\fs\Study\_\ПО08\temp.txt";
var text = System.IO.File.AppendText(url);
private readonly string Processname;
public Client(string ip, int port, string processname) {
FormClient.Msg("Данные успешно отправлены!");
} // Теперь подключаться к потомкам
byte[] mas = Encoding.UTF8.GetBytes(Processname);
public partial class FormClient : Form {
private static readonly string Path = Environment.CurrentDirectory; // текущая директория
private List _childProcessname;
private List _parentProcessname;
private List _serverProcessname;
//Если родителей нет - подключаюсь к потомкам
if (_parentProcessname.Count == 0 && _serverProcessname.Count > 0) {
string processname = _serverProcessname[0];
int port = int.Parse(_serverPort[0]);
new Client(ip, port, processname); //а также выполняем главные процесс А
foreach (string t in _serverPort) {
//Если родители есть то открываем порт
if (_parentProcessname.Count != 0) {
Msg("Открываю порт " + port + " для подключения родителей");
Msg("Проблема при открытие порта");
if (_childProcessname.Count != 0) {
for (int i = 0; i < _childsPort.Count; i++) {
int port = Convert.ToInt16(_childsPort[i]);
string processname = _childProcessname[i];
Msg("подключаюсь к потомку " + processname); // Подключаемся к серверу по serverPort
new Client(ip, port, processname); //подключаемся к потомку
Msg(string.Format("Подключиться к потомку {0} не удалось", processname));
public static void Msg(string mesg) {
MessageBox.Show("Произошла проблема с записью");
private void GetInfoFromINIFile() {
FileInfo[] directorypath = new DirectoryInfo(Path).GetFiles();
_serverProcessname = new List();
_parentProcessname = new List();
_childProcessname = new List();
foreach (FileInfo info in directorypath) {
string[] readText = File.ReadAllLines(fullname); //временный, зранит все записи
if (Regex.IsMatch(s, "Server")) { _serverProcessname.Add(temp.IniReadValue("Server", "Processname")); _serverPort.Add(temp.IniReadValue("Server", "Port"));
//Если найден Parent - добавляем (учитывая что есть 1, 2, ...)
else if (Regex.IsMatch(s, "Parent")){
string parentS = s.Replace("[", "").Replace("]", "");
_parentProcessname.Add(temp.IniReadValue(parentS, "Processname"));
else if (Regex.IsMatch(s, "Child")){
string childS = s.Replace("[", "").Replace("]", "");
//Проверка на UTF-8. Глюк возникает, в "s" вводится какая-то очень длинная
break; _childProcessname.Add(temp.IniReadValue(childS, "Processname"));
_childsIp.Add(temp.IniReadValue(childS, "Ip"));
_childsPort.Add(temp.IniReadValue(childS, "Port"));
private void AddText(string text) {
tbxText.Text = tbxText.Text + Environment.NewLine + text;
AddText(Environment.NewLine + "Серверы");
foreach (string server in _serverProcessname) {
AddText(Environment.NewLine + "Айпи Серверов ");
foreach (string servPort in _serverPort) {
AddText(Environment.NewLine + "Родители");
foreach (string parent in _parentProcessname) {
AddText(Environment.NewLine + "Потомки");
foreach (string child in _childProcessname) {
AddText(Environment.NewLine + "Айпи детей");
AddText(Environment.NewLine + "Порты детей");
foreach (string s in _childsPort) {
/// Путь к INI-файлу
private static extern long WritePrivateProfileString(string section, string key, string val, string filePath);
private static extern int GetPrivateProfileString(string section, string key, string def, StringBuilder retVal, int size, string filePath);
public void IniWriteValue(string Section, string Key, string Value) {
WritePrivateProfileString(Section, Key, Value, path);
public string IniReadValue(string section, string key) {
GetPrivateProfileString(section, key, "", temp,
private static void SendData(object data) {
FormClient.Msg("выполняется процесс " + data);
var fp = new FormPotok {Text = data.ToString()};
for (var millisecondsTimeout = 1; millisecondsTimeout < 100; millisecondsTimeout++ ) {
fp.progBar.Value = millisecondsTimeout;
FormClient.Msg("Процесс " + data + " выполнен");
new FormClient().ConnectToChild();//Теперь передачу на потомков
public static void StartPotoks(string name) {
FormClient.Msg("Ожидаем запрос к подключению");
IPEndPoint ipep = new IPEndPoint(IPAddress.Any, port);
Socket newsock = new Socket(AddressFamily.InterNetwork,
SocketType.Stream, ProtocolType.IP);
FormClient.Msg("родитель подключен...");
string RecvString = Encoding.ASCII.GetString(data, 0, recv);
Открываю порт 8883 для подключения родителей
Открываю порт 8889 для подключения родителей
Открываю порт 8889 для подключения родителей
Открываю порт 8888 для подключения родителей
Описание платформы NET Framework. База данных Microsoft Access. Разработка Windows приложения. Модель программирования Windows Forms. Функциональное назначение программы. Входные и выходные данные. Требования к техническому и программному обеспечению. курсовая работа [2,2 M], добавлен 15.03.2015
Программирование в операционной системе Windows. Работа с потоками и процессами ОС. Методы их создания. Основы вызова API-функций. Пример создания диалогового окна без использования файла ресурсов. Разработка программы с помощью 32-битного ассемблера. курсовая работа [107,6 K], добавлен 18.05.2014
Сведения об окружности, ее радиус и площадь. Разработка программы для вычисления площади круга и длины окружности по заданному радиусу с использованием Windows.Forms-приложений. Пошаговая инструкция; описание главного окна, код, примеры работы программы. курсовая работа [818,6 K], добавлен 14.09.2014
Общие положения по программированию в интерфейсе Windows Forms. Среда разработки MicrosoftVisualStudio, ее главные особенности и характеристика. Создание эмулятора пункта меню Microsoft Office Word "Формат-Шрифт" с использованием интерфейса Windows Forms. курсовая работа [3,4 M], добавлен 26.01.2013
Основы программирования на 32-битном Ассемблере, разработка с его помощью программы, демонстрирующей работу одного из разделов ОС Windоws. Описание используемых АРI-функций как интерфейса программирования приложений. Листинг программы, результаты работы. курсовая работа [164,5 K], добавлен 18.05.2014
Техника создания графики при помощи API функций, экспортируемых библиотекой GDI32.DLL. Разработка на языке программирования С++ в среде программирования Microsoft Visual C++ программы для отображения часов реального времени в цифровом и аналоговом виде. курсовая работа [2,8 M], добавлен 27.01.2010
Характеристика операционной системы. История развития Windows. Сравнительная характеристика версий Windows. Элементы и инструменты Windows XP. Прикладные программы в Windows XP. Работа настольных и портативных компьютеров под управлением Windows. доклад [19,1 K], добавлен 16.10.2011
Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д. PPT, PPTX и PDF-файлы представлены только в архивах. Рекомендуем скачать работу .

© 2000 — 2021



Распределенная синхронизация процессов курсовая работа. Программирование, компьютеры и кибернетика.
Курсовая работа: Теория и методика физического воспитания как наука и учебная дисциплина
Дипломная работа по теме Проект цеху по виготовленню деталей насоса
Курсовая работа по теме Система бюджетного устройства РФ
Сочинение Интересный Случай
Реферат: Пиролиз угля. Скачать бесплатно и без регистрации
4 Егэ Темы Итогового Сочинения
Реферат: Аденома гипофиза. Скачать бесплатно и без регистрации
Мичурин Сочинения В 4 Томах 1948
Реферат: Жизнь и творчество В.А. Жуковского
Реферат: Самоменеджмент как способ повышения эффективности работы руководителя
Доклад: Развитие сообществ в единый европейский рынок
Реферат по теме Механизмы электрические однооборотные
Контрольная работа: Организация проведения экономического анализа в банке
Курсовая работа по теме Пенсійне забезпечення народних депутатів
Доклад по теме Доказательства происхождения человека от животных
Реферат: Происхождение девиации
Дипломная работа: Автоматизация энергоблока АЭС с ВВЭР-1000
Традиции Русской Культуры Реферат
Интраоперационные Методы Остановки Кровотечения Реферат
Реферат по теме Особенности поведения животных
Гиперактивный ребенок в начальной школе - Педагогика курсовая работа
Выполнение дипломного проекта студентами очного отделения "Автоматизации и вычислительной техники" - Программирование, компьютеры и кибернетика методичка
Бухгалтерская отчетность предприятия - Бухгалтерский учет и аудит курсовая работа


Report Page