O Torvalds Linus

Сайт о *nix системах и всем что с ними связано

У каждого процесса есть ограничения на ресурсы, которые определяют объем системных ресурсов, предоставляемых ему в пользование. Эти ограничения не позволяют пользователю злоупотреблять системными ресурсами (процессорным временем, дисковым пространством и т. д.). Linux поддерживает ограничения на ресурсы.

Ограничения на ресурсы для текущего процесса хранятся в поле current -> signai ->riim, т. е. в поле дескриптора сигнала этого процесса. Это поле представляет собой массив элементов типа struct riimit, по одному на каждое ограничение ресурса:

struct riimit (

unsigned long rlim_cur; unsigned long rlim_max;

);

Поле riim cur содержит текущее ограничение на ресурс. Например, поле current ->signai ->riim[RLiMiT_cPU] .riim_cur представляет ограничение на процессорное время для текущего процесса.

Поле riim max содержит максимальное значение для ограничения на ресурс. С ПОМОЩЬЮ системных ВЫЗОВОВ getrlimit () И setrlimit () ПОЛЬЗОВатеЛЬ ВСегда может увеличить предел riim cur для некоторого ресурса до значения riim max. Однако только суперпользователь (точнее говоря, пользователь, обладающий возможностью cap sys resource) может увеличить значение в поле riim max ИЛИ записать В поле riim cur Значение, превышающее riim max.

Большинство ограничений на ресурсы имеет значение rlim infinity (Oxffffffff), означающее, что на использование этого ресурса никакое ограничение не накладывается (конечно, реальные ограничения все равно существуют в зависимости от конструктивных особенностей ядра, объема оперативной памяти, свободного места на диске и т. д.). Тем не менее системный администратор может наложить на некоторые ресурсы определенные ограничения. Каждый новый процесс, созданный пользователем, наследует от своего родителя содержимое массива riim, и, следовательно, пользователь не может переопределить ограничения, установленные администратором.

Переключение процессов

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

Add A Comment