User:Songziming/Junk
Jump to navigation
Jump to search
This page contains my junk, you may ignore it.
OS项目代码组织
OS一般不是在IDE中的,而是用Makefile这类工具进行管理,所以如何管理工程就需要动一番脑筋了。
目前我的原则是,模块化组织,头文件/源文件共存。
Printf
printf是C语言里的输出函数,在内核中如果实现一个类似功能的函数,可以极大方便调试。和printf一起的还有一组函数,它们拥有类似的用法。
在内核中实现printf输出的时候,需要注意的是缓冲区。缓冲区可以由printf函数实现,也可以由目标流实现(stdout、stderr)。对于一个printf调用,如果不执行一遍,就不知道这个字符串格式化之后的长度是多少,因此需要多长的缓冲区也是不确定的。而且,在printf中不适合经常使用动态内存。
使用双缓冲区,当缓冲区发生切换的时候,就将已满的一个缓冲区输出到目标屏幕上。关键是缓冲区的操作并不是一次一个字节的复制,而是一次复制一小段字符串。