开一篇博客作为Python备忘录
This world is a playground.
是的,在这里记录alloc_pages
相关的内容!先来看看我们怎么使用它的。alloc_pages
函数族为我们分配2^n个页(准确讲是页框,即4K大小的物理内存),然后返回页描述符(描述页框状态的数据结构,struct page
)。可是我们申请内存,是为了使用内存。使用内存时,寻址用的是线性地址。alloc_pages
返回的描述页框数据结构实例的地址,并没有什么直接用途。我们要把页描述符描述的物理页框的物理地址转换成线性地址,才能被内核使用。为了完成这个“映射”任务,我们调用kmap
函数族,最终获得了4K线性内存空间的首地址。
“Read the fucking source code! “
– Linus Torvalds
如何优雅地使用iPad阅读源代码?答案很简单呐!只要花50大洋买一套国人开发的CodeNavigator付费版就好了。作为代码阅读工具至少有两个handy的功能吧:语法高亮和代码跳转。CodeNavigator提供的注释功能可以写写笔记也很贴心!并且,CodeNavigator还支持git的整合(反正能想到的功能和不需要的功能人家都做好了)。作为比较,AppStrore里我所检索到的其他工具,大部分仅支持语法高亮。
一般指用户上下文与内核上下文的之间切换。内核上下文又分为中断/异常上下文、系统调用上下文 —— 区别是后者可以从用户空间使用INT
指令陷入(即门描述符特权级别为DPL_USER)。上下文切换就是: 1)暂停执行、2) 保护现场、3) 恢复现场、4) 恢复执行的过程。这里的现场只CPU现场,就是各个寄存器以及标志位的状态。