全部学习汇总:https:///GreyZhang/little_bits_of_linux
这次看一下__sleeo_on函数。按照我的初步理解,我先做了一下注释说明如下:

接下来,看看这个函数的调度。

这个函数一共有两个调用的位置,接下来逐个看一下。

两个调度的信息全都在上面了,其中的一个是可中断的睡眠,另一个是睡眠。从这里看,还是没有找到调度的源头。继续找这两个函数的调用情况。

可屏蔽中断部分,大概是有4个地方调度。大概如下:

从函数名称看是读取管道功能。

结合文件名称猜测,应该是终端处理的时候,空闲以及满负荷的时候先进入睡眠状态。需要补充说明的一个点是,state的数值是0的时候代表的是运行状态。还有一点,算是我自己的理解。那就是,为什么这里面会调度一下调度函数呢?之前已经大概分析过调度函数的功能,是要选择就绪或者运行中的具有最多执行资源的任务来执行。而这个睡眠的处理,其实是处理的当前的任务。当前运行的任务是曾经具备最多运行资源的任务,现在进入了睡眠状态,系统应该去找一个新的任务切换到运行状态。

还有一处调度室在终端的读取。看起来,这个也不是很需要做更加详细的分析。已经大概知道了这个函数的功能,等后面分析到这些文件的时候再尝试串联起来。这其中的一个关键点应该是在于传入的这个任务指针数组来自于哪里?代表的又是什么含义?等这个问题弄清楚了,这个功能的理解应该不是很麻烦。
















