The root user has access to override nearly all system settings. Other than file system access though, a root owned process generally has to explicitly ask for some change, rather than just getting special access or priority.
e.g. processes have a 'niceness' priority (see man nice
) which dictates which processes get higher priority access to CPU time. Root owned processes get scheduled according to their niceness like any other, but whereas other processes can only increase their own niceness, the root user can also decrease it (assuming a higher priority).
Similar rules apply to resource limits (ulimit), and ionice as for nice. This is contrary to what DTK seems to be saying about ulimit, but note that ulimit is a BSD technology, only partially implemented in linux. The ulimit command line interface will silently allow you to specify some limits that the kernel in fact ignores. Also resource limits include a hard limit which can only be set by root, up to which the active user can modify the soft limit which is currently in effect.
If a process cannot be killed, it is usually because it is waiting on some kernel call to complete. The most common example is waiting for a filesystem action on a filesystem which has gone away or is perhaps just heavily overloaded so the kill
action can't proceed till the kernel call completes. In the case of something like a remote mounted file system where the network link has been broken, the call may never complete.