资源描述:
《计算机操作系统中的几个泛系关系》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、计算机操作系统中的几个泛系关系兰州大学刘永兵李永礼引言——操作系统的复杂性操作系统的复杂性对大家来说不言而明的,就拿源码开放的Linux操作系统内核来说,其源代码包含在大约4500个C语言和汇编语言文件中,这些文件存放在大约270个子目录中。源代码大约由200万行组成,占58M以上的空间。要弄清楚这个操作系统,一行一行的阅读这200万行代码似乎是行的同,但实际上却是行不同的一个方法,如何在短时间内抓住其中不同层次的主要关系,就显的非常必要,我尝试用泛系思想方法来快速理解和掌握其中的关系,以下的报告是我用泛系思想研究Linux一些探索。主要
2、内容1.操作系统的泛系关系2.内核数据的动静思想3.Linux文件系统的形影关系1.操作系统自身的泛系关系1.1原始社会供求关系模型1.2现代供求关系模型1.3操作系统的供求关系1.4技术实现在操作系统供求关系的技术实现上主要作两个抽象:即任务抽象和资源抽象。通过资源抽象能把计算机中的软硬件资源表示出来;通过任务抽象能把系统中计算任务表示出来。1.4.1任务抽象任务抽象就是我们通常所说的计算任务的抽象,抽象后的任务在一般教科书书中称之为进程。在系统中用进程控制块(PCB)来描述。在Linux内核中每一个进程用task_struct数据结构
3、表示。1.4.2资源抽象为了让操作系统本身知道系统中的软硬件资源,就需要把计算机中的各种软件资源在操作系统中表示出来,这就是资源抽象。例如,就拿Linux内存管理来说,Linux在管理内存时,把系统中的内存分了大小相等的块,我们称之为页,一般来说这些页的大小为4K,为了表示其中的页,Linux使用了page数据结构。1.4.3资源抽象和任务抽象之间的泛系关系资源抽象和任务抽象的泛系关系就是供求关系,也就是说操作系统的本质便是要在资源抽象和任务抽象之间建立供求关系。通过操作系统的内核沟通资源和任务,在这两者之间充当中间商。具体来说就是由操作
4、系统内核决定分配当前的哪些资源给哪些任务。2.操作系统内核数据管理控制策略的泛系思想方法——以少控多,以静制动2.1操作系统内核数据管理控制上的两难问题操作系统是一个典型的庞大复杂巨系统,就其内核而言,单数据的数量之庞大就不言而谕的。再加上其自身是一个系统,在系统运行的时候数据的数量和值还会随着系统处于不同的状态而不同,可以说是时时在变,这就给管理控制这些数据带来了很多困难。如果给这些数据分配固定的空间,当然在管理控制方面没有什么太多的问题,既然是事先分配的空间,就能直接的访问。这些数据在内核空间中也不会互相干扰,数据不会出现混乱的情况,
5、但一个严重的后果是系统缺乏了伸缩和灵活性,事先分配的空间总是有限的,当然内核数据的量超过这个要求的时候,系统就没办法正常运行,再说在内核数据量比较小的时候,会有很多事先分配的空间在这个时候没有使用上,也是一种资源的浪费。如果采用让所有的数据都动起来,即动态的分配和使用,那么在这个时候以上说的问题就迎刃而解,但这个时候出现了另外一个严重的问题,即给这些数据的管理控制带来了麻烦,要访问的数据在某个时刻究竟在什么位置,怎样保证在需要的时候能快速的找到想要访问的数据,这些问题就显得很棘手。2.2内核数据的管理控制策略显然,事先为所有的数据分配静态
6、的空间的策略是不可取的,那么我们只能使用按需要动态分配空间的策略,接下来的问题是我们如果来管理控制这些数据,能随时很方便的访问到想要访问的数据.为了能找到解决问题的办法,我们自然而然的一的泛系思想是寻找泛对称,也就是要从这千变万化的数据中寻找中不变的东西.首先,内核数据是可以分类的,例如系统中所有的进程控制块(PCB),可以认为是同属于一个类;其次,每在一类数据中寻找不变的数据,把这些数据做成静态结构,在系统初始化的过程中分配固定空间,此后,在系统运行的过程中其位置不再发生变化,而其它数据则在系统运行过程中,需要的时候分配,用完就退回系统
7、,这些随机的数据可以和这个类中静态分配的数据关联起来,在系统需要访问的时候可以通过这个类中静态的数据和它们的关联关系很容易的找到.2.3泛对称的显生过程(以树结构为例)以上树中的所有节点组成了一类数据,在树的变化过程中,有的节点消失,又有新的节点生成。而在这个千边万化的过程中,树的根节点始终没有变化,这里就存在一个泛对称,根节点便是个泛极端。极端的情况是一类中的所有数据都是动态变化的,在这个时候我们可以仍然可以用同样的方法分析。但这个时候引进泛系规的思想。可以把根节点不变的所有数据看成一类,而这个根节点就是这个类的泛极端,在对所有的泛极端
8、求共影,例如可以把它们共影到某个固定(静态)的指针变量P。2.4Linux操作系统内核数据以少控多,以静制多策略实例init_task是系统中的0号进程,也就是第一个进程,这个进程永远不会被撤