[心得] multi-tasking的观念

楼主: zzss2003 (brotherD)   2018-11-21 11:34:46
比喻得很烂请帮忙改正~
有一个人格分裂症的少女,身体里住着6种人格。
每个人格(task)在少女的记忆里(memory)都有"各自的"记忆空间(stack),可以用来放置
上次操控该少女时的状态(cpu status register)。
如果"没有用各自"的stack来放cpu status register,会发生这种事:
A人格看影片看到一半 -> (切换成B人格) -> B: 干???我怎么在看影片? 我要去大便!
-> (切换成A人格) -> A: 咦???我怎么在大便?
这样子不行,每个人格都混在一起了,不是独立的,且也没有办法把自己的事做完。
所以当要切换成B人格的时候,A人格必须把当前状态(cpu status register)存回自己的
stack,好让B人格也把上次操作少女的状态load进少女(这样B才知道上次自己做到哪里)
,这个行为就是context switch
所以这就是为什么每个task都要有自己的stack啦~
然后OS会负责分配每个人格什么时候该出现(scheduler),以及要出现多久(time quantum)
(PS:每个task的stack中,有一个register是用来放"上次做到哪里",这样子scheduler就
可以把该register的值抓近来放在CPU的program counter中,好让每个task可以知道从哪
边开始继续往下做,其实这个register就是使用者自定义的program counter啦~)
作者: alan23273850   2018-11-22 03:07:00
这是不是该po在grad-probask板上
作者: ypyp1010 (Nigel)   2018-11-23 09:17:00
其实就是把系统主频的离散时间降频给好几个task用这样真的会比较快吗?平均分配给各个task的频率是一样的但各个task耗得时间又不同...
作者: swhss   2018-11-24 05:56:00
multi-task从task得到时脉总合上看是比不多工少,因为还要扣掉overhead。但是有多工能力,在软件写作上增加许多便利,是单工比不上的
作者: b0920075 (Void)   2018-11-26 05:45:00
其实没那么复杂,就一个人要打很多工而已
作者: ypyp1010 (Nigel)   2018-11-26 09:23:00
推楼上,本质其实都是单工,但单工是ㄧ个人在一间公司,有很多项任务要处理,multi-task就是ㄧ个人要到各个公司处理不同的事情XD

Links booklink

Contact Us: admin [ a t ] ucptt.com