Abstract: 《30天自制操作系统》多任务
Keywords: 《30天自制操作系统》,Macbook,环境
多任务
今天是多任务第二讲,比昨天的层次更高,更加接近实际使用的设计。
首先是任务的自动化,所谓任务就是正在执行的程序,程序成千上万,可以自己随意安装,所以,管理就不能靠人工修改代码,而要自动管理,自动分配空间,自动注册相关设置,所以就要建立一个结构体来管理众多任务,记录当前任务的信息。
任务的休眠,有些任务需要等待数据,或者等待中断程序,等待的时候CPU等就会跟着闲着,这可不好,我们必须让CPU尽可能的处于运行状态,所以就有了任务的休眠,让一个等待的任务不再处于运行状态,而让那些高计算量的任务过来运行,而当任务休眠时,数据到来,马上唤醒任务,让他继续执行。就是这样的。
接下来就涉及到任务的优先级了,谁应该有更多的系统资源,比如你听音乐和写程序,一输入代码音乐就卡这可不好,分成1,2,3,4,5……12各种等级,我们可以音乐12级,文本编辑5级,这样优先执行音乐,音乐不会卡,文本就算卡也没办法。。自找的。。跟我们音乐大哥抢资源是抢不过滴。。。。。
其实这并不是科学的划分,如果超过12个任务,必然有同级任务存在,那到时候怎么办呢,音乐和电影抢资源,谁应该赢呢,即使这个问题解决了,优先级运行时间划分也存在问题,如果安装1级1s(假设),2级2秒。。。。10级十秒这种划分也不是很科学的,因为2级和1级只差一级,但2级运行时间是1级的一倍,而3级和2级之间也只差一级,但却只有1.5倍所以这也是个问题。。这个姑且放一下,以后再考虑。
作者解决音乐和电影的方法是把等级再分层,类似与金字塔结构,每层有不同的任务,任务永远只在顶层切换,而不会轮到下层,知道上层都运行结束,也就是顶层消灭了,才会轮到现在的顶层,之前的第二层。而如果高层来人了,当前层当前运行任务结束后,无条件切换到上层。
都是些理论,不知道现在实际种工作的操作系统是怎么弄得,查到资料了再写出来。。。谢谢观看。。。。