Регистрация ·  Логин: Пароль: Запомнить   · Забыли пароль?




Ответить на тему
Автор Сообщение

Администратор
Аватара пользователя

С нами: 12 лет 7 месяцев
Сообщения: 9175
Откуда: Новгород
Россия

Сообщение 12 фев 2014, 02:14 

[Цитировать]

Роберт Лав | Linux. Системное программирование [2008] [DJVU]

Автор: Роберт Лав
Название: Linux. Системное программирование
Серия: Бестселлеры O'Reilly
Год: 2008
Издательство: Питер
ISBN: 978-5-388-00014-9
Жанр: Компьютерная (программирование)
Формат: DJVU
Качество: Отличное, 600dpi, OCR, закладки
Страниц: 416

Описание:
Эта книга о том, как создавать программное обеспечение под Linux, эффективно используя возможности системы - функции ядра и базовые библиотеки, включая оболочку, текстовый редактор, компилятор, отладчик и системные процедуры.
Большая часть программного кода для Unix и Linux написана на системном уровне, поэтому в книге основное внимание сфокусировано на приложениях, находящихся вне ядра, таких как Apache, bash, cp, vim, Emacs, gcc, gdb, glibc, ls, mv и прочих.
Книга написана специально для разработчиков и является необходимым инструментом любого программиста.
Об авторе 14
Предисловие 15
Глава 1. Введение и важнейшие концепции 17
Глава 2. Файловый ввод-вывод 44
Глава 3. Буферизованный ввод-вывод 88
Глава 4. Расширенный файловый ввод-вывод 112
Глава 5. Управление процессами 159
Глава 6. Расширенное управление процессами 200
Глава 7. Управление файлами и каталогами 239
Глава 8. Управление памятью 291
Глава 9. Сигналы 332
Глава 10. Время 364
Приложение. Расширения GCC языка С 397
Библиография 410
Об авторе 14
Предисловие 15
Глава 1. Введение и важнейшие концепции 17
Системное программирование 18
Системные вызовы 19
Библиотека С 20
Компилятор С 20
Интерфейсы API и ABI 21
Интерфейсы API 21
Интерфейсы ABI 22
Стандарты 23
История POSIX и SUS 23
Стандарты языка С 24
Linux и стандарты 25
Эта книга и стандарты 25
Концепции программирования в Linux 26
Файлы и файловая система 26
Процессы 34
Пользователи и группы 36
Разрешения 37
Сигналы 38
Взаимодействие процессов 39
Заголовки 39
Обработка ошибок 39
Знакомство с системным программированием 43
Глава 2. Файловый ввод-вывод 44
Открытие файлов 45
Системный вызов ореп() 45
Владельцы новых файлов 48
Разрешения новых файлов 48
Функция creat() 50
Возвращаемые значения и коды ошибок 51
Чтение файла при помощи системного вызова read() 51
Возвращаемые значения 52
Считывание всех байтов 53
Считывание без блокировки 54
Прочие значения ошибки 54
Лимиты размера для вызова readQ 55
Запись при помощи системного вызова write() 55
Частичная запись 56
Режим присоединения 57
Запись без блокировки 57
Прочие коды ошибок 57
Ограничения размера для вызова write() 58
Поведение вызова write() 58
Синхронизированный ввод-вывод 60
fsync() и fdatasync() 60
Флаг O_SYNC 62
Флаги O_DSYNC и O_RSYNC 63
Прямой ввод-вывод 64
Закрытие файлов 64
Значения ошибок 65
Поиск при помощи lseek() 66
Поиск за пределами конца файла 67
Значения ошибок 67
Ограничения 68
Позиционное чтение и запись 68
Значения ошибок 69
Усечение файлов 69
Мультиплексированный ввод-вывод 71
select() 72
Системный вызов poll() 78
Сравнение poll() и select() 82
Внутреннее устройство ядра 83
Виртуальная файловая система 83
Страничный кэш 84
Страничная отложенная запись 86
Заключение 87
Глава 3. Буферизованный ввод-вывод 88
Ввод-вывод с пользовательским буфером 88
Размер блока 89
Стандартный ввод-вывод 91
Указатели файла 91
Открытие файлов 92
Режимы 92
Открытие потока данных при помощи дескриптора файла 93
Закрытие потоков данных 94
Закрытие всех потоков данных 94
Чтение из потока данных 94
Чтение по одному символу за раз 94
Считывание строки целиком 95
Считывание двоичных данных 97
Запись в поток данных 98
Запись одного символа 98
Запись строки символов 99
Запись двоичных данных 99
Пример программы с использованием буферизованного ввода-вывода .... 100
Поиск в потоке данных 101
Получение текущей позиции в потоке данных 103
Сброс потока данных 103
Ошибки и конец файла 104
Получение связанного дескриптора файла 105
Управление буферизацией 105
Безопасность потоков выполнения 107
Блокировка файла вручную 108
Операции над потоками без блокировки 109
Недостатки стандартного ввода-вывода ПО
Заключение 111
Глава 4. Расширенный файловый ввод-вывод 112
Разбросанный ввод-вывод 113
Системные вызовы readv() и writev() 113
Интерфейс event poll 118
Создание нового экземпляра epoll 118
Управление epoll 119
Ожидание событий при помощи epoll 122
События, запускаемые фронтом, и события, запускаемые уровнем 123
Отображение файлов в память 124
Системный вызов mmap() 124
Системный вызов munmap() 129
Пример отображения 130
Преимущества системного вызова mmap() 131
Недостатки системного вызова mmap() 132
Изменение размера отображения 133
Изменение защиты отображения 134
Синхронизация файла с отображением 135
Добавление советов относительно отображения 136
Советы относительно обычного файлового ввода-вывода 139
Системный вызов posix_fadvise() 139
Системный вызов readahead() 141
Советы стоят недорого 142
Синхронизированные, синхронные и асинхронные операции 142
Асинхронный ввод-вывод 144
Планировщики ввода-вывода и производительность ввода-вывода 145
Адресация диска 146
Жизнь планировщика ввода-вывода 147
Помощь при считывании 148
Выбор и настройка планировщика ввода-вывода 151
Оптимизация производительности ввода-вывода 152
Заключение 158
Глава 5. Управление процессами 159
Идентификатор процесса 159
Выделение идентификатора процесса 160
Иерархия процессов 161
Тип pid_t 161
Получение идентификатора процесса и идентификатора родительского
процесса 161
Запуск процесса 162
Семейство вызовов exec 162
Системный вызов fork() 166
Завершение процесса 170
Прочие способы завершения 171
Библиотечный вызов atexit() 172
Функция on_exit() 173
SIGCHLD 173
Ожидание завершенных дочерних процессов 174
Ожидание определенного процесса 176
Еще больше гибкости при ожидании процессов 179
BSD говорит свое слово: wait3() и wait4() 181
Запуск и ожидание нового процесса 182
Зомби 184
Пользователи и группы 185
Реальные, действительные и сохраненные идентификаторы пользователя
и группы 186
Изменение реального и сохраненного идентификатора пользователя
или группы 187
Изменение действительного идентификатора пользователя или группы . . 188
Изменение идентификаторов пользователя и группы, стиль BSD 189
Изменение идентификаторов пользователя и группы, стиль HP-UX 189
Манипулирование предпочтительными идентификаторами
пользователя/группы 190
Поддержка сохраненных идентификаторов пользователя 190
Получение идентификаторов пользователя и группы 191
Сеансы и группы процессов 191
Системные вызовы сеансов 193
Системные вызовы для группы процессов 195
Устаревшие функции для группы процессов 196
Демоны 197
Заключение 199
Глава 6. Расширенное управление процессами 200
Планирование процессов 200
Запись с О большим 202
Кванты времени 202
Процессы, ограниченные вводом-выводом, и процессы, ограниченные
процессором 203
Вытесняющее планирование 204
Управление потоками 205
Уступка процессора 205
Правомерное использование 206
Уступка, прошлое и настоящее 207
Приоритеты процессов 208
Системный вызов nice() 209
Системные вызовы getpriority() и setpriority() 210
Приоритеты ввода-вывода 211
Привязка процессов к процессорам 212
Системные вызовы sched_getaffinity() и sched_setaffinity() 213
Системы реального времени 216
Жесткие и мягкие системы реального времени 216
Задержка, дрожание и предельные сроки 217
Поддержка процессов реального времени в Linux 218
Политики планирования и приоритеты в Linux 219
Установка параметров планирования 223
Интерфейс sched_rr_get_interval() 227
Предосторожности при использовании процессов реального времени . . . 228
Детерминизм 229
Лимиты ресурсов 232
Лимиты 233
Установка и проверка лимитов 237
Глава 7. Управление файлами и каталогами 239
Файлы и их метаданные 239
Семейство stat 239
Разрешения 243
Владение 244
Расширенные атрибуты 247
Каталоги 256
Текущий рабочий каталог 257
Создание каталогов 263
Удаление каталогов 264
Чтение содержимого каталога 266
Ссылки 269
Жесткие ссылки 270
Символические ссылки 271
Удаление ссылки 273
Копирование и перемещение файлов 275
Копирование 275
Перемещение 275
Узлы устройств 278
Специальные узлы устройств 278
Генератор случайных чисел 279
Внеполосная коммуникация 280
Мониторинг событий файлов 281
Инициализация inotify 282
Стражи 283
События inotify 285
Расширенные параметры стражей 288
Удаление стража inotify 289
Проверка размера очереди событий 289
Разрушение экземпляра inotify 290
Глава 8. Управление памятью 291
Адресное пространство процесса 291
Страницы и подкачка страниц 292
Области памяти 293
Выделение динамической памяти 294
Выделение массивов 296
Изменение размера выделенной памяти 297
Освобождение динамической памяти 299
Выравнивание 301
Управление сегментом данных 305
Анонимные отображения в памяти 306
Создание анонимных отображений в памяти 307
Отображение/dev/zero 309
Расширенное выделение памяти 310
Тонкая настройка при помощи malloc_usable_size() и malloc_trim() 313
Отладка выделения памяти 314
Получение статистики 314
Выделение памяти на основе стека 315
Дублирование строк в стеке 317
Массивы переменной длины 317
Выбор механизма выделения памяти 319
Манипулирование памятью 320
Установка байтов 320
Сравнение байтов 321
Перемещение байтов 322
Поиск байтов 323
Прочее манипулирование байтами 324
Блокировка памяти 324
Блокировка части адресного пространства 325
Блокировка всего адресного пространства 326
Разблокировка памяти 327
Лимиты блокирования 328
Находится ли страница в физической памяти? 328
Уступающее выделение памяти 329
Принятие чрезмерных обязательств и ООМ 329
Глава 9. Сигналы 332
Концепции сигналов 333
Идентификаторы сигналов 334
Сигналы, поддерживаемые в Linux 334
Простейшее управление сигналами 340
Ожидание сигнала, любого сигнала 341
Примеры 342
Запуск и наследование 344
Сопоставление номеров сигналов и строк 345
Отправка сигнала 345
Разрешения 346
Примеры 347
Отправка сигнала себе 347
Отправка сигнала всей группе процессов 347
Повторный вход 348
Функции, гарантированно поддерживающие повторный вход 349
Наборы сигналов 351
Больше функций для наборов сигналов 351
Блокирование сигналов 352
Извлечение ожидающих сигналов 353
Ожидание набора сигналов 353
Расширенное управление сигналами 354
Структура siginfo_t 356
Великолепный мир si_code 358
Отправка сигнала с полезной нагрузкой 361
Пример 362
Заключение 363
Глава 10. Время 364
Структуры данных для работы со временем 367
Исходное представление 367
А теперь точность до микросекунд 367
Еще лучше: точность до наносекунд 368
Разбор времени 368
Тип для времени процесса 370
Часы POSIX 370
Разрешение источника времени 370
Получение текущего времени дня 372
Лучший интерфейс 372
Расширенный интерфейс 373
Получение времени процесса 374
Установка текущего времени дня 374
Установка времени с точностью 375
Расширенный интерфейс для установки времени 376
Различные действия со временем 376
Подстройка системных часов 378
Засыпание и ожидание 382
Засыпание с точностью до микросекунд 382
Засыпание с точностью до наносекунд 383
Расширенный подход к засыпанию 385
Переносимый способ засыпания 387
Превышение пределов 387
Альтернативы засыпанию 388
Таймеры 388
Простые сигнализации 388
Интервальные таймеры 389
Расширенные таймеры 391
Приложение. Расширения GCC языка С 397
GNU С 397
Подставляемые функции 398
Подавление подстановки 399
Чистые функции 399
Постоянные функции 400
Функции, не возвращающие результат 400
Функции, выделяющие память 400
Как заставить вызывающего проверять возвращаемое значение 401
Как пометить функцию как устаревшую 401
Как пометить функцию как используемую 401
Как пометить функции или параметры как неиспользующиеся 402
Упаковка структуры 402
Увеличение границы выравнивания переменной 402
Помещение глобальных переменных в регистр 403
Комментирование ветвей 404
Получение типа выражения 405
Получение границы выравнивания типа 405
Смещение члена структуры 406
Получение адреса возврата функции 407
Диапазоны оператора case 407
Арифметика указателей типа void и указателей на функции 408
Более переносимо и красиво 408
Библиография 410
Книги по языку программирования С 410
Книги по программированию в Linux 411
Книги, посвященные ядру Linux 412
Книги по дизайну операционной системы 413
Скриншоты (сжатые):


Время раздачи: с 20.10 до 5.00 по МСК
Download
Для скачивания .torrent файлов необходима регистрация
Сайт не распространяет и не хранит электронные версии произведений, а лишь предоставляет доступ к создаваемому пользователями каталогу ссылок на торрент-файлы, которые содержат только списки хеш-сумм

Страница 1 из 1

Ответить на тему

   Похожие торренты   Торрент 




cron