Национальный цифровой ресурс Руконт - межотраслевая электронная библиотека (ЭБС) на базе технологии Контекстум (всего произведений: 634928)
Контекстум
Руконтекст антиплагиат система

Системное программирование в среде Linux (200,00 руб.)

0   0
Первый авторГунько А. В.
ИздательствоИзд-во НГТУ
Страниц235
ID774816
АннотацияВ данном пособии описан интерфейс прикладного программирования (API) UNIX-совместимых операционных систем: от файловых операций и использования библиотек до методов и средств разработки многозадачного и многопоточного программного обеспечения, а также средства межзадачной (IPC) и межпоточной коммуникации: программные каналы и каналы FIFO, очереди сообщений, семафоры, разделяемая память System V и POSIX, взаимные исключения и условные переменные. Кроме того, кратко обсуждаются средства коммуникации процессов по сети и особенности взаимодействия приложений и системных служб.
Кому рекомендованоУчебное пособие предназначено для студентов IV курса, обучающихся по направлению 27.03.04 «Управление в технических системах», а также может быть полезно студентам ряда других технических специальностей, связанных с разработкой многозадачного и многопоточного программного обеспечения в среде операционных систем семейства Linux.
ISBN978-5-7782-4160-2
УДК004.45(075.8)
ББК32.973.26-018я73
Гунько, А.В. Системное программирование в среде Linux : учеб. пособие / А.В. Гунько .— Новосибирск : Изд-во НГТУ, 2020 .— 235 с. — ISBN 978-5-7782-4160-2 .— URL: https://rucont.ru/efd/774816 (дата обращения: 01.05.2024)

Предпросмотр (выдержки из произведения)

Системное_программирование_в_среде_Linux.pdf
Стр.2
Стр.231
Стр.232
Стр.233
Стр.234
Системное_программирование_в_среде_Linux.pdf
УДК 004.45 (075.8) Г 948 Рецензенты: А.А. Малявко, канд. техн. наук, доцент А.Б. Колкер, канд. техн. наук, доцент Г 948 Гунько А.В. Системное программирование в среде Linux: учебное пособие / А.В. Гунько. – Новосибирск: Изд-во НГТУ, 2020. – 235 с. ISBN 978-5-7782-4160-2 В данном пособии описан интерфейс прикладного программирования (API) UNIX-совместимых операционных систем: от файловых операций и использования библиотек до методов и средств разработки многозадачного и многопоточного программного обеспечения, а также средства межзадачной (IPC) и межпоточной коммуникации: программные каналы и каналы FIFO, очереди сообщений, семафоры, разделяемая память System V и POSIX, взаимные исключения и условные переменные. Кроме того, кратко обсуждаются средства коммуникации процессов по сети и особенности взаимодействия приложений и системных служб. Учебное пособие предназначено для студентов IV курса, обучающихся по направлению 27.03.04 «Управление в технических системах», а также может быть полезно студентам ряда других технических специальностей, связанных с разработкой многозадачного и многопоточного программного обеспечения в среде операционных систем семейства Linux. Работа подготовлена на кафедре автоматики НГТУ УДК 004.45 (075.8) ISBN 978-5-7782-4160-2 © Гунько А.В., 2020 © Новосибирский государственный технический университет, 2020
Стр.2
Оглавление Предисловие ............................................................................................................ 3 Глава 1. Введение в системное программирование ............................................. 4 Вопросы для самопроверки ............................................................................. 8 Глава 2. Общие принципы Linux API.................................................................... 9 2.1. Стандарты, лежащие в основе Linux API ................................................ 9 2.1.1. Стандарт языка С .............................................................................. 10 2.1.2. Стандарты POSIX ............................................................................. 11 2.1.3. Стандарты LSB ................................................................................. 12 2.2. Задачи, выполняемые Linux API ............................................................ 14 2.2.1. Задачи, выполняемые ядром ............................................................ 15 2.2.2. Режим ядра и пользовательский режим .......................................... 16 2.2.3. Модель памяти процесса, его создание и выполнение .................. 18 2.2.4. Особенности выполнения системных вызовов Linux API ............ 19 2.3. Системные типы данных Linux API ...................................................... 20 Вопросы для самопроверки ........................................................................... 24 Глава 3. Файловые операции средствами системных вызовов ......................... 25 3.1. Общее представление о файловом вводе-выводе ................................. 25 3.2. Универсальность ввода-вывода ............................................................. 28 3.3. Открытие файла: open ( ) ........................................................................ 29 3.4. Чтение из файла: read( ) .......................................................................... 33 3.5. Запись в файл: write( ) ............................................................................. 35 3.6. Закрытие файла: close( ).......................................................................... 35 3.7. Изменение файлового смещения: lseek( ) ............................................. 36 3.8. Блокировка доступа к файлу .................................................................. 38 3.8.1. Описание блокировки ....................................................................... 39 3.8.2. Блокировка функцией fcntl( ) ........................................................... 41 231
Стр.231
3.8.2. Блокировка функцией lockf( ) .......................................................... 42 Вопросы для самопроверки ........................................................................... 44 Упражнения .................................................................................................... 44 Глава 4. Статические и динамические библиотеки ........................................... 45 4.1. Библиотека объектов .............................................................................. 45 4.2. Статические библиотеки ........................................................................ 48 4.2.1 Создание и редактирование статической библиотеки .................... 48 4.2.2. Использование статической библиотеки ........................................ 49 4.3. Краткий обзор разделяемых библиотек ................................................ 50 4.4. Создание и использование разделяемых библиотек ............................ 52 4.4.1. Создание разделяемой библиотеки ................................................. 52 4.4.2. Адресно-независимый код ............................................................... 53 4.4.3. Использование разделяемой библиотеки ....................................... 53 4.4.4. Команды objdump и readelf .............................................................. 56 4.4.5. Команда nm ....................................................................................... 56 4.4.6. Создание разделяемой библиотеки с применением общепринятых методик ................................................................... 57 4.5. Динамически загружаемые библиотеки ................................................ 58 4.5.1. Открытие разделяемой библиотеки: dlopen( ) ................................ 58 4.5.2. Получение адреса функции или переменной: dlsym( ) .................. 60 4.5.3. Выгрузка динамической библиотеки: dlclose( ) ............................. 61 4.5.4. Пример применения ......................................................................... 61 4.5.5. Инициализация и деинициализация динамических библиотек ......... 62 Вопросы для самопроверки ........................................................................... 64 Упражнения .................................................................................................... 65 Глава 5. Многозадачное программирование в Linux ......................................... 66 5.1. Основные системные вызовы для реализации многозадачности ....... 66 5.2. Идентификаторы процессов в Linux ..................................................... 68 5.3. Порождение процессов ........................................................................... 69 5.4. Методы синхронизации процессов ........................................................ 71 5.5. Завершение процесса .............................................................................. 74 5.6. Функции и программы в порожденных процессах .............................. 76 5.7. Управление приоритетами процессов ................................................... 78 5.8. Ненормальное завершение процесса. Сигналы .................................... 79 232
Стр.232
Вопросы для самопроверки ........................................................................... 84 Упражнения .................................................................................................... 84 Глава 6. Linux IPC ................................................................................................. 85 6.1. Совместное использование информации процессами ......................... 85 6.2. Каналы передачи данных ....................................................................... 87 6.2.1. Неименованные каналы.................................................................... 87 6.2.2. Именованные каналы ....................................................................... 92 Вопросы для самопроверки ........................................................................... 97 Упражнения .................................................................................................... 98 6.3. System V IPC: очереди сообщений, семафоры, разделяемая память ....................................................................................................... 98 6.3.1. Введение в System V IPC.................................................................. 98 6.3.2. Очереди сообщений System V IPC ................................................ 105 6.3.3. Семафоры System V IPC ................................................................. 112 6.3.4. Разделяемая память System V IPC ................................................. 116 Вопросы для самопроверки ......................................................................... 123 Упражнения .................................................................................................. 124 6.4. POSIX IPC: очереди сообщений, семафоры, разделяемая память ...... 125 6.4.1. Введение в POSIX IPC .................................................................... 125 6.4.2. Очереди сообщений POSIX IPC .................................................... 131 6.4.3. Семафоры POSIX IPC ..................................................................... 144 6.4.4. Разделяемая память POSIX IPC ..................................................... 153 Вопросы для самопроверки ......................................................................... 163 Упражнения .................................................................................................. 164 Глава 7. Многопоточное программирование в Linux ...................................... 165 7.1. Создание потоков и управление ими ................................................... 165 7.1.1. Создание потоков ............................................................................ 165 7.1.2. Завершение потоков ....................................................................... 167 7.1.3. Особенности главного потока ....................................................... 170 7.1.4. Жизненный цикл потоков .............................................................. 170 7.1.5. Атрибуты потоков .......................................................................... 171 7.2. Средства синхронизации потоков в Linux .......................................... 176 Вопросы для самопроверки ......................................................................... 187 Упражнения .................................................................................................. 187 233
Стр.233
Глава 8. Сетевое взаимодействие процессов в Linux ...................................... 188 8.1. Сокеты, дейтаграммы и потоки передачи ........................................... 189 8.2. Серверные функции сокета .................................................................. 191 8.2.1. Связывание сокета .......................................................................... 191 8.2.2. Функции работы с DNS .................................................................. 193 8.2.2. Перевод связанного сокета в состояние прослушивания ............ 196 8.2.3. Прием клиентских запросов соединения ...................................... 196 8.2.4. Отключение и закрытие сокетов ................................................... 197 8.3. Клиентские функции сокета ................................................................. 198 8.4. Отправка и получение данных ............................................................. 198 Вопросы для самопроверки ......................................................................... 201 Упражнения .................................................................................................. 201 Глава 9. Системные службы (демоны) в Linux ................................................ 202 9.1. Создание демона ................................................................................... 202 9.2. Функция daemon( ) ................................................................................ 206 9.3. Запись в журнал сообщений и ошибок с помощью системы syslog ....................................................................................................... 206 Вопросы для самопроверки ......................................................................... 211 Упражнения .................................................................................................. 212 Глава 10. Лабораторный практикум .................................................................. 213 Лабораторная работа № 1. Файловые операции средствами системных вызовов ................................................................................................................ 213 Лабораторная работа № 2. Статические и динамические библиотеки .......... 216 Лабораторная работа № 3. Многозадачное программирование в Linux ........ 218 Лабораторная работа № 4. Каналы передачи данных ..................................... 220 Лабораторная работа № 5. Очереди сообщений .............................................. 222 Лабораторная работа № 6. Семафоры и разделяемая память ......................... 224 Лабораторная работа № 7. Многопоточное программирование в Linux ....... 226 Лабораторная работа № 8. Сетевое взаимодействие процессов в Linux ....... 228 Курсовая (расчетно-графическая) работа ......................................................... 229 Библиографический список ............................................................................... 230 234
Стр.234

Облако ключевых слов *


* - вычисляется автоматически
Антиплагиат система на базе ИИ