kernel_task is just a handy abstraction that top uses to represent the resources consumed by the Darwin kernel itself. It's not a process that shows up in ps. Generally, you don't need to worry about it.
Also, on a multi-processor machine, a program could easily spend 3 hours on each...