You can break up a process CPU time into user time and system time by looking at the
/proc/PID/stat file. The 14th and 15th fields are the user time and kernel time in jiffies (typically 1/100th or 1/250th of a second, depending on your kernel).
For finer grained monitoring of system access, you can use
/usr/bin/time -v application to give detail, or
strace -c application to monitor all the system calls.