Xv6

Xv6内核分析(四)

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

Xv6内核分析(三.11)

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

Xv6内核分析(三.10)

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

Xv6内核分析(三.8)

main函数之uartinit uart的具体编程知识见8250相关资料。 由代码可知,在初始化了uart之后,调用ioapicenable使能了uart中断,处理中断的cpu设置为了主核???
阅读全文
Xv6

Xv6内核分析(三.7)

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

Xv6内核分析(三.4)

main函数之seginit 1. seginit函数 seginit是用于设置每个cpu自己的GDT全局描述符表: 首先获得当前cpu的结构,然后对其中的gdt初始化,最后加载gdt寄存器。 1.1...
阅读全文
Xv6

Xv6内核分析(三.2)

main函数之kvmalloc 1. kvmalloc函数 这个函数主要就是分配一个页表给内核进程用于调度: kpgdir是一个全局变量,用于记录内核进程的页目录基址,kvmalloc获得页目录后,调...
阅读全文
Xv6

Xv6内核分析(三.1)

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