30天自制操作系统

叠加处理
本章作者接着解决了上文内存分配的小问题,然后又对前文鼠标移动显示问题,提出了解决方案,就是本文的重点。
本章可以简单分为两个模块:解决内存分配问题,解决多层显示的问题。
1.解决内存分配问题
上文,内存分配我们并没有对分配空间最最小的限制。因此,如果大量的小空间分配,当释放时,就会出现许多不连续的小空间。会把frees耗尽。
因此,我们这里设置最小分配单位为4KB,对要求大小进行向上取整。
这里要主要提一下的就是作者巧妙的实现了向上取整功能,速度很快。
size = (size + 0xfff) & 0xfffff000;
这种理解就相当于对十进制取整123,对10 取整,123+9,在向下取整得到130一样。
2.叠加处理
对于多个图层显示问题,我们的解决思路就是分别储存每个图层数据,然后从底层向上层依次显示,这样,就能解决多层显示的问题。
因此,为了管理多个图层数据的存储、显示。我们设置了专门对图层管理的结构体。程序中主要有updown函数和refresh函数,其中作者连续二次对refresh进行改写。
最初,refresh函数只是简单的把各个图层显示出来。
改版一:refresh只是改写了需要重绘的一小块,这样就大大提高了速度。
改版2:refresh对改版一中大多无用的判断,进行修改,这样保证只有与重绘部分相关的图层那部分需要修改,不联系的图层就不用重绘。
通过两次的修改,程序运行的速度有了很大的提高。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值