Linux如何分配页

是的,在这里记录alloc_pages相关的内容!先来看看我们怎么使用它的。alloc_pages函数族为我们分配2^n个页(准确讲是页框,即4K大小的物理内存),然后返回页描述符(描述页框状态的数据结构,struct page)。可是我们申请内存,是为了使用内存。使用内存时,寻址用的是线性地址。alloc_pages返回的描述页框数据结构实例的地址,并没有什么直接用途。我们要把页描述符描述的物理页框的物理地址转换成线性地址,才能被内核使用。为了完成这个“映射”任务,我们调用kmap函数族,最终获得了4K线性内存空间的首地址。

如何优雅地使用iPad阅读源代码

“Read the fucking source code! “
– Linus Torvalds

如何优雅地使用iPad阅读源代码?答案很简单呐!只要花50大洋买一套国人开发的CodeNavigator付费版就好了。作为代码阅读工具至少有两个handy的功能吧:语法高亮和代码跳转。CodeNavigator提供的注释功能可以写写笔记也很贴心!并且,CodeNavigator还支持git的整合(反正能想到的功能和不需要的功能人家都做好了)。作为比较,AppStrore里我所检索到的其他工具,大部分仅支持语法高亮。

高效阅读

本文是对指导员吴刚《如何持续高效阅读》悦读会内容的整理,夹杂了一些我自己简陋的理解。

阅读界里我觉得自己是个奇葩。看到书架上那一本看了我一个童年+青春期的《童年》,我才意识到自己从小到大没有看完任何一本文学名著。去中科院后被那里高知的同学用《三国演义》和《封神榜》羞辱得体无完肤,至今记忆犹新,发誓要好好研究读书的学问,好好读书,好好做事!

上下文切换时堆栈的切换

上下文切换

一般指用户上下文与内核上下文的之间切换。内核上下文又分为中断/异常上下文、系统调用上下文 —— 区别是后者可以从用户空间使用INT指令陷入(即门描述符特权级别为DPL_USER)。上下文切换就是: 1)暂停执行、2) 保护现场、3) 恢复现场、4) 恢复执行的过程。这里的现场只CPU现场,就是各个寄存器以及标志位的状态。