os
juzejian
这个作者很懒,什么都没留下…
展开
-
ucore-project5: mm(1)
project5到project9主要处理内存管理。 其中project5是一个大工程,内部分为5个小工程,本次主要针对第一个小工程进行分析。 在project3.1中,就已经使用了ld的linker script,直接在其中指定链接时的一些配置。比如起始代码的符号,起始地址值,某个段的align值,以及可以定义一些变量。 在project5中,起始地址改为汇编函数kern...2011-12-19 01:30:50 · 105 阅读 · 0 评论 -
ucore-project5: mm(2)
看内核刚进入时加载临时gdt的代码:lgdt __gdtdesc - KERNBASE.datagdt:...__gdtdesc: .word 0x17 .long gdt-KERNBASE 其中KERNBASE = 0xC0000000。在lgdt指令中,使用了__gdtdesc的真实物理地址,而在__gdtdesc中,使用了gdt的真实物理地...2011-12-20 00:27:28 · 104 阅读 · 0 评论 -
ucore-project5:mm(3)
paging由x86 cpu控制寄存器中的三个bit控制:CR0 bit31:PG位,控制是否启用pagingCR4 bit4:PSE位,页大小扩展,允许4M大小的页面CR4 bit5:PAE位,物理地址扩展 先看32位的paging处理,就是PSE=PAE=0,而PG=1时的情况。 一个线性地址被分为3部分,第一部分是页目录表项索引,高10位(bit31-bit22)...2011-12-21 23:29:15 · 111 阅读 · 0 评论 -
ucore-project5: linker script
要对内核进行页映射,首先要知道内核在内存中的位置和内核的大小。内核在内存中的位置很好知道,因为是启动代码拷贝进去的,而内核的大小就不好知道了,只有最后将各个obj文件组合成内核文件的ld命令才知道。而ld命令的命令行参数很难定义参数告诉代码,此时就需要链接器脚本linker script了。ld使用命令-T指定链接器 linker script功能很强大,可以告诉链接器应该怎么干活儿,除了...2011-12-22 00:00:29 · 101 阅读 · 0 评论 -
ucore-project5: mm(4)
时隔近20天,终于搞定了一个问题。使用linker script设置内核起始地址为0xC0000000后,在没有启用分页的情况下,终于让加载到0x100000的内核成功运行起来了。内核代码正常运行,时钟中断正常。 ucore lab2 project5中首先设置了一个临时gdt,将base地址设置为-0xC0000000,这样在后续所有地址访问中,地址都会与这个base地址相加,相当于减去...2012-01-09 00:31:03 · 117 阅读 · 0 评论 -
OS X常用快捷键和触控板操作使用总结
前两天刚刚买了一台MacBook Air,系统是OS X 10.8(Mountain Lion)。对于用惯了Windows GUI的我来说,很多命令找不到了,很不习惯。经过这几天的摸索,越来越感觉苹果系统的好用了。尤其是触控板,完全替代了鼠标,并且可用性远超鼠标。现在基本不用鼠标了,连触控板下方的左右键也基本不用了。看网上很多帮助文档都是以快捷键为中心组织的,实际上我更想做某个操作时查找一个快捷键...2012-11-18 20:02:45 · 217 阅读 · 0 评论