Главная| Трекер ▼| Поиск| Правила| FAQ| |
Автор | Сообщение |
---|---|
admin
Администратор ![]() Сообщения: 9175 Откуда: Новгород ![]() |
Роберт Лав | 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 по МСК Помоги нашему сайту на расходы за сервер и качай торренты НЕОГРАНИЧЕННО!Пожертвовать 100 ₽ ![]() Или 2204 1201 2214 8816, с комментарием "Помощь трекеру" Связь с администрацией |
Страница 1 из 1 |
![]() |
|