Меню Рубрики

Linux системное программирование 2 е изд pdf

Linux. Системное программирование. Роберт Лав

Данная книга рассказывает о системном программировании в Linux. Системное программирование — это практика написания системного ПО , низкоуровневый код которого взаимодействует непосредственно с ядром и основными системными библиотеками.
Иными словами, речь далее пойдет в основном о системных вызовах Linux и низкоуровневых функциях, в частности тех, которые определены в библиотеке C.
Есть немало пособий, посвященных системному программированию для UNIX­ систем, но вы почти не найдете таких, которые рассматривают данную тему достаточно подробно и фокусируются именно на Linux. Еще меньше подобных книг учитывают новейшие релизы Linux и продвинутые интерфейсы, ориентированные исключительно на Linux.
Эта книга не только лишена всех перечисленных недостатков, но и обладает важным достоинством: дело в том, что я написал массу кода для Linux, как для ядра, так и для системных программ, расположенных непосредственно «над ядром». На самом деле я реализовал на практике ряд системных вызовов и других функций, описанных далее.
Соответственно книга содержит богатый материал, рассказывая не только о том, как должны работать системные интерфейсы, но и о том, как они действительно работают и как вы сможете использовать их с максимальной эффективностью.
Таким образом, данная книга одновременно является и руководством по системному программированию для Linux, и справочным пособием, описывающим системные вызовы Linux, и подробным повествованием о том, как создавать более интеллектуальный и быстрый код.
Текст написан простым, доступным языком. Независимо от того, является ли создание системного кода вашей основной работой, эта книга научит полезным приемам, которые помогут вам стать по ­настоящему высокопрофессиональным программистом.

Если вам понравилась эта книга поделитесь ею с друзьями, тем самым вы помогаете нам развиваться и добавлять всё больше интересных и нужным вам книг!

Источник

Linux системное программирование 2 е изд pdf

Название: Linux. Системное программирование (2-е изд.)
Автор: Роберт Лав
Издательство: Питер
Год: 2014
Формат: PDF
Размер: 11 Мб
Язык: русский

Данная книга представляет собой руководство по системному программированию для Linux, справочник по системным вызовам Linux, а также подробный рассказ о том, как писать более быстрый и умный код. Роберт Лав стоит у истоков создания операционной системы Linux и внес существенный вклад в создание ядра Linux и настольной среды GNOME. Лав четко разграничивает стандартные функции POSIX и специальные службы, которые предлагаются лишь в Linux. Это обновленное и дополненное издание, в котором появилась новая глава о многопоточности, позволяет подробно рассмотреть Linux как с теоретической, так и с прикладной точки зрения. Книга охватывает широкий круг аспектов программирования, в частности:

•Обзор ядра Linux, библиотеки C, компилятора C
•Базовые операции ввода/вывода, такие, как считывание файлов и запись в них
•Продвинутые интерфейсы ввода/вывода, распределение памяти, приемы оптимизации
•Семейство системных вызовов для базового управления процессами
•Продвинутые приемы управления процессами, в частности, в реальном времени
•Концепция потоков, многопоточность, Pthreads
•Управление файлами и каталогами
•Интерфейсы для выделения памяти и оптимизации доступа к ней
•Базовые и продвинутые сигнальные интерфейсы, их роль в системе
•Управление часами, в частности, часами POSIX и таймерами высокого разрешения

Источник

книга Linux. Системное программирование (2-е изд.) — Лав

Linux. Системное программирование (2-е изд.) — Лав


Название: Linux. Системное программирование (2-е изд.) — Лав
Автор: Роберт Лав
Страниц: 448
Формат: PDF
Размер: 12.5 Мб
Качество: Отличное
Язык: Русский
Год издания: 2014

Роберт Лав стоит у истоков создания операционной системы Linux и внес существенный вклад в создание ядра Linux и настольной среды GNOME.Данная книга представляет собой руководство по системному программированию для Linux, справочник по системным вызовам Linux, а также подробный рассказ о том, как писать более быстрый и умный код.
Лав четко разграничивает стандартные функции POSIX и специальные службы, которые предлагаются лишь в Linux. Это обновленное и дополненное издание, в котором появилась новая глава о многопоточности, позволяет подробно рассмотреть Linux как с теоретической, так и с прикладной точки зрения. Книга охватывает широкий круг аспектов программирования, в частности:

Обзор ядра Linux, библиотеки C, компилятора C
Базовые операции ввода/вывода, такие, как считывание файлов и запись в них
Продвинутые интерфейсы ввода/вывода, распределение памяти, приемы оптимизации
Семейство системных вызовов для базового управления процессами
Продвинутые приемы управления процессами, в частности, в реальном времени
Концепция потоков, многопоточность, Pthreads
Управление файлами и каталогами
Интерфейсы для выделения памяти и оптимизации доступа к ней
Базовые и продвинутые сигнальные интерфейсы, их роль в системе
Управление часами, в частности, часами POSIX и таймерами высокого разрешения

Предисловие. 17
Вступление. 19
Благодарности. 25
От издательства. 26
Глава 1. Введение и основополагающие концепции. 27
Глава 2. Файловый ввод-вывод. 54
Глава 3. Буферизованный ввод-вывод. 99
Глава 4. Расширенный файловый ввод-вывод. 125
Глава 5. Управление процессами. 171
Глава 6. Расширенное управление процессами. 210
Глава 7. Поточность. 245
Глава 8. Управление файлами и каталогами. 275
Глава 9. Управление памятью. 324
Глава 10. Сигналы. 365
Глава 11. Время. 394
Приложение A. Расширения GCC для языка C. 427
Приложение Б. Библиография. 441

Источник

Linux системное программирование 2 е изд pdf

Типичный программист запись закреплена

«Системное программирование под Linux: рассказ о ядре и библиотеке С», Р. Лав [2013] (Linux System Programming: Talking Directly to the Kernel and C Library, R. Love)

Это пособие создано для тех, кто хочет писать программное обеспечение, основанное на непосредственно предоставляемых ядром возможностях и основных системных библиотеках Linux. В нем вы найдете учебник по программированию под Linux, справочное руководство по системным вызовам и руководство по написанию быстрого, элегантного кода.

Автор обеспечивает глубокий обзор Linux как с теоретической, так и с прикладной точки зрения по широкому кругу вопросов программирования, в том числе ядро Linux, общий обзор компилятора С, основные операции ввода/вывода, понятия потоков, многопоточности, интерфейсы для оптимизации работы с памятью и многое другое.

Источник

Книга «Linux. Системное программирование. 2-е изд.»

На днях у нас вышло второе издание замечательной книги «Linux. Системное программирование. 2-е изд.». Как обычно для Хабра-читателей действует скидка 20%. Акция продлится до 20 апреля. При покупке книги введите код: 1f8e5be3.
Книга доступна в печатном и электронном виде.

Аннотация:

Пишите программы, опирающиеся непосредственно на службы ядра Linux и на основные системные библиотеки. Автор этой универсальной книги, Роберт Лав, участвовал в разработке ядра Linux. Книга представляет собой руководство по системному программированию для Linux, справочный мануал по системным вызовам Linux, а также инсайдерский рассказ о том, как писать более быстрый и умный код.

Лав четко разграничивает стандартные функции POSIX и специальные службы, которые предлагаются лишь в Linux. Это обновленное и дополненное издание, в котором появилась новая глава о многопоточности, позволяет подробно рассмотреть Linux как с теоретической, так и с прикладной точки зрения. Книга охватывает широкий круг аспектов программирования, в частности:

  • Обзор ядра Linux, библиотеки C, компилятора C
  • Базовые операции ввода/вывода, такие, как считывание файлов и запись в них
  • Продвинутые интерфейсы ввода/вывода, распределение памяти, приемы оптимизации
  • Семейство системных вызовов для базового управления процессами
  • Продвинутые приемы управления процессами, в частности, в реальном времени
  • Концепция потоков, многопоточность, Pthreads
  • Управление файлами и каталогами
  • Интерфейсы для выделения памяти и оптимизации доступа к ней
  • Базовые и продвинутые сигнальные интерфейсы, их роль в системе
  • Управление часами, в частности, часами POSIX и таймерами высокого разрешения

Роберт Лав пользовался Linux и участвовал в его разработке уже на заре истории этой операционной системы. Автор сделал существенный вклад в создание ядра Linux и настольной среды GNOME. Роберт работает руководителем отдела в Google, где участвовал в проектировании и создании операционной системы Android.

Книга «Системное программирование в Linux» должна быть в библиотеке каждого специалиста, серьезно занимающегося написанием приложений для Linux или просто желающего улучшить свои навыки программирования. Роберт создал важнейший ресурс для профессиональных Linux-программистов.

Джереми Эллисон, команда разработчиков Samba.

Источник

—>Радио сайт —>

—>

Компьютер [3155]
Радио 1995 [12]
Радио 1996 [12]
Радио 1997 [12]
Радио 1998 [12]
Радио 1999 [12]
Радио 2000 [12]
Радио 2010 [12]
Радио 2011 [0]
Радио 2012 [0]
Радио 2013 [1]
Радио 2014 [0]
Хакер [111]
Железо 2010 [12]
Железо 2011 [12]
Железо 2012 [11]
Железо 2013 [6]
Upgrade 2011 [48]
Upgrade 2012 [46]
Upgrade 2013 [48]
Upgrade 2014 [4]
Электроника [2817]
Серия Ремонт [102]
Электротехника [360]
Радиоаматор 2010 [2]
Радиоаматор 2011 [12]
Радиоаматор 2012 [10]
Радиоаматор 2013 [10]
Радиоаматор 2014 [5]
Библиотека ремонта [4]
Upgrade Special 2011 [10]
Upgrade Special 2012 [5]
Ремонт и Сервис 2009 [12]
Ремонт и Сервис 2010 [12]
Ремонт и Сервис 2011 [15]
Ремонт и Сервис 2012 [12]
Ремонт и Сервис 2013 [28]
Радиоконструктор 2011 [12]
Радиоконструктор 2012 [13]
Радиоконструктор 2013 [12]
Техника — молодёжи [105]
Массовая радиобиблиотека [1058]
Автомобильная электроника [33]
Современная электроника [13]

—>

Linux. Системное программирование (2-е изд.) — Роберт Лав стоит у истоков создания операционной системы Linux и внес существенный вклад в создание ядра Linux и настольной среды GNOME.
Данная книга представляет собой руководство по системному программированию для Linux, справочник по системным вызовам Linux, а также подробный рассказ о том, как писать более быстрый и умный код.
Лав четко разграничивает стандартные функции POSIX и специальные службы, которые предлагаются лишь в Linux. Это обновленное и дополненное издание, в котором появилась новая глава о многопоточности, позволяет подробно рассмотреть Linux как с теоретической, так и с прикладной точки зрения. Книга охватывает широкий круг аспектов программирования.

Название: Linux. Системное программирование (2-е изд.)
Автор: Роберт Лав
Издательство: Питер
Год: 2014
Страниц: 448
Формат: PDF
Размер: 12,2 МБ
ISBN: 978-5-496-00747-4
Качество: Отличное
Серия или Выпуск: Бестселлеры O’Reilly
Язык: Русский

Предисловие
Вступление
Целевая аудитория и необходимые предпосылки
Краткое содержание
Версии, рассмотренные в книге
Условные обозначения
Работа с примерами кода
Благодарности
От издательства
Глава 1. Введение и основополагающие концепции
Системное программирование
Зачем изучать системное программирование
Краеугольные камни системного программирования
Системные вызовы
Библиотека C
Компилятор C
API и ABI
API
ABI
Стандарты
История POSIX и SUS
Стандарты языка C
Linux и стандарты
Стандарты и эта книга
Концепции программирования в Linux
Файлы и файловая система
Процессы
Пользователи и группы
Права доступа
Сигналы
Межпроцессное взаимодействие
Заголовки
Обработка ошибок
Добро пожаловать в системное программирование
Глава 2. Файловый ввод-вывод
Открытие файлов
Системный вызов open()
Владельцы новых файлов
Права доступа новых файлов
Функция creat()
Возвращаемые значения и коды ошибок
Считывание с помощью read()
Возвращаемые значения
Считывание всех байтов
Неблокирующее считывание
Другие значения ошибок
Ограничения размера для read()
Запись с помощью write()
Случаи частичной записи
Режим дозаписи
Неблокирующая запись
Другие коды ошибок
Ограничения размера при использовании write()
Поведение write()
Синхронизированный ввод-вывод
fsync() и fdatasync()
sync()
Флаг O_SYNC
Флаги O_DSYNC и O_RSYNC
Непосредственный ввод-вывод
Закрытие файлов
Значения ошибок
Позиционирование с помощью Iseek()
Поиск с выходом за пределы файла
Ограничения
Позиционное чтение и запись
Усечение файлов
Мультиплексный ввод-вывод
select()
Системный вызов poll()
Сравнение poll() и select()
Внутренняя организация ядра
Виртуальная файловая система
Страничный кэш
Страничная отложенная запись
Резюме
Глава 3. Буферизованный ввод-вывод
Ввод-вывод с пользовательским буфером
Стандартный ввод-вывод
Открытие файлов
Открытие потока данных с помощью файлового дескриптора
Закрытие потоков данных
Считывание из потока данных
Считывание одного символа в момент времени
Считывание целой строки
Считывание двоичных данных
Запись в поток данных
Запись отдельного символа
Запись строки символов
Запись двоичных данных
Пример программы, в которой используется буферизованный ввод-вывод
Позиционирование в потоке данных
Сброс потока данных
Ошибки и конец файла
Получение ассоциированного файлового дескриптора
Управление буферизацией
Безопасность программных потоков
Блокировка файлов вручную
Неблокируемые потоковые операции
Недостатки стандартного ввода-вывода
Резюме
Глава 4. Расширенный файловый ввод-вывод
Фрагментированный ввод-вывод
Системные вызовы readv() и writev()
Возвращаемые значения
Пример использования writev()
Пример использования readv()
Реализация
Опрос событий
Создание нового экземпляра 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. Расширенное управление процессами
Планирование процессов
Кванты времени
Процессы ввода-вывода против ограниченных процессором
Приоритетное планирование
Completely Fair Scheduler
Высвобождение ресурсов процессора
Приоритеты процессов
nice()
getpriority() и setpriority()
Приоритеты ввода-вывода
Привязка процессов к процессору
Системы реального времени
Мягкие и жесткие системы реального времени
Задержка, колебание и временное ограничение
Поддержка реального времени в Linux
Политики планирования и приоритеты в Linux
Установка параметров планирования
sched_rr_get_interval()
Предосторожности при работе с процессами реального времени
Детерминизм
Лимиты ресурсов
Лимиты по умолчанию
Установка и проверка лимитов
Коды ошибок
Глава 7. Поточность
Бинарные модули, процессы и потоки
Многопоточность
Издержки многопоточности
Альтернативы многопоточности
Поточные модели
Поточность на уровне пользователя
Комбинированная поточность
Сопрограммы и фиберы
Шаблоны поточности
Поток на соединение
Поток, управляемый событием
Конкурентность, параллелизм и гонки
Синхронизация
Мьютексы
Взаимные блокировки
Р-потоки
Реализация поточности в Linux
API для работы с Р-потоками
Связывание Р-потоков
Создание потоков
Идентификаторы потоков
Завершение потоков
Самозавершение
Завершение других потоков
Присоединение и отсоединение потоков
Присоединение потоков
Отсоединение потоков
Пример поточности
Мьютексы Р-потоков
Инициализация мьютексов
Запирание мьютексов
Отпирание мьютексов
Пример использования мьютексов
Дальнейшее изучение
Глава 8. Управление файлами и каталогами
Файлы и их метаданные
Семейство stat
Разрешения
Владение
Расширенные атрибуты
Перечисление расширенных атрибутов файла
Каталоги
Текущий рабочий каталог
Создание каталогов
Удаление каталогов
Чтение содержимого каталога
Ссылки
Жесткие ссылки
Символические ссылки
Удаление ссылки
Копирование и перемещение файлов
Копирование
Перемещение
Узлы устройств
Специальные узлы устройств
Генератор случайных чисел
Внеполосное взаимодействие
Отслеживание файловых событий
Инициализация inotify
Стражи
События inotify
Расширенные события отслеживания
Удаление стража inotify
Получение размера очереди событий
Уничтожение экземпляра inotify
Глава 9. Управление памятью
Адресное пространство процесса
Страницы и их подкачка
Области памяти
Выделение динамической памяти
Выделение массивов
Изменение размера выделенных областей
Освобождение динамической памяти
Выравнивание
Управление сегментом данных
Анонимные отображения в памяти
Создание анонимных отображений в памяти
Отображение /dev/zero
Расширенное выделение памяти
Отладка при операциях выделения памяти
Выделение памяти на основе стека
Дублирование строк в стеке
Массивы переменной длины
Выбор механизма выделения памяти
Управление памятью
Установка байтов
Сравнение байтов
Перемещение байтов
Поиск байтов
Перещелкивание байтов
Блокировка памяти
Блокировка части адресного пространства
Блокировка всего адресного пространства
Разблокировка памяти
Лимиты блокировки
Находится ли страница в физической памяти
Уступающее выделение памяти
Глава 10. Сигналы
Концепции, связанные с сигналами
Идентификаторы сигналов
Сигналы, поддерживаемые в Linux
Основы управления сигналами
Ожидание любого сигнала
Примеры
Выполнение и наследование
Сопоставление номеров сигналов и строк
Отправка сигнала
Права доступа
Примеры
Отправка сигнала самому себе
Отправка сигнала целой группе процессов
Реентерабельность
Наборы сигналов
Блокировка сигналов
Получение сигналов, ожидающих обработки
Ожидание набора сигналов
Расширенное управление сигналами
Структура siginfo_t
Удивительный мир si_code
Отправка сигнала с полезной нагрузкой
Изъян в UNIX?
Глава 11. Время
Структуры данных, связанные с представлением времени
Оригинальное представление
А теперь — с микросекундной точностью!
И еще лучше: наносекундная точность
Разбиение времени
Тип для процессного времени
Часы POSIX
Получение текущего времени суток
Более удобный интерфейс
Продвинутый интерфейс
Получение процессного времени
Установка текущего времени суток
Установка времени с заданной точностью
Продвинутый интерфейс для установки времени
Эксперименты с временем
Настройка системных часов
Засыпание и ожидание
Засыпание с микросекундной точностью
Засыпание с наносекундной точностью
Продвинутая работа со спящим режимом
Переносимый способ засыпания
Превышение пределов
Альтернативы засыпанию
Таймеры
Простые варианты сигнализации
Интервальные таймеры
Функции для расширенной работы с таймерами
Приложение A. Расширения GCC для языка C
GNU C
Встраиваемые функции
Подавление встраивания
Чистые функции
Постоянные функции
Невозвращаемые функции
Функции, выделяющие память
Принудительная проверка возвращаемого значения вызывающей
стороной
Как пометить функцию как устаревшую
Как пометить функцию как используемую
Как пометить функции или параметры как неиспользуемые
Упаковка структуры
Увеличение границы выравнивания переменной
Помещение глобальных переменных в регистр
Аннотирование ветвей
Получение типа выражения
Получение границы выравнивания типа
Смещение члена внутри структуры
Получение возвращаемого адреса функции
Диапазоны оператора case
Арифметика указателей типа void и указателей на функции
Более переносимо и красиво
Приложение Б. Библиография
Книги по языку программирования C
Книги по программированию в Linux
Книги, посвященные ядру Linux
Книги об организации операционных систем

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

  • Как развернуть mac os на виртуальную машину
  • Как развернуть iso образ на флешку в mac os
  • Как разбить на разделы флешку mac os
  • Как разбить жесткий диск на разделы в mac os без потери данных
  • Как разбить внешний жесткий диск на разделы на mac os