diff --git a/kernel/sysproc.c b/kernel/sysproc.c
index d58fd3ad0ce2d74d161a6d3147f25e8de2fcc4d0..6959e51e478aaa3be9924c45c4176596d19b4ac7 100644
--- a/kernel/sysproc.c
+++ b/kernel/sysproc.c
@@ -190,13 +190,13 @@ sys_top(void)
   for(p = proc; p < &proc[NPROC]; p++) {
     if(p->state != UNUSED) {
       // CPU使用率计算(简化版)
-      int cpu_usage = (p->cputicks * 100) / (ticks - p->startticks + 1);
+      int cpu_usage = (p->cputicks * 100) / (ticks - p->ctime + 1);
       
       // 内存使用百分比
       int mem_percent = (p->sz * 100) / total_mem;
       
       // 运行时间(秒)
-      int runtime = (ticks - p->startticks) / 10;
+      int runtime = (ticks - p->ctime) / 10;
       
       // 状态字符串
       char *state;
diff --git a/kernel/trap.c b/kernel/trap.c
index 12e171f2f6af0ae7a39fe4bed5239893c0cae098..a11a077fe815d99b83b5d91d8bde4097dc62d3d6 100644
--- a/kernel/trap.c
+++ b/kernel/trap.c
@@ -84,12 +84,12 @@ usertrap(void)
     // 每10个时钟中断检查一次
     if(ticks % 10 == 0) {
       // CPU使用率过高且优先级大于1时降低优先级
-      if((p->cputicks * 100)/(ticks - p->startticks) > 80 
+      if((p->cputicks * 100)/(ticks - p->ctime) > 80 
         && p->priority > 1) {
         p->priority--;
       }
       // CPU使用率较低且优先级小于10时提高优先级
-      else if((p->cputicks * 100)/(ticks - p->startticks) < 20 
+      else if((p->cputicks * 100)/(ticks - p->ctime) < 20 
               && p->priority < 10) {
         p->priority++; 
       }