Тип работы:
Предмет:
Язык работы:


Разработка межпроцессной шины передачи сообщений для систем GNU/Linux

Работа №186821

Тип работы

Дипломные работы, ВКР

Предмет

информатика

Объем работы44
Год сдачи2024
Стоимость4400 руб.
ПУБЛИКУЕТСЯ ВПЕРВЫЕ
Просмотрено
13
Не подходит работа?

Узнай цену на написание


Аннотация 2
Введение 2
1 Постановка задачи 6
2 Обзор методов межпроцессного взаимодействия 7
2.1 Определение процесса в UNIX системах 7
2.2 Классификация способов межпроцессного взаимодействия 8
2.3 Неименованные каналы 9
2.4 Именованные каналы 9
2.5 Очереди сообщений POSIX 10
2.6 Сокеты 11
2.7 Метод разделенной памяти 12
3 Реализация 18
3.1 Выбор архитектуры 18
3.2 Инициализация разделяемой памяти 21
3.3 Разработка средства синхронизации 23
3.4 Разработка Менеджера памяти 27
3.5 Разработка кольцевой очереди 30
4 Оценка результата 35
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ И ЛИТЕРАТУРЫ 37


Межпроцессное взаимодействие играет важную роль при построении масштабируемых систем. Это механизм, позволяющим приложениям обмениваться данными и координировать свои действия.
Процессы в операционной среде представляют собой надежный механизм изоляции программ друг от друга. Современные системы позволяют одновременно работать сотням процессам. Ядро операционной системы гарантирует что сегментационная ошибка в одном из процессов не повлияет на работу других процессов. Так, например, ошибка, вызванная в процессе браузера, не сможет повлиять на работу аудиоплеера.
Аналогично при создании дочернего процесса, родительский и дочерний процесс имеют разные копии каждой переменной. Изменение значения переменной в дочернем процессе не повлияет на родительский, и наоборот.
Однако бывают ситуации в которых нам бы хотелось избавиться от изоляции, накладываемой процессами. В системах подобных UNIX, часто необходимо работать с процессами работающих с правами X-сервера.
X-сервер - это процесс, который запускается с правами администратора, управляет одним или несколькими графическими дисплеями и одним или несколькими устройствами ввода (клавиатурой, мышью и т. д.), подключенными к компьютеру.
При этом, есть отдельные клиенты, которые хотят использовать графический интерфейс, и им необходимо общаться с X-сервером.
Еще одним примером служит работа веб-браузера, все вкладки в современном веб-браузере выполняются в разных процессах, но имеют одни и те же общие параметры конфигурации браузера. Если вы добавите новую закладку на одну вкладку, было бы утомительно добавлять эту вкладку вручную на все остальные открытые вкладки. Точно так же было бы пустой тратой системных ресурсов для всех этих процессов иметь дубликаты исходного кода браузера.
Выбор метода межпроцессного взаимодействия зачастую зависит от характера передаваемых данных.
Так, например, консольные видеоплейеры умеют читать стандартный поток ввода вывода и принимать определенные команды с клавиатуры.
Для возможности управления с помощью мыши создаются графические интерфейсы, поверх подобный движков. Которые выполняют следующие функции.
Во-первых, выполняют взаимодействие с точки зрение телеметрии, связанное с командами, другими словами, имитируют нажатие клавиш. Здесь плейер общается с графическим интерфейсом мелкими последовательностями байт, представляющими команды.
Во-вторых, коммуникация выходных данных из плейера и X-сервера. Декодированные данный это уже гораздо более большой объем данных, участвующих в коммуникации. Обычных системных вызовов read(), write() здесь будет не достаточно.
В таких случаях прибегают к использованию различных способов межпроцессного взаимодействия, при работе с большими потоками данных особенно важно выбирать правильный способ.
Сегодня современные требования к использованию систем приводят к необходимости использовать ускоренного обмена информации между прикладными процессами для запущенных приложений.
С ростом объемов данных и усложнением программных систем возникает необходимость в создании средств, способных эффективно обрабатывать большие объемы сообщений .
В эпоху больших данных приложения часто обрабатывают огромные объемы информации. Например, системы аналитики в реальном времени должны обрабатывать миллионы событий в секунду. Такие нагрузки требуют от средств межпроцессного взаимодействия высокой пропускной способности и низкой задержки, чтобы поддерживать производительность системы на должном уровне. Классические методы межпроцессного взаимодействия, такие как очереди сообщений или каналы, могут не справляться с такими объемами данных, что ведет к необходимости разработки новых, более эффективных средств.
С развитием интернета вещей количество устройств, подключенных к сети, стремительно растет. Эти устройства генерируют огромные потоки данных, которые необходимо передавать и обрабатывать в реальном времени. Это накладывает на средства межпроцессного взаимодействия обязанность обеспечивать надежную и быструю передачу данных между множеством процессов и устройств, что требует высокой масштабируемости и устойчивости к нагрузкам.
Также, в условиях высокопроизводительных вычислений приложения обрабатывают огромные объемы данных, требующие быстрой и надежной передачи между процессами. Например, научные вычисления, анализ больших данных, исследования по машинному обучению могут требовать обмена большими объемами данных между процессами, работающими на одной машине. В таких случаях средства локального межпроцессного взаимодействия должны обеспечивать высокую пропускную способность и низкую задержку, чтобы поддерживать производительность системы на должном уровне.


Возникли сложности?

Нужна помощь преподавателя?

Помощь в написании работ!


1 Силбершац, А., Галвин, П. Б., & Гейдж, Г. Концепции операционных систем / А. Силбершац, П. Б. Галвин, Г. Гейдж. — 10-е изд. — М.: Вильямс, 2020. — 1184 с.
2 Таненбаум, Э. С., & Бос, Х. Современные операционные системы / Э. С. Таненбаум, Х. Бос. — 4-е изд. — М.: Питер, 2014. — 1136 с.
3 Стивенс, В. Р., & Раго, С. А. UNIX. Программирование в среде операционной системы / В. Р. Стивенс, С. А. Раго. — 3-е изд. — СПб.: Питер, 2013. — 992 с.
4 Стивенс, В. Р. UNIX. Разработка сетевых приложений / В. Р. Стивенс. — 2-е изд. — СПб.: Питер, 2007. — 1060 с.
5 Лав, Р. Программирование в Linux. Работа с ядром и библиотеками / Р. Лав. — 2-е изд. — М.: ДМК Пресс, 2013. — 528 с.
6 Реймонд, Э. С. Обзор механизмов межпроцессного взаимодействия в Unix / Э. С. Реймонд // Обзоры вычислительной техники. — 1990. — Т. 22, № 1. — С. 1-32.
7 Валенте, П., & Мурара, Р. Оценка производительности механизмов межпроцессного взаимодействия в Linux / П. Валенте, Р. Мурара // Материалы 5-й ежегодной конференции Linux Showcase & Conference. — 2002.
8 Бернштейн, П. А., & Ньюкомер, Э. Межпроцессное взаимодействие в распределенных системах / П. А. Бернштейн, Э. Ньюкомер // Обзоры вычислительной техники. — 1997. — Т. 29, № 1. — С. 23-49.
9 IEEE Standard for Information Technology - Portable Operating System Interface (POSIX). — IEEE Std 1003.1-2018. — 2018.
10 Linux Documentation Project. Межпроцессное взаимодействие. [Электронный ресурс]. URL: http://www.tldp.org (дата обращения: 25.05.2024).
11 Free Software Foundation. Документация по библиотеке GNU C. [Электронный ресурс]. URL: https://www.gnu.org/software/libc/manual (дата обращения: 25.05.2024).



Работу высылаем на протяжении 30 минут после оплаты.




©2025 Cервис помощи студентам в выполнении работ