Для большей переносимости многие из средств mpr
анализа журнала используют gdb
для связывания адреса с соответствующим местом в исходном коде. Чтобы это работало, программа должна содержать отладочную информацию.
Большинство традиционных систем Unix передают ошибку шины ( SIGBUS
) процессу, который пытается использовать невыровненные данные. Ядро Linux обрабатывает доступ к невыровненным данным так, чтобы процесс мог нормально продолжать работу, хотя за это приходится платить существенным снижением производительности.
Во всяком случае это справедливо для систем Linux/Intel и Linux/SPARC. Размер страницы зависит от базовой аппаратной архитектуры и в некоторых системах может составлять 16 Кбайт и больше.
Разница между -fPIC
и -fpic
заключается в способе генерации независимого от расположения кода. В некоторых архитектурах с помощью -fpic
можно собрать только относительно небольшие совместно используемые библиотеки, тогда как в других эти флаги дают один и тот же эффект. Если только нет веских причин на обратное, лучше использовать -fPIC
вместо -fpic
, тогда все будет работать должным образом во всех архитектурах.
В случае удаления /etc/ld.so.cache
система может замедлиться. Для восстановления /etc/ld.so.cache
запустите ldconfig
.
Для многопоточных приложений библиотека хранит код ошибки там, где функция errno()
, которой известно, какой поток является текущим, может получить ее. Разные потоки могут содержать разные текущие коды возврата ошибок.
uid и gid обычно представляют собой положительные целые, но отрицательные целые тоже имеют определенное назначение. Применение -1 для идентификатора проблематично, однако многие системные вызовы, работающие с uid и gid, используют -1
в качестве признака, что модифицировать значение не нужно (см. пример этого в setregid()
далее в главе).
Процессы Linux также имеют четвертый uid и gid, используемые для файлового доступа. Они обсуждаются в следующем разделе этой главы.
Большинство систем передают окружение в виде параметра main()
, но такой метод не включен в стандарт POSIX. Переменная environ
— это метод, утвержденный POSIX.
Детальную информацию о том, как родительские и дочерние открытые файлы соотносятся друг с другом, можно найти в главе 11.
Группы процессов рассматриваются далее в этой главе
В главе 15 описаны причины, по которым это может произойти.
Это тот же формат, который использует команда env
для печати текущих значений переменных окружения, и аргумент envp
имеет тот же тип, что и глобальная переменная environ
.
Технически это указатель на завершающийся NULL
массив указателей на массивы символов, каждый из которых завершается символом '\0'
. Более подробно об это рассказано в [15].
Появление vfork()
было мотивировано старыми системами, которым необходимо было копировать всю память, используемую исходным процессом, как часть fork()
.Современные операционные системы используют копирование при записи, которое копирует области памяти только по необходимости, как это описано во многих источниках, посвященных операционным системам, в частности [40] и [2]. Это свойство делает fork()
почти таким же быстрым, как vfork()
, и намного более простым в использовании.
Это — существенное упрощение. В действительности kill()
посылает сигнал, а сигналы сами по себе достаточно сложная тема. См. полное описание того, что такое сигналы и как их применять, в главе 12.
Это нужно для того, чтобы управляющая заданиями оболочка могла перезапускать процессы, у которых изменился эффективный идентификатор пользователя. Более подробно об управлении заданиями рассказывается в главе 15.
Одна из популярных ранее форм компьютерной памяти выглядела как набор маленьких железных колечек, расположенных на матрице, к каждому из которых подводились два проводка, служащих для установки и считывания магнитной полярности кольца. Эти кольца назывались ядрами (cores), а все вместе — ядерной памятью. Поэтому дамп ядра — это копия состояния системной памяти в определенный момент времени.
Читать дальше