8.5. Функции getrlimit() и setrlimit(): лимиты ресурсов
8.5. Функции getrlimit() и setrlimit(): лимиты ресурсов
Функции getrlimit() и setrlimit() позволяют процессу определять и задавать лимиты использования системных ресурсов. Аналогичные действия выполняет команда ulimit, которая ограничивает доступ запускаемых пользователем программ к ресурсам.
У каждого ресурса есть два лимита: жесткий и нежесткий. Второе значение никогда не может быть больше первого, и лишь процессы с привилегиями супер пользователя имеют право менять жесткий лимит. Обычно приложение уменьшает нежесткий лимит, ограничивая потребление системных ресурсов.
Обе функции принимают два аргумента: код, задающий тип ограничения, и указатель на структуру типа rlimit. Функция getrlimit() заполняет поля этой структуры, тогда как функция setrlimit() проверяет их и соответствующим образом меняет лимит. У структуры rlimit два поля: в поле rlim_cur содержится значение нежесткого лимита, а в поле rlim_max — значение жесткого лимита.
Ниже перечислены коды наиболее полезных лимитов, допускающих возможность изменения.
? RLIMIT_CPU. Это максимальный интервал времени центрального процессора (в секундах), занимаемый программой. Именно столько времени отводится программе на доступ к процессору. В случае превышения данного ограничения программа будет завершена по сигналу SIGXCPU.
? RLIMIT_DATA. Это максимальный объем памяти, который программа может запросить для своих данных. Запросы на дополнительную память будут отвергнуты системой.
? RLIMIT_NPROC. Это максимальное число дочерних процессов, которые могут быть запущены пользователем. Если процесс вызывает функцию fork(), а лимит уже исчерпал, функция завершается ошибкой.
? RLIMIT_NOFILE. Это максимальное число файлов, которые могут быть одновременно открыты процессом.
Программа, приведенная в листинге 8.4, задает односекундный лимит использования центрального процессора, после чего переходит в бесконечный цикл. Как только программа превышает установленный ею же лимит, ОС Linux уничтожает ее.
Листинг 8.4. (limit-cpu.c) Задание ограничения на использование нейтрального процессора
#include <sys/resource.h>
#include <sys/time.h>
#include <unistd.h>
int main() {
struct rlimit rl;
/* Определяем текущие лимиты. */
getrlimit(RLIMIT_CPU, &rl);
/* Ограничиваем время доступа к процессору
одной секундой. */
rl.rlim_cur = 1;
setrlimit(RLIMIT_CPU, &rl);
/* Переходим в бесконечный цикл. */
while(1);
return 0;
}
Когда программа завершается по сигналу SIGXCPU, интерпретатор команд выдает поясняющее сообщение:
% ./limit_cpu
CPU time limit exceeded
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКЧитайте также
Администраторы ресурсов
Администраторы ресурсов В этой главе вы изучите все, что относится к администраторам ресурсов в QNX/Neutrino (также известным как «драйверы устройств» и «администраторы ввода-вывода»). Перед написанием своего собственного администратора ресурса вам необходимо будет
Характеристики администраторов ресурсов
Характеристики администраторов ресурсов Как мы увидели в приведенных выше примерах, ключом к универсальности администраторов ресурсов является возможность использования стандартных функций POSIX — мы ведь не использовали никакие «специальные» функции, когда общались
Библиотека администратора ресурсов
Библиотека администратора ресурсов Прежде чем лезть в глубины организации администраторов ресурсов, познакомимся сначала с библиотекой администратора ресурсов, разработанной QSSL. Отметим, что в действительности эта «библиотека» состоит из нескольких четко различимых
Менеджеры ресурсов
Менеджеры ресурсов QNX вводит технику программирования, которая единообразно проходит сквозь всю систему.[41] Идея техники менеджеров ресурсов столь же проста, сколь и остроумна:• Вся система построена на тщательно проработанной в теории (и редко используемой при
7.5.5. Потребление ресурсов
7.5.5. Потребление ресурсов Хотя Electric Fence является мощным, легким в употреблении и быстрым инструментом (поскольку все проверки доступа осуществляются аппаратными средствами), за все это приходится платить свою цену. Большинство процессоров позволяют системе управлять
10.3.2 Использование ресурсов
10.3.2 Использование ресурсов Ядро Linux отслеживает, сколько ресурсов использует каждый процесс. Хотя отслеживается только небольшое их число, их измерения могут быть полезными разработчикам, администраторам и пользователям. В табл. 10.1 перечислены ресурсы, использование
Записи ресурсов
Записи ресурсов Записи в DNS называются записями ресурсов (resource records, RR). Нас интересуют только несколько типов RR.? А. Запись типа А преобразует имя узла в 32-разрядный адрес IPv4. Вот, например, четыре записи DNS для узла freebsd в домене unpbook.com, первая из которых — это запись типа
Поиск FTP-ресурсов
Поиск FTP-ресурсов Протокол FTP (File Transfer Protocol) предназначен для передачи файлов между компьютерами. По компьютерным меркам эта технология имеет весьма почтенный возраст. Сильные стороны этого протокола – простота и надежность. С точки зрения пользователя, FTP-сервер – это
Сравнение авторитетности ресурсов
Сравнение авторитетности ресурсов Для оценки авторитетности достаточно сравнить ряд косвенных признаков продвижения:? тематический индекс цитирования (ТИЦ);? PageRank;? количество проиндексированных страниц в «Яндексе» и Google;? число входящих ссылок на основе Solomono.ru или
51. Деструкторы, функции освобождения ресурсов и обмена не ошибаются
51. Деструкторы, функции освобождения ресурсов и обмена не ошибаются РезюмеВсе запуски этих функций должны быть успешными. Никогда не позволяйте ошибке выйти за пределы деструктора, функции освобождения ресурса (например, оператора delete) или функции обмена. В частности,
Формат ресурсов .NET
Формат ресурсов .NET До этого момента все наши приложения, использующие внешние ресурсы (например, файлы изображений), требовали, чтобы загружаемые файлы находились в каталоге приложения. Поэтому для загрузки этих файлов мы использовали их непосредственные имена.//
13.7. Получение ресурсов из библиотеки ресурсов
13.7. Получение ресурсов из библиотеки ресурсов Постановка задачи Требуется получить фотографии или видео непосредственно из библиотеки фотографий, не прибегая к использованию каких-либо встроенных компонентов графического пользовательского
Использование ресурсов
Использование ресурсов В Классическом сервере каждый экземпляр fb_inet_server выделяет в своей области памяти статический кэш для страниц базы данных. Поэтому использование ресурсов линейно возрастает с каждым дополнительным клиентским соединением. Однако, когда количество
Web-сайты ресурсов
Web-сайты ресурсов http://www.ibase.ru содержит огромное количество информации по InterBase и Firebird на русском языке: статьи, FAQ, файлы, форум, списки рассылки новостей и др.http://www.ibphoenix.com является центром информации и новостей для пользователей, разрабатывающих приложения для Firebird или