终于可以歇口气了。。。

4月29开始备战GSoC2013,从100多个组织中海选了8个感兴趣的。包括freeBSD、LFS、Gentoo、LTTng、Tor、Debian、Buildroot、GNU。疯狂的读各个网站上的项目说明,最终把目标锁定到GNU/Hurd。

目标项目是improve the GDB port for GNU Hurd, 对hurd一头雾水,疯狂的看hurd的文档,微内核、Mash、消息传递、exception port、GDB、gdbserver。

每天都奋战到凌晨一两点,累的跟一样,被各种英文文档轮番轰炸了三天,终于艰难的完成了申请报告,刚提交了第一个补丁,终于可以舒口气。

静候结果。

新的开始

莫名其妙的被墙了2个月。今天花了半个下午举家搬到linode,新的开始。

伟大的gfw放过我吧,我用ssh只为了开个gmail用下google!

换浏览器

世界之窗极速版用了好长一段时间,各方面都还满意。尤其是它的鼠标手势。后来听说被360收购了,也还是一直在用。昨天发现pocket扩展无法使用,其实我就是想保存这篇位操作技巧回去躺床上看。然后我就不高兴了,试了各种方法都不能保存进去。开始怨念世界之窗的各种毛病,后妈生的果然就是不能完美兼容插件。

切换到最新版的chrome,pocket工作良好。打算就永远切换到chrome了。开始四处搜罗鼠标手势解决方案。当初不用chrome就是因为没有原生支持的鼠标手势。插件总是不能完美使用,某些页面无法使用,页面加载中不能使用(好像js等待文档加载完毕才有效)、延迟巨大。哎。

鼠标手势鼠标手势,google咋就不能把这个功能做进去啊!!!!!

2小时之前萌生了自己编个原生支持鼠标手势的chrome!好吧,自己动手丰衣足食。去官网扫了几眼文档还是蛮齐全的。正要下决心动手干,不小心搜到了这个工具strokeIt,可以在任何地方使用鼠标手势,包括桌面,功能还是蛮强大的,就是配置起来很罗嗦。

自己改chrome的念头去了一半。接着搜索,发现几年前有人做了个带鼠标手势的chrome,可惜链接失效。再接着搜各种基于Chromium的定制版浏览器。找到了现在这个枫叶极速版浏览器,更新还算情况,稳健的开发中。不像世界之窗,好久没有更新了。试用了一下,基本还满意。有鼠标手势,支持pocket插件。其他方面跟世界之窗极为相似,符合我的习惯。

say goodbye to 世界之窗极速版。感谢你们给我提供了两年之久的浏览体验。

edit:换成云游了,这个最像世界之窗。而且图标也漂亮。

内容or界面?

最近花了两天以上的时间折腾界面,数十个主题挑到肺疼了。开博客的初衷是为了锻炼文字表达而不是为了学怎么做主题。到此为止了!

定个目标,每个月至少更新4篇文章,记录一个月学到的东西或者纯粹的发牢骚。

要好好写博客了,再不折腾界面了!

意外收获:设置permalink疑难杂症一例。

开启了mod_rewrite并设置了 apache AllowOverride All选项。但是permalink还是不工作。

某些人最初安装wordpress的时候没有安装在网站根目录,比如我。这时候wp会自动在根目录下建立符号链接指向正确的wp文件。此时如果不开启permalink一切都正常。如果想用permalink就手动把wp的所有文件移动到网站根目录,覆盖掉多余的符号链接即可。

内核抢占和中断

以前一直不理解什么是内核抢占,现在好像懂了。

本文尝试解释什么是内核可抢占以及可抢占和可中断的区别。

首先被中断不是被抢占,中断和抢占是两个概念。抢占必须涉及进程上下文的切换,而中断是在中断上下文。

所谓可抢占抢的是进程上下文,人人都争取上台。可中断指的是是否可以中断当前CPU而进入我的中断处理函数。

如果内核是不可抢占的(比如说2.4的内核),一旦切进内核态,只要代码不是主动释放CPU它就可以一直占着CPU。例外,虽不可抢占,但若此时发生中断,代码还是要交出CPU,但是中断返回之后,代码又能霸占CPU了,此为可中断但不可抢占。

如果内核是可抢占的(比如2.6或之后的内核),上述情况就不会发生了。内核抢占发生在以下3种情况:

1. 从中断返回内核态时,若此时可抢占,则会强制调用schedule(),尝试抢占,被中断的内核代码不一定能继续霸着CPU。

2.内核变成可抢占状态,此时也会尝试抢占。

3.内核代码主动调用schedule()。

虽然2.6的内核提供内核抢占,但是也提供关闭的手段。是否可抢占是由preemt_count变量控制(per-cpu),有锁这个计数就+1,释放锁就-1.为0才是可抢占。每当释放锁的时候都会检查是否为0,为0则尝试抢占。

 

+++++++++++++++++++分割线++++++++++++++++++++++++++++++++

关于中断

中断分为上下两个部分。是为中断上半部(top half)、下半部(bottom half)。

上半部处理紧要事情。比如:通知硬件“我知道你请求中断了,继续干活去”,然后从设备缓冲区拷贝数据到内存。

下半部处理不那么要紧的任务。比如:网卡上来的数据推进协议栈,然后推给上层应用程序。

当前的内核有三种下半部的实现方式:softirq、tasklet、working queue。

         名称

上下文

特点

概述
Softirq

中断上下文

可中断不可睡眠 速度最快。同一个Softirq可能会同时运行在多个核上,必须非常小心的处理数据同步
Tasklet

中断上下文

可中断不可睡眠 基于Softirq实现,同一类的Tasklet不会被同时运行,编程代价小
Work queue

进程上下文

可中断可睡眠

基于内核线程实现

 

 

每天记一点,进步看的见。