www.Walzer.cn - Tech & Management Blog

Focus on mobile dev
本博客文章,未在标题中写明转载的, 均为原创.
所谓高手,也就是熟悉别人制定的游戏规则、并且能在规则内跳舞的人。
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

神吹胡侃之红绿灯与操作系统调度

Posted on 2006-02-05 12:19  Walzer  阅读(804)  评论(1)    收藏  举报
        昨天看了一天winsock相关的overlapped io, block, nonblock, APCs等等一堆微软整出来的名词, 早上还是晕晕的,骑车到十字路口遇到红灯, 条件反射地想: 怎么把老子给BLOCK住了.

     然后仔细一看,我不就是在一个进程里面嘛, WaitForSingleObject,等待事件就是一个signal(绿灯), 不过现在前面的临界区(路口)被其他进程(其他方向车流)占用了,所以互斥信号量对于我来说是-1,得不到时间片啊,没办法.

  环顾一下,发现并不是所有进程都会被block的嘛,只有必须共享资源的,有临界区的才会有互斥.各路向右转行驶的车流都是独占资源,就可以一路运行下去了.

      当然我们还会注意到主干道和次干道交叉路口上,前者红灯时间短绿灯时间长,而后者相反. 这个就叫优先级.

  终于绿灯了,引入一个中断;和CPU一样的,中断只是处理事情的方式,其实被block的车流还不都是polling不断查询这个事件的嘛.

  所以总的看来,一个十字路口就是一个multi-task系统,下面这些概念都有了: 进程,临界区,信号量,并发,互斥,中断,轮询,事件,时间片,阻塞,优先级,等等. 这和一个操作系统的调度作业是惊人的相似.

  发明红绿灯的人是天才,发明系统调度方法的人也是天才,只不过他们的思维方式、逻辑、处理事情的方法是一样的。

  程序是无限的,新技术新概念是无限的,但算法是有限的,思维方式是有限的,所谓万变不离其宗。把握住有限的思维方法和逻辑,以应对千变万化的技术,在我看来,这才是上智.