有的东西,你自己觉得自己理解了知道了记住了,可能你真的记住了,但你真的理解了吗?Put a “Why” upon everything ever you touch.
  sizeof仅仅是个运算符,但那又意味着什么呢?意味着它不是一个函数,意味着它是在编译期求值(我并不是说所有的运算符都编译期求值)的。对于这样一条语句:

1
size_t size = sizeof(int);

来说,仅仅对应着这样一条汇编指令:

1
movl	$4, -4(%ebp)

  这对于自定义类型class也是同样的。

Tags: ,.
  • 最优置换算法(OPT)
      最优置换(OPTimal replacement),顾其名,知其义,这是一种最优的算法,因为对于任一页面请求序列,其产生的缺页中断次数时最少的,但,这只是理论上的最优。其实质是:当调入新的一页而必须预先置换某个老页时,所选择的老页应是将来不再被使用,或者是在最远的将来才被访问。其最优性是容易证明的。
      但是最优页面置换算法的实现是困难的,因为它需要我们预先就知道一个进程整个运行过程中页面走向的全部情况,而这几乎时不可能的。所以,这个算法主要还是用来衡量其他算法的优劣的。
Tags: ,,.

  PIC的汇编实在诡异,有点被颠覆的感觉,原来汇编指令还可以这么来设计,原来汇编指令怎么设计都可以。最OOXX的一条指令就一个实现短转移的指令叫做BRA,意为BRAanch,看到这条指令的时候,我都诧异了,奶罩能做什么?哇塞!居然还能跳转!?奶罩居然可以无条件跳转?!Orz……另外PIC指令把单词缩写运用的淋漓尽致,譬如指令BTFSS,是一条位测试加条件跳转指令:BTFSS = Bit + Test + FileRegister + Skip + Set,用法:BTFSS R1, 0003h, 寄存器R1的第3位为1时跳过下一条指令。真是震撼!

  最后附上PIC18的中断体系硬件结构图,出自陈育斌老师的手笔:

Tags: ,.

常见处理机调度算法:

  • 先来先服务(FCFS)
  • 短作业优先调度(SJF)
  • 优先级调度
    1. 静态优先级
    2. 动态优先级
  • 高响应比优先调度
  • 时间片轮转
  • 多级队列调度算法
  • 多级反馈队列调度算法
Tags: ,.

  这里面猫腻儿还真不少。

  karmic到源里面没有以前到vim-full包了,取而代之到是vim包,但现在有很多问题,n”+yy和n”+p无法和系统”剪切板”里到内容关联了,不知道什么原因。

Update
  一切都释然了,只要意识到,>也需要进行类型提升。那么后面到-1啦-2啦之类的,都是很大很大的数了,循环根本就进不去,更别提死循环了。这样看来四、五两段程序就没有必要列出来了。其实,我是被它们的汇编代码给迷惑住了。

Tags: ,,.

  今天SB了一把。自习室被一个小公司的interviewer给占用了,回到宿舍看了一上午的英语,中午吃饭时下载了ub karmic,准备重新把系统装一下。一边刻盘,一边检查哪些东西需要备份,tar了半个多小时,得到了几个.tar.gz包和.vimrc,.bashrc以及9.10的source.list,感觉再也没什么需要保留的了。于是把光盘塞进光驱,重启,进BIOS,再启动,安装。Language, Time Zone, Keyboard Layout, Partition, Waiting, Done. 进入系统,好家伙,显卡驱动还没装,分辨率居然是正常的1280*1024。把移动硬盘插上去,cd……cd到哪里呢?Oh, god damn it! 那些备份文件压根儿就没往外拷!又shabby了,半年来的配置信息全都没了,sucker sucks, again.

Tags: .

  只占了十分之一左右!这又是为什么呢?永远也学不完的虚拟内存啊!

  呃……又SB了!const int size = 2^30;这哪里是1G啊!分明是28嘛!Orz…汇编码里面尽是28!这下好了,改成1<<30,运行了四个实例,机器就笨的像猪了:

  等程序结束了,刚开始运行着到浏览器也慢了一会儿,估计是被换到交换文件里面去了。

Tags: ,.

  方差的概念从小学就开始建立了。对于一个随机变量X\mu,\sigma^2分别表示其数学期望和方差,从中随机抽取n个样本X_1,X_2,\ldots,X_n\overline X=\sum_{i=1}^nX_i是样本均值,S^2=\frac1{n-1}\sum_{i=1}^n(X_i-\overline X )^2是样本方差。那么为什么样本方差是除以n-1而不是n呢?

  这里涉及到一个无偏估计的概念,X是随机变量,X_i,\overline X, S^2同样也是随机变量,其中\overline X,S^2是对X总体\mu,\sigma^2的一个估计,如果\overline X,S^2的期望分别等于\mu,\sigma^2的话,就说这种估计是无偏的。容易证明E(\overline X)=\mu,但是E(S^2)=E(\frac1{n-1}\sum_{i=1}^n(X_i-\overline X )^2)=\sigma^2的证明就不是那么显而易见了,下面我证明给大家看。记D(X_i),E(X_i)X_i的方差和期望。

Tags: ,.

  图示是PIC 18单片机中定时/计数器的结构图,PIC18是一种8位的单片机,但它的定时/计数器(的寄存器)却是16位的,所以为其装初值的时候就要分高低字节分别装载。于是问题就来了,由于定时计数器一般是连续工作,需要经常进行重装,如果对一个正在工作的定时计数器进行重装的话,就会产生高低字节不同步的状态,这是一种潜在的错误,尽管这种错误发生的概率很小。为了防止这种错误的发生,PIC单片机设计者采用了上图所示的双缓存结构。其中,TMR0H’和TMR0L组成了一个真正的定时计数器,而TMR0H是一个临时寄存器只有TMR0L的写信号有效时它才能被装入TMR0H’。当需要重装定时器时,首先应该将16位定时/计数的初值的高8位装入TMR0H临时寄存器,然后在向TMR0L写入低8位时由于TMR0L写信号有效,TMR0H也被同步地装入TMR0H’。这样,定时计算器就可以正确的工作,这就是硬件的双缓冲。

Tags: ,.

  独轮车,此独轮车绝非郭先生口中的”独轮王八拱”,而是杂技中经常看到的那种。它几乎就是自行的一个简化版,由于它仅有的一个轮子同时担当主动轮和导向轮,所以要想骑这种车,是要花费一番功夫的。

  火车,这个大家伙,想要挪动挪动,没火车头是万万不能的。它的主动轮全都集中在车头上,而导向,靠的是铁轨和它所有的车轮,火车司机也不再需要转动方向盘了。

  纵观各车,它们的前进,无不需要一个提供主动力的”轮子”来驱动整个车身,同时还需要一个用作导向的”轮子”以驶向预定的方向。不同种类的车的不同,在于对这两种目的的分配方法,不同的分配方法也导致了它们不同的特性和功用。独轮车轻便,但它不能像笨重的火车一样拉送货物,自行车明显是一种折中。

Tags: .