《30天自制操作系统》学习笔记--第10天

原创 2013年12月02日 13:42:06

       内存管理和叠加处理

       今天的代码比较多,对于写过程序的人来说应该还是比较容易看懂的。

       首先说的内存管理,昨天说道把很多内存分成0x1000字节大小的块,然后分配给程序使用,但是不一定所有的程序用到的都是0x1000的整数倍字节,所以就要设计一个取整的方法,就有了书中提到的聪明做法(size+0xfff)&0xfffff000;这个做法或者称为算法的正确性证明很简单,带两个数试一下就知道玄机了,就是把一个12位非零二进制数向前进位,而零不进位,最后把后3位归零。我们还可以把大于x的任何数进位,小于等于x的舍去(size+0x1000-x-1)&0xfffff000;哈哈,应该是对的,我也没有证明。。不过x=0是和原式一样的。。举一反三山寨之本。。。

       接着就到了我很疑惑的地方了。叠加处理,但是!!!注意!!!作者开始给结构体显示的分配内存了,就是图层的控制结构体,我不明白,之前写的那些结构体也没分配内存,为啥突然从这开始分配了,而作者根本没提,难道是因为昨天才写的内存管理,今天就开始用了?那之前的程序怎么办呢。我一会儿还是好好研究一下。

       感觉要设计系统,就应该对这个系统的宏观结构应该完全清楚,骨架清晰,内容就可以随意发挥了。现在是骨架还没搞清楚,所以博猪没有一开始就写自己山寨版,而是想把书看完,然后找点操作系统相关的书再看看然后再做个试验品出来玩玩。。哈哈。。不知道思路正确不正确。。

       至于这个叠加处理,其基本目的是控制多个图层,设计相应的数据结构。而刷新那里作者反复的实验,但其本质就是减少冗余计算,就是说有些计算能剩就不做,就像一个简单的图像卷积(好吧,博猪以前做过一段时间图像处理,听不懂的可以完全忽略。。)如果按照算法做,时间复杂度是O(x*y*size*size)(x,y是图像的大小x

*y个像素,size是卷积核宽度),但经过优化可以做到只要O(x*y),而方法就是要用到前一步的计算结果,减少冗余的计算量(好吧,这是博猪第一次面试的面试题,很幸运。公司没要我0.0)。好,叠加的优化原理是哪个地方改变了,就刷新改变的区域的像素。至于实现细节,书中的代码有详细介绍,关键是确定叠加区域,然后重绘叠加区域。。。 

        明天继续努力。。。


版权声明:本文为博主原创文章,未经博主允许不得转载。

《30天自制操作系统》学习笔记--Mac环境搭建

弄了三天了,终于弄好了,先说结果,就是作者在网站上放了os x的工具(hrb.osask.jp,也有linux下的工具,可以自己去下载),也就是说我白忙活了三天。。。          再说一下这几天...

《30天自制操作系统》学习笔记--第8天

今天看的有点纠结,因为竟然看困了很少有这种情况,主要是有好多东西作者并没有做深入介绍,只是说这样是对的,至于为啥这样以后再说,这让我感觉很不爽。具体来说说。        首先,先解决了鼠标运动的问题...

《30天自制操作系统》学习笔记--第7天

今天看的还是比较顺利,很快一天的就看完了,总结一下今天的主要知识。        首先是中断处理程序,中断处理程序尽量高效,短小精悍,所以像显示啊什么的操作尽量不再中断处理程序中出现,因为一旦进入中...

《30天自制操作系统》学习笔记--第15天

今天的内容是多任务,所谓多任务就是“同时”执行多个任务,作者写的是在单核cpu上轮流执行多个任务,在短时间进行各种切换,但是实际上还是串联的,虽然表面上看的是同时执行,不知道现在的多核处理器是如何完成...

《30天自制操作系统》学习笔记——第八天

进入到第八天的内容。 第八天开始鼠标的数据的解读,函数moused-decode。首先,程序将鼠标传来的数据按三个字节一组,显示到屏幕上。为了实现这样的功能,使用了phase,来记录是第几个字节,工...

《30天自制操作系统》学习笔记——第六天

好的,第六天的笔记开始!                           如题,今天的主要内容就是分割编译与中断处理。        首先说分割编译。这是由于把所有函数都放在一个源文件里...

《30天自制操作系统》学习笔记——第十二天

好的,来进入今天的新内容吧!                                                            今天的内容是定时器。什么是定时器呢?就从功能...

《30天自制操作系统》学习笔记(六)

IDT学习心得 (一)什么是中断?     通常被定义为一个事件,该事件改变处理器执行的指令顺序。例如通过键盘输入、点击鼠标等 (二)为什么要引入中断?    ...

《30天自制操作系统》学习笔记--番外篇之Mac环境下的工具介绍

这几天又有点不务正业了,书也没看,一直在搞这个破环境,尝试各种做法,网上各种垃圾信息,浪费了很多时间,说的基本都是废话,不过还是找到了一些,赶紧写下来,不然这个过几天又忘了         首先是环境...

《30天自制操作系统》学习笔记--第16天

今天是多任务第二讲,比昨天的层次更高,更加接近实际使用的设计。         首先是任务的自动化,所谓任务就是正在执行的程序,程序成千上万,可以自己随意安装,所以,管理就不能靠人工修改代码,而要自...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:《30天自制操作系统》学习笔记--第10天
举报原因:
原因补充:

(最多只允许输入30个字)