Original article: http://www.redhat.com/magazine/012oct05/departments/tips_tricks/
Перевод: © Иван Песин
Служба поддержки пользователей Red Hat получает технические вопросы со всего мира. Специалисты Red Hat ежедневно добавляют полученные вопросы и ответы на них в базу знаний Red Hat Knowledgebase. Доступ к ней возможен при наличии учетной записи на сайте redhat.com. Каждый месяц Red Hat Magazine знакомит читателей с Red Hat Knowledgebase, публикуя несколько самых свежих вопросов и ответов.
Одной из наиболее ценных особенностей Red Hat Enterprise Linux 4 является SELinux (Security Enhanced Linux) -- мощный слой безопасности уровня ядра, который предоставляет возможности тонкого контроля за тем, к чему в системе имеют доступ пользователи и процессы, и что они могут запускать. По умолчанию, SELinux активирован в системах Red Hat Enterprise Linux, осуществляя обязательный контроль доступа, который Red Hat называет политикой targeted. В основном, этот контроль доступа увеличивает безопасность соответствующих сетевых сервисов, но иногда может влиять на работы некоторых программ сторонних производителей и скриптов, работавших в предыдущих версиях Red Hat Enterprise Linux.
Крайне важно понимать работу основных утилит командной строки для SELinux.
sestatus
- выводит общую информацию о состоянии и некоторые логические настройкиgetenforce
- выводит текущий режим работы selinuxsetenforce 1/0
- переключает между режимами работы enforcing и warningenforcing=1/0
- параметр загрузки grub, задающий режим enforcing или warning, вне зависимости от настроек в файле /etc/sysconfig/selinuxsystem-config-securitylevel
- задает режим selinux и версию политики по-умолчаниюключ -Z
- используется утилитами "ps" и "ls"
для вывода контекста безопасности файлов и процессовchcon
- изменяет контекст безопасности файлов (chcon --reference для использования эталона)
Да. Платформа Eclipse поддерживает gdb
с
помощью плагина CDT для разработки на C/C++. Плагин CDT
для Eclipse доступен покупателям Red Hat Enterprise Linux в Red Hat Network
(RHN), как часть Red Hat Developer Suite. Для установки eclipse-cdt
в системе, зарегистрированной в RHN и подписанной на канал Red Hat
Developer Suite, вы можете выполнить следующую команду:
up2date eclipse-cdt
Также доступны и другие графические отладчики, например ddd
, основанные на gdb
. Они входят в состав Red Hat Enterprise Linux и доступны из RPM-пакета ddd
.
Другой интересной программой, является отладчик Red Hat Insight.
При использовании OProfile очень важно сохранять баланс между частотой выборки и накладными расходами. Существует возможность настроить OProfile таким образом, что накладные расходы при его работе приведут к невозможности работы в системе. Вы должны действовать с осторожностью при выборе значений счетчиков.
Выполните команду opcontrol
с параметром --list-events
. Она выведет типы событий, доступные для установленного процессора вместе с рекомендуемыми минимальными значениями счетчиков.
Значения с плавающей запятой, которые хранятся в соответствующем стеке, имеют точность в 80 бит, тогда как при переносе этих значений в память, они округляются до 64 бит. Таким образом, для того чтобы отложить округление до 64 бит, храните значения с плавающей запятой как можно дольше в стеке.
Операции округления могут производиться и после каждого вычисления. Однако, это заметно снизит производительность.
Одним вариантом может быть установка округления значений с плавающей
запятой до 64
бит. Но тут есть побочный эффект, а именно, становится недоступным
тип long double.
Кроме того, при операциях с плавающей запятой все равно могут возникать
проблемы с недостаточной точностью. Некоторые компиляторы применяют
этот подход. Как им пользоваться на Linux
вы можете прочитать в man fegetround
.
Возможным решением проблемы недостаточной точности, при использовании gcc
на
Intel® Pentium® 4, может стать выполнение арифметических
операций с плавающей запятой в регистрах SSE, что достигается
указанием опции -mfpmath=sse
. Регистры SSE имеют достаточную точность для операций с типами float и double, что устраняет проблему.
Еще одним решением является использование опции -ffloat-store
.
Оно помогает в некоторых случаях, но не всегда. Этот параметр
принуждает выделять место для пользовательских переменных в стеке.
Однако, временные переменные и дальше хранятся в регистрах, что может
привести к ошибкам округления из-за недостаточной точности.
Вообще говоря, 80-битная точность результатов -- хорошая вещь, увеличивающая точность математических вычислений. Однако, она может добавить работы при портировании кода на другие архитектуры. Две наиболее часто возникающие проблемы:
Работа с плавающей запятой на x86 является компромиссом между тем, что поддерживает аппаратная часть и тем, что компилятор может эффективно использовать.
Проблема:
Файл заголовков quota.h
, входящий в состав пакета glibc-headers
, в Red Hat Enterprise Linux 4 Update 2 отличается от файла, включенного в RPM-пакеты исходных текстов ядра и kernel-devel
.
Решение:
Файл заголовков, включенный в RPM-пакеты исходных текстов ядра и kernel-devel
не предназначены для использования и компиляции с пользовательскими программами.
Пользовательские программы должны использовать файлы заголовков, включенные в пакет glibc-headers
.
В нашем случае, файл заголовков quota.h
из пакета glibc-headers
для Red Hat Enterprise Linux 4 Update 2 был обновлен для поддержки
новых структур данных. Старая версия включена для обратной
совместимости; во время компиляции приложения можно указать, какую
версию необходимо использовать.
По умолчанию в glibc-headers
для Red Hat Enterprise Linux 4 Update 2 используются структуры данных и интерфейсы старой версии. Потому, если приложение использует старую семантику работы с квотами, просто скомпилируйте его с заголовками из glibc-headers
и все должно заработать.
Если же приложению необходимо работать с интерфейсами и структурами
данных новой версии, тогда при компиляции с заголовками из glibc-headers
нужно еще указать опцию:
-D_LINUX_QUOTA_VERSION=2