应该在每个任务的TCB中都有一个用来做统计的tick计数变量,统计开启时会向时钟中断处理函数中挂一个接口,这个接口负责在时钟中断或者辅助时钟中断中,对当前被中断的任务的tick计数变量+1。统计任务是一个长时间运行的任务,比如时钟是每秒100个tick,配置统计任务每5s运行一次,则每次统计的时候总共过去500个tick,统计任务会查看个任务TCB中的tick计数,处以500就是这个任务的CPU占用率,然后再将tick清0,准备下一次统计。需要长时间运行统计任务来查看系统的运行情况。真正干活的是时钟中断,统计任务只是起个汇总上报的作用,所以多久运行一次其实关系不大。
|