     ,    
   .

void do_timer(struct pt regs *regs)
{

jiffies_64++;

update_process_times(user_mode(regs)) ;

update_times() ;

}

 user_mode ()    , regs, 
  1,       -
,   0     .    update
process_times () ,        
          .

void update_process_times(int user_tick)
{

struct task struct *p = current;

int cpu = smp_processor_id();

int system = user tick  1;

update_one_process (p, user_tick, system, cpu) ;

run local timers ();

scheduler tick(user tick, system);

}

 update_process      -
  .    .  
,        (XOR) -
,     user_tick  system  ,  , 
 .    update_one_process ()   -
        -
 .

/*

*        

*/

p->utime += user;

p->stime += system;

    1,     .
 ,     ,     -
       ,     
  .         
          .  ,
      ,  -
     .  ,   
  ,       ,  -
 .         .

  run_local_timers ()   ,  -
   (.  7, "     -

220                                                                     10