Maray MM二期拉开帷幕~

心情大好~!

以下为呓语,不懂者绕到便可O(∩_∩)O

———

话说到前天MM(Memory Management)一期工程搞定,当时留了个悬疑:页目录中的第一项映射无论如何都不能取消,一旦取消,系统立即崩溃。找了很久bug,未果。

今天上午上完两节课后就回来看intel手册了,希翼从中能找到些疏漏的知识,或许我的错误就藏匿于疏漏之处。一直看到了晚上七八点,一百多页的英文,看得顺畅,却没有什么答案。突然发现Intel这一千多页的书,两三年来断断续续竟然快看完了!Newbility!

晚上开了虚拟机,盲目调试,依然未果!在一个很平凡很平凡的5秒钟内我发现,CR2中的值竟然是一个低端内存值!难道它不应该是一个高端内存值么?0xCXXXXXXX!真是这样,那就不难理解为啥不能删除第一个页目录项了—一旦删除,这个低端地址便触发页面异常,异常会涉及到堆栈,堆栈……堆栈……分析到这里,我突然想到,我的堆栈貌似没有调整到0xCXXXXXXX的地址上呀!靠,大BUG!没有调整,每每访问堆栈(esp、ebp),必然要异常了!经过一番调整,将esp调整到5M的物理地址上,一切OK~~哈哈哈~~~~

MM二期即将开工,周五~周日搞定,将buddy allocator写出来。

第三期的任务是调整内存布局。现在kernel在低端内存,今天看intel的书才发现,这真危险!!!

第四期便是写Slab了,第五期进行内存异常处理,第六期搞定虚拟内存管理。DONE!

—–

Maray~逝去的回忆,未来的希望。

—-

这周的作业真……sigh,得加油了~我的排队论~~

发表评论

邮箱地址不会被公开。 必填项已用*标注