Интернет-магазинИнтернет-магазин
| Начало | Новинки | Корзина |
  Главная » Каталог » Компьютерная литература » Операционные системы (Windows, Linux...) » Мир Linux и FreeBSD » Linux. Системное программирование. Р. Лав
Разделы
Бизнес (508)
Воспитание. Образование. (170)
Радиоэлектроника (79)
Каталоги (6)
Компьютерная литература (3224)
  Базы данных (100)
  Графика, дизайн, мультимедиа (322)
  Разработка программного обеспечения (57)
  Компьютерная безопасность. Хакерство (80)
  Компьютерные сети. Интранет, корпоративные сети (59)
  Компьютеры и программы (1052)
  Интернет и Web-страницы (326)
  Операционные системы (Windows, Linux...) (297)
    Мир Linux и FreeBSD (75)
    Mac OS, NetWare, OS/2, Solaris, QNX, MS DOS и другие операционные системы (8)
    MS Windows 95/98/ME/NT/2000 для пользователей (12)
    MS Windows Vista для пользователей (66)
    MS Windows XP для пользователей (38)
    MS Windows для программистов. API Windows (5)
    MS Windows, администрирование (45)
    UNIX для пользователей и администраторов (15)
  Основы программирования (40)
  MS Office. Офисные программы Майкрософт (188)
  Системы проектирования (CAD/CAM) (257)
  Сертификационные экзамены (6)
  Энциклопедии и словари по вычислительной технике, программированию, интернет (17)
  Цифровая фотография (36)
  Языки и системы программирования (387)
Кулинария (1)
Популярная психология (71)
Психология (132)
Психотерапия и психоанализ (15)
Полный список товаров
Издатели
Новинки Перейти
«АГРОБИЗНЕС УКРАИНЫ  2010»
«АГРОБИЗНЕС УКРАИНЫ 2010»
130.00 грн.
Реклама
Уважаемые посетители! Магазин работает в режиме виртуальной витрины. Прием заказов временно приостановлен.
Linux. Системное программирование. Р. Лав 152.40 грн.
Предыдущий товар Товар 40 из 75
категории Мир Linux и FreeBSD
 Следующий товар
 
box_bg_l.gif.

Эта книга о том, как создавать программное обеспечение под Linux, эффективно используя возможности системы — функции ядра и базовые библиотеки, включая оболочку, текстовый редактор, компилятор, отладчик и системные процедуры. Большая часть программного кода для Unix и Linux написана на системном уровне, поэтому в книге основное внимание сфокусировано на приложениях, находящихся вне ядра, таких как Apache, bash, cp, vim, Emacs, gcc, gdb, glibc, ls, mv и прочих. Книга написана специально для разработчиков и является необходимым инструментом любого программиста.

1-е издание, 2008 год, 416 стр., формат 17x23 см (70х100/16), Мягкая обложка, ISBN 978-5-388-00014-9 

 

Содержание

Об авторе

 

Предисловие

 
Глава 1.  Введение и важнейшие концепции 

Системное программирование

 

Системные вызовы

 

Библиотека C

 

Компилятор C

 

Интерфейсы API и ABI

 

Интерфейсы API

 

Интерфейсы ABI

 

Стандарты

 

История POSIX и SUS

 

Стандарты языка C

 

Linux и стандарты

 

Эта книга и стандарты

 

Концепции программирования в Linux

 

Файлы и файловая система

 

Процессы

 

Пользователи и группы

 

Разрешения

 

Сигналы

 

Взаимодействие процессов

 

Заголовки

 

Обработка ошибок

 

Знакомство с системным программированием

 
Глава 2.  Файловый ввод-вывод 

Открытие файлов

 

Системный вызов open()

 

Владельцы новых файлов

 

Разрешения новых файлов

 

Функция creat()

 

Возвращаемые значения и коды ошибок

 

Чтение файла при помощи системного вызова read()

 

Возвращаемые значения

 

Считывание всех байтов

 

Считывание без блокировки

 

Прочие значения ошибки

 

Лимиты размера для вызова read()

 

Запись при помощи системного вызова write()

 

Частичная запись

 

Режим присоединения

 

Запись без блокировки

 

Прочие коды ошибок

 

Ограничения размера для вызова write()

 

Поведение вызова write()

 

Синхронизированный ввод-вывод

 

fsync() и fdatasync()

 

Флаг O_SYNC

 

Флаги O_DSYNC и O_RSYNC

 

Прямой ввод-вывод

 

Закрытие файлов

 

Значения ошибок

 

Поиск при помощи lseek()

 

Поиск за пределами конца файла

 

Значения ошибок

 

Ограничения

 

Позиционное чтение и запись

 

Значения ошибок

 

Усечение файлов

 

Мультиплексированный ввод-вывод

 

select()

 

Системный вызов poll()

 

Сравнение poll() и select()

 

Внутреннее устройство ядра

 

Виртуальная файловая система

 

Страничный кэш

 

Страничная отложенная запись

 

Заключение

 
Глава 3.  Буферизованный ввод-вывод 

Ввод-вывод с пользовательским буфером

 

Размер блока

 

Стандартный ввод-вывод

 

Указатели файла

 

Открытие файлов

 

Режимы

 

Открытие потока данных при помощи дескриптора файла

 

Закрытие потоков данных

 

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

 

Чтение из потока данных

 

Чтение по одному символу за раз

 

Считывание строки целиком

 

Считывание двоичных данных

 

Запись в поток данных

 

Запись одного символа

 

Запись строки символов

 

Запись двоичных данных

 

Пример программы с использованием буферизованного ввода-вывода

 

Поиск в потоке данных

 

Получение текущей позиции в потоке данных

 

Сброс потока данных

 

Ошибки и конец файла

 

Получение связанного дескриптора файла

 

Управление буферизацией

 

Безопасность потоков выполнения

 

Блокировка файла вручную

 

Операции над потоками без блокировки

 

Недостатки стандартного ввода-вывода

 

Заключение

 
Глава 4.  Расширенный файловый ввод-вывод 

Разбросанный ввод-вывод

 

Системные вызовы readv() и writev()

 

Интерфейс event poll

 

Создание нового экземпляра epoll

 

Управление epoll

 

Ожидание событий при помощи epoll

 

События, запускаемые фронтом, и события, запускаемые уровнем

 

Отображение файлов в память

 

Системный вызов mmap()

 

Системный вызов munmap()

 

Пример отображения

 

Преимущества системного вызова mmap()

 

Недостатки системного вызова mmap()

 

Изменение размера отображения

 

Изменение защиты отображения

 

Синхронизация файла с отображением

 

Добавление советов относительно отображения

 

Советы относительно обычного файлового ввода-вывода

 

Системный вызов posix_fadvise()

 

Системный вызов readahead()

 

Советы стоят недорого

 

Синхронизированные, синхронные и асинхронные операции

 

Асинхронный ввод-вывод

 

Планировщики ввода-вывода и производительность ввода-вывода

 

Адресация диска

 

Жизнь планировщика ввода-вывода

 

Помощь при считывании

 

Выбор и настройка планировщика ввода-вывода

 

Оптимизация производительности ввода-вывода

 

Заключение

 
Глава 5.  Управление процессами 

Идентификатор процесса

 

Выделение идентификатора процесса

 

Иерархия процессов

 

Тип pid_t

 

Получение идентификатора процесса и идентификатора родительского процесса

 

Запуск процесса

 

Семейство вызовов exec

 

Системный вызов fork()

 

Завершение процесса

 

Прочие способы завершения

 

Библиотечный вызов atexit()

 

Функция on_exit()

 

SIGCHLD

 

Ожидание завершенных дочерних процессов

 

Ожидание определенного процесса

 

Еще больше гибкости при ожидании процессов

 

BSD говорит свое слово: wait3() и wait4()

 

Запуск и ожидание нового процесса

 

Зомби

 

Пользователи и группы

 

Реальные, действительные и сохраненные идентификаторы пользователя и группы

 

Изменение реального и сохраненного идентификатора пользователя или группы

 

Изменение действительного идентификатора пользователя или группы

 

Изменение идентификаторов пользователя и группы, стиль BSD

 

Изменение идентификаторов пользователя и группы, стиль HP-UX

 

Манипулирование предпочтительными идентификаторами пользователя/группы

 

Поддержка сохраненных идентификаторов пользователя

 

Получение идентификаторов пользователя и группы

 

Сеансы и группы процессов

 

Системные вызовы сеансов

 

Системные вызовы для группы процессов

 

Устаревшие функции для группы процессов

 

Демоны

 

Заключение

 
Глава 6.  Расширенное управление процессами 

Планирование процессов

 

Запись с O большим

 

Кванты времени

 

Процессы, ограниченные вводом-выводом, и процессы, ограниченные процессором

 

Вытесняющее планирование

 

Управление потоками

 

Уступка процессора

 

Правомерное использование

 

Уступка, прошлое и настоящее

 

Приоритеты процессов

 

Системный вызов nice()

 

Системные вызовы getpriority() и setpriority()

 

Приоритеты ввода-вывода

 

Привязка процессов к процессорам

 

Системные вызовы sched_getaffinity() и sched_setaffinity()

 

Системы реального времени

 

Жесткие и мягкие системы реального времени

 

Задержка, дрожание и предельные сроки

 

Поддержка процессов реального времени в Linux

 

Политики планирования и приоритеты в Linux

 

Установка параметров планирования

 

Интерфейс sched_rr_get_interval()

 

Предосторожности при использовании процессов реального времени

 

Детерминизм

 

Лимиты ресурсов

 

Лимиты

 

Установка и проверка лимитов

 
Глава 7.  Управление файлами и каталогами 

Файлы и их метаданные

 

Семейство stat

 

Разрешения

 

Владение

 

Расширенные атрибуты

 

Каталоги

 

Текущий рабочий каталог

 

Создание каталогов

 

Удаление каталогов

 

Чтение содержимого каталога

 

Ссылки

 

Жесткие ссылки

 

Символические ссылки

 

Удаление ссылки

 

Копирование и перемещение файлов

 

Копирование

 

Перемещение

 

Узлы устройств

 

Специальные узлы устройств

 

Генератор случайных чисел

 

Внеполосная коммуникация

 

Мониторинг событий файлов

 

Инициализация inotify

 

Стражи

 

События inotify

 

Расширенные параметры стражей

 

Удаление стража inotify

 

Проверка размера очереди событий

 

Разрушение экземпляра inotify

 
Глава 8.  Управление памятью 

Адресное пространство процесса

 

Страницы и подкачка страниц

 

Области памяти

 

Выделение динамической памяти

 

Выделение массивов

 

Изменение размера выделенной памяти

 

Освобождение динамической памяти

 

Выравнивание

 

Управление сегментом данных

 

Анонимные отображения в памяти

 

Создание анонимных отображений в памяти

 

Отображение /dev/zero

 

Расширенное выделение памяти

 

Тонкая настройка при помощи malloc_usable_size() и malloc_trim()

 

Отладка выделения памяти

 

Получение статистики

 

Выделение памяти на основе стека

 

Дублирование строк в стеке

 

Массивы переменной длины

 

Выбор механизма выделения памяти

 

Манипулирование памятью

 

Установка байтов

 

Сравнение байтов

 

Перемещение байтов

 

Поиск байтов

 

Прочее манипулирование байтами

 

Блокировка памяти

 

Блокировка части адресного пространства

 

Блокировка всего адресного пространства

 

Разблокировка памяти

 

Лимиты блокирования

 

Находится ли страница в физической памяти?

 

Уступающее выделение памяти

 

Принятие чрезмерных обязательств и OOM

 
Глава 9.  Сигналы 

Концепции сигналов

 

Идентификаторы сигналов

 

Сигналы, поддерживаемые в Linux

 

Простейшее управление сигналами

 

Ожидание сигнала, любого сигнала

 

Примеры

 

Запуск и наследование

 

Сопоставление номеров сигналов и строк

 

Отправка сигнала

 

Разрешения

 

Примеры

 

Отправка сигнала себе

 

Отправка сигнала всей группе процессов

 

Повторный вход

 

Функции, гарантированно поддерживающие повторный вход

 

Наборы сигналов

 

Больше функций для наборов сигналов

 

Блокирование сигналов

 

Извлечение ожидающих сигналов

 

Ожидание набора сигналов

 

Расширенное управление сигналами

 

Структура siginfo_t

 

Великолепный мир si_code

 

Отправка сигнала с полезной нагрузкой

 

Пример

 

Заключение

 
Глава 10.  Время 

Структуры данных для работы со временем

 

Исходное представление

 

А теперь точность до микросекунд

 

Еще лучше:  точность до наносекунд

 

Разбор времени

 

Тип для времени процесса

 

Часы POSIX

 

Разрешение источника времени

 

Получение текущего времени дня

 

Лучший интерфейс

 

Расширенный интерфейс

 

Получение времени процесса

 

Установка текущего времени дня

 

Установка времени с точностью

 

Расширенный интерфейс для установки времени

 

Различные действия со временем

 

Подстройка системных часов

 

Засыпание и ожидание

 

Засыпание с точностью до микросекунд

 

Засыпание с точностью до наносекунд

 

Расширенный подход к засыпанию

 

Переносимый способ засыпания

 

Превышение пределов

 

Альтернативы засыпанию

 

Таймеры

 

Простые сигнализации

 

Интервальные таймеры

 

Расширенные таймеры

 

Приложение.  Расширения GCC языка C

 

GNU C

 

Подставляемые функции

 

Подавление подстановки

 

Чистые функции

 

Постоянные функции

 

Функции, не возвращающие результат

 

Функции, выделяющие память

 

Как заставить вызывающего проверять возвращаемое значение

 

Как пометить функцию как устаревшую

 

Как пометить функцию как используемую

 

Как пометить функции или параметры как неиспользующиеся

 

Упаковка структуры

 

Увеличение границы выравнивания переменной

 

Помещение глобальных переменных в регистр

 

Комментирование ветвей

 

Получение типа выражения

 

Получение границы выравнивания типа

 

Смещение члена структуры

 

Получение адреса возврата функции

 

Диапазоны оператора case

 

Арифметика указателей типа void и указателей на функции

 

Более переносимо и красиво

 
Библиография 

Книги по языку программирования C

 

Книги по программированию в Linux

 

Книги, посвященные ядру Linux

 

Книги по дизайну операционной системы

 



Товар был добавлен в наш каталог 11 April 2009 г.
box_bg_r.gif.
Отзывы Количество:
Поиск
Введите слово для поиска. Расширенный поиск
Вход
E-Mail:
Пароль:
Регистрация
Отложенные товары Перейти
Нет отложенных товаров.
Отзывы Перейти
Написать отзывНапишите Ваше мнение о товаре!
Рассказать другу
 

Сообщите своим друзьям и близким о нашем магазине
Уведомления Перейти
УведомленияСообщите мне о новинках и Linux. Системное программирование. Р. Лав
Реклама
Скидки   |   Расширенный поиск   |   Свяжитесь с нами   |   Регистрация   |   Мои данные
Copyright © 2009 ga-zon.com
Материалы, представленные на сайте, не могут быть использованы без письменного разрешения администрации сайта
  bigmir)net TOP 100