Xv6

Xv6内核分析(三.11)

main函数之startothers 1. startothers函数 startothers函数用来启动其他从核运行,大致的思想就是:首先设置好从核需要运行的代码的地址,然后使用核间中断IPI通知从...
阅读全文
Xv6

Xv6内核分析(四)

从核运行过程分析 1. entryother.S 从核的启动代码在entryother.S中,大致的流程和主核启动一样,主要包括: 设置cpu进入32位保护模式。 开启分页部件,在boot启动阶段,和...
阅读全文
Xv6

Xv6内核分析(三.1)

main函数之kinit1 1. kinit1概述 物理内存分配器在xv6-book中由详细的描述: 这个函数是用来初始化物理内存分配器的。可以用来分配的物理内存范围是地址空间: 其中end这个标号在...
阅读全文
Xv6

Xv6内核分析(五)

mian函数之kinit2 kinit2函数的作用是将之间的物理内存页添加到空间页链表之中: 在调用kinit2函数之后,物理内存页的申请释放就启用了锁机制。
阅读全文
Xv6

Xv6内核分析(三.7)

main函数之consoleinit devsw用来表示一个设备,xv6下最多有10个设备。其中console是第1个设备: consoleinit函数很简单,就是初始化了devsw中的读写操作函数指...
阅读全文
Xv6

Xv6内核分析(三.10)

main函数之tvinit 1. 中断描述符 中断描述符表idt共有256个项目,每个条目8字节,根据每个条目的类型不同,共有3种不同的门描述符如下: 在xv6中的设置idt代码如下: 注意,这个id...
阅读全文