《30天自制操作系统》学习笔记--第10天
来源:互联网 发布:db2数据库的一些操作 编辑:程序博客网 时间:2024/05/08 02:44
内存管理和叠加处理
今天的代码比较多,对于写过程序的人来说应该还是比较容易看懂的。
首先说的内存管理,昨天说道把很多内存分成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天自制操作系统》学习笔记--第10天
- 《30天自制操作系统》学习笔记--第0天
- 《30天自制操作系统》学习笔记--第1天
- 《30天自制操作系统》学习笔记--第2天
- 《30天自制操作系统》学习笔记--第3天
- 《30天自制操作系统》学习笔记--第4天
- 《30天自制操作系统》学习笔记--第5天
- 《30天自制操作系统》学习笔记--第6天
- 《30天自制操作系统》学习笔记--第7天
- 《30天自制操作系统》学习笔记--第8天
- 《30天自制操作系统》学习笔记--第9天
- 《30天自制操作系统》学习笔记--第11天
- 《30天自制操作系统》学习笔记--第12天
- 《30天自制操作系统》学习笔记--第13天
- 《30天自制操作系统》学习笔记--第14天
- 《30天自制操作系统》学习笔记--第15天
- 《30天自制操作系统》学习笔记--第16天
- 《30天自制操作系统》学习笔记--第好多天
- 《java解惑》读书笔记2——字符串之谜
- 调试代码
- python基础(1):文件的读取、创建、追加、删除、清空
- mysql"ON DUPLICATE KEY UPDATE"语法简析
- Java排序算法之快速排序
- 《30天自制操作系统》学习笔记--第10天
- 东软实训推荐面试问题12:三分钟表现自己使我感兴趣就留下来?
- logcat命令詳解
- ExtJs4常用函数
- 设置session用memcache来存储
- 宝宝记录
- 阿哦, 恒字掉了
- MySQL中的游标
- HTML5书籍推荐