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

原创 2013年12月05日 19:00:41

        昨天一直在搭建环境,想在mac下实现书上制作镜像和编译连接相关文件的功能,无奈,弄了一天还是不太好用,看到另外一个微博上的童鞋用Linux完成了相关操作,想试一下,但os x上没有objcopy等命令,而且gcc好像也是改版的,而且现在被我折腾的连命令行下使用command line tools 都有问题,所以,我还是回来把笔记补上。一会儿再去弄,争取放假之前能把环境搞定,这样寒假就可以专心研制自己的系统了,而不用把时间花到细枝末节上。

       昨天的内容讲的是计时器,我一开始没觉得定时器有啥功能,无非是弄个钟表出来,后来我看到了超时(timeout)恍然觉得这个东西很主要,作者并没有直接说去定时器在以后的实现中有什么作用,但是一直对中断处理程序进行优化可以看出,这个东西以后要被不停地使用,而且作者提出定时器后,马上有多弄了几个,而且最多能实现500个定时器,第十二天的主要工作就是优化处理速度,因为中断处理时所有的中断信号都被屏蔽了,所以必须快速的处理,恢复中断响应。

       下面的图是作者最开始的设计:


其中条状的是定时器的执行时间,横坐标是时间,纵坐标是各定时器,不论有多少个定时器,都要循环500次(也就是最多个的情况),所以这对要求效率的工作并不是个好主意,于是开始优化。

        首先可以将定时器排队,就像我们有两场球赛在不同的频道,一个十分钟后在c1频道,一个二十分钟后在c2频道,我们只要盯着那个十分钟后开始的c1频道就可以了,你可以每两分钟过来看一下,如果c1开始了,我们才会去关注c2是否开始(寝室有一哥们能同时看三场球。。。。)也就是说c1不发生,理论上来说c2绝不会发生,所以就优化出了下图:


       上图横轴是时间,没有纵轴,每个小格子就是不同的定时器之间的间隔,每个定时器都是从头开始到对应的线,也就是把所有定时器从小到大排列起来,然后弄到一根轴上,这样就可以只监视下一个要超时的定时器就可以了。

       而上图还是要监视500个,于是下一步的优化就是记录当前计时器的个数,减少循环,之前还有一步就是尽量减少循环中的计算,包括比较(if语句)尽量减少少数情况的判断,提高速度。

        涉及到的主要问题就是速度优化,下面列举一些常用到的比较简单的循环体的优化方式:

1:将在循环里面多次计算,但是结果不会改变的计算,移到循环外面去。

2:减少函数调用

3:减少内存访问

4:减少对少数特殊情况的测试


       目前就这些,以后用到定时器会继续说。。

      

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

相关文章推荐

30天自制操作系统之第12天 定时器(1)

定时器的中断处理程序要保证高效率,需要进行一些优化,这里介绍优化的方法。对于一个操作系统来说,会有多个定时器,假设该操作系统维护了500个定时器,当每一次定时中断发生时(这里我们设定1秒发生100次中...

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

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

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

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

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

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

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

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

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

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

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

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

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

哎呀,说来惭愧,差不多有一个月没有写学习笔记了。倒也不是因为懒散了,前段时间深感在《微机》课上学的那点汇编语言不够,于是买了王爽老师的《汇编语言》,花了二十多天,学了一遍,耽搁了二十多天,再加上过年,...

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

今天的内容是内存管理。         对于一个系统来说,资源是最重要的,管理资源应该说就像计划你口袋里面的钱怎么花一样(不太准确。。但是重要性是相似的)。          首先是检查内存大小,BI...

《30天自制操作系统》学习笔记--Mac下工具的使用

现在来介绍官网上下的工具怎么用首先是官网地址,书上有个注释上有:hrb.osask.jp 翻译成中文大概是这个样子滴。 上面有两个文件可以下载,一个是工具,一个是工具的源代码,很好的学习资料 下面...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:《30天自制操作系统》学习笔记--第12天
举报原因:
原因补充:

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