摘要:
思考题 Thinking4.1 思考并回答下面的问题 : • 内核在保存现场的时候是如何避免破坏通用寄存器的? • 系统陷入内核调用后可以直接从当时的 a0-a3 参数寄存器中得到用户调用msyscall 留下的信息吗? • 我们是怎么做到让 sys 开头的函数“认为”我们提供了和用户调用 msys 阅读全文
摘要:
思考题 Thinking3.1 为什么我们在构造空闲进程链表时必须使用特定的插入的顺序?(顺序或者逆序) 按照头插法,是逆序。保证链表中的顺序和envs数组中的顺序相同。加载空闲进程时会使用LIST_FIRST()函数,会优先加载envs数组前面的块。进程调度时,最近使用过的放回到空闲链表时也是放到 阅读全文
摘要:
思考题 Thinking2.1 请思考cache用虚拟地址来查询的可能性,并且给出这种方式对访存带来的好处和坏处。另外,你能否能根据前一个问题的解答来得出用物理地址来查询的优势? cache使用虚拟地址查询是可能的,但是综合来看不如用物理地址查询。 cache使用虚拟地址查询的优势:节省了TLB未命 阅读全文
摘要:
思考题 Thinking1.1 也许你会发现我们的 readelf 程序是不能解析之前生成的内核文件 (内核文件是可执行文件) 的,而我们刚才介绍的工具 readelf 则可以解析,这是为什么呢?(提示:尝试使用 readelf -h,观察不同) 当我使用./readelf vmlinux命令时弹出 阅读全文