System Calls Related to Scheduling
Several system calls have been introduced to allow processes to change their priorities and scheduling policies. As a general rule, users are always allowed to lower the priorities of their processes. However, if they want to modify the priorities of processes belonging to some other user or if they want to increase the priorities of their own processes, they must have superuser privileges.
The nice( ) System Call
The nice( )
[79] system call allows
processes to change their base priority. The integer value contained
in the increment
parameter is used to modify the
nice
field of the process descriptor. The
nice Unix command, which allows users to run
programs with modified scheduling priority, is based on this system
call.
The sys_nice( )
service routine handles the
nice( )
system call. Although the
increment
parameter may have any value, absolute
values larger than 40 are trimmed down to 40. Traditionally, negative
values correspond to requests for priority increments and require
superuser privileges, while positive ones correspond to requests for
priority decrements. In the case of a negative increment, the
function invokes the capable( )
function to verify
whether the process has a CAP_SYS_NICE
capability.
We discuss that function, together with the notion of capability, in
Chapter 20. If the user turns out to have the
capability required to change priorities, sys_nice( )
adds the value of increment
to the
nice
field of current
. If necessary, ...
Get Understanding the Linux Kernel, Second Edition now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.