(1) ucore的线程控制块数据结构是什么?
(2) 如何知道ucore的两个线程同在一个进程?
(3) context和trapframe分别在什么时候用到?
(4) 用户态或内核态下的中断处理有什么区别?在trapframe中有什么体现?
(5) do_fork中的内核线程执行的第一条指令是什么?它是如何过渡到内核线程对应的函数的?
tf.tf_eip = (uint32_t) kernel_thread_entry;
/kern-ucore/arch/i386/init/entry.S
/kern/process/entry.S
(6)内核线程的堆栈初始化在哪?
tf和context中的esp
(7)fork()父子进程的返回值是不同的。这在源代码中的体现中哪?
(8)内核线程initproc的第一次执行流程是什么样的?能跟踪出来吗?
(1)(spoc) 理解内核线程的生命周期。
需写练习报告和简单编码,完成后放到git server 对应的git repo中
请完成如下练习,完成代码填写,并形成spoc练习报告
注意 state、pid、cr3,context,trapframe的含义
注意 理解对kstack, trapframe, context等的初始化
当前进程中唯一,操作系统的整个生命周期不唯一,在get_pid中会循环使用pid,耗尽会等待
能够把内核线程的生命周期和调度动态执行过程完整地展现出来