DMA设备驱动的常见问题

| *nix and Win32 Kernel | #DMA | #driver

DMA (Direct Memory Access) 是一种提高计算机系统并发能力的技术。简单地说,它允许外围设备以异步方式操作内存,从而减少了CPU在I/O操作中的参与。

目前的微机和PC服务器都广泛采用了 DMA 技术。由于 DMA 是一种异步操作,因此在撰写驱动时,有很多需要注意的问题。

阅读全文…( 本文约 895 字,阅读大致需要 2 分钟 )

为什么重复free()比内存泄漏危害更大

| Security | #FreeBSD | #malloc | #security

C程序设计中,内存操作相关的错误可以说是最常见,同时也是非常隐蔽的一类错误。这类错误往往导致程序莫名其妙地崩溃、耗尽系统资源,或是形成严重的安全弱点。

阅读全文…( 本文约 1142 字,阅读大致需要 3 分钟 )

NULL指针引用和内核bug的利用

| Security

总算是发公告了,可以说具体的事情了。

FreeBSD昨天发布了2项安全公告和1项Errata Notice:SA-09:13.pipeSA-09:14.devfsEN-09:05.null。两个安全公告修正的是同一类问题,也就是我们常说的多线程程序中的竞态条件(Race Condition);EN-09:05.null则是增加了一个使这类问题不再那么容易被利用达到特权提升目的的功能,但默认并不启用。

阅读全文…( 本文约 1197 字,阅读大致需要 3 分钟 )

主旋律影片飞屋环游记

| Others

不知道为什么我总是觉得PIXAR的电影都是主旋律电影,或者说很大程度上都在宣传美国的价值观。

电影开头的部分其实是一段悲剧—-老人和妻子从幼年相识直到暮年,希望通过存钱来完成他们周游南美洲的梦想,但因为一次次意外而不得不放弃,到最后老太太快要去世的时候,老爷子用他们童年时候一样的蓝色气球—-老人后来成了一个钉子户,因为房子是他和妻子一生的回忆。

阅读全文…( 本文约 356 字,阅读大致需要 1 分钟 )

设计与艺术的区别

| Shared Chaos | #art | #design

蛇头GG发来的一篇文章,值得一读:The Difference Between Art and Design。摘录一下标题:

参与评论

一部分应用层协议放进kernel?

| *nix and Win32 Kernel

先把想法记下来。

解决的问题:

阅读全文…( 本文约 277 字,阅读大致需要 1 分钟 )

另外一种DSR结构

| *nix and Win32 Kernel | #DSR | #routing

dawnh在之前的人肉traceback中提到了 另一种DSR结构。即:

(此VLAN划分是出于性能方面的考虑,不划分VLAN并不会导致整个系统不能用)。

阅读全文…( 本文约 705 字,阅读大致需要 2 分钟 )

改一行代码带来的性能改进

FreeBSD先前的vesa framebuffer驱动有个问题,就是滚屏的时候会比较慢。jkim大长辈于是改了一行代码

好吧,我承认我之前一直以为是console驱动想要锁&Giant的问题。其实真正的原因是默认的pmap_mapdev并不做写合并,所以应该呼叫更低阶的pmap_mapdev_attr并传入PAT_WRITE_COMBINING参数。

阅读全文…( 本文约 230 字,阅读大致需要 1 分钟 )

解释一下DSR结构中服务器IP地址的配置

| *nix and Win32 Kernel | #routing

因为有人在我前一篇blog《使用DSR模式实现单IP服务冗余》里提了个问题,这里解释一下。

DSR比较常见的两种配置,一种是我之前文章中提到的禁止外网网卡ARP的方法,另一种是把虚拟IP绑定到lo0上。这两种方法各自有一些优缺点。一般来说,我喜欢用前一种方法。

阅读全文…( 本文约 884 字,阅读大致需要 2 分钟 )

概率趣题

| Shared Chaos | #条件概率

今天在 Matrix67 的 blog 上看到这么一道题:

一个人有两个小孩儿,其中有一个生于星期二的男孩儿。问另一个是男孩儿的概率是多少?

答案当然不是1/2或者1/4,因为我们已经知道了有一个是生于星期二的男孩,因此这是一个条件概率问题。

阅读全文…( 本文约 583 字,阅读大致需要 2 分钟 )