ParalleX 补充设计草稿
在上一篇设计方向讨论稿里,我们虽然讨论了大体结构化设计,但是局限于细节没有设计与说清楚操作系统的几个核心概念,首先,我们来回顾下,设计操作系统的几个关键要素。
我们设计操作系统的目的:
第一是为了让操作系统帮助我们管理硬件资源。
第二是帮助我们让操作系统帮助我们运行程序。
第三是为了让操作系统将硬件性能发挥到极致。
在这个三个前提下,我们设计操作系统,讨论操作系统的设计细节,抽象操作系统的核心概念。
进程:
这个概念是我们对于任务抽象,它动态表现为一个可执行的指令流,静态表现为一簇资源的集合。
我们再设计操作系统的时候应该仔细考虑这个概念.
Linux宏内核进程,他本身具有以上静态和动态的两种属性。模块之间嵌套较为严重,采用的是一种顺序的逻辑。
MINIX微内核采用的是基于消息传递的方式,不过这个消息是“高聚合”性质的,send 之后就阻塞了,只能等待“服务器”进程来服务完成才能继续运行。
ParalleX我们的操作系统采用的是一种灵活的消息传递方式,不会阻塞于一个函数的调用,而是在没有完成所有准备之前,整个进程阻塞。相当于是把进程为三个部分。
准备阶段,向消息队列发送消息,请求资源。
运行阶段,资源齐备的进程可以调度运行。
资源回收,主动发送消息请求资源回收。
第一阶段,任务与资源分离,发出资源请求,等待资源到位。
第二阶段,进入可调度队列,准备以某种调度算法被调度。
第三阶段,进程技术从调度队列退出,释放资源。
图.进程的三个阶段(执行簇就是可调度执行的CPU)
有意思的是,资源有上界,而任务有下界。此消彼长,应该有一个平衡点,这是最稳定的描述点此时系统性能发挥均衡但是不到极限感觉极限应该在平衡点偏向任务的那一侧,如果我们以圆环的面积来衡量多少,假设(S任务)>(S资源)。那么任务环旋转一圈,资源环就会旋转很多圈,不就像是物理内存的页交换吗?有点意思,哈哈!
暂时没考虑使用数学来刻画这个设计的合理性。详细设计有待考虑。
12-22