340 likes | 413 Views
计算机操作系统中的几个泛系关系. 兰州大学 刘永兵 李永礼. 引言 —— 操作系统的复杂性.
E N D
计算机操作系统中的几个泛系关系 兰州大学 刘永兵 李永礼
引言——操作系统的复杂性 • 操作系统的复杂性对大家来说不言而明的,就拿源码开放的Linux操作系统内核来说,其源代码包含在大约4500个C语言和汇编语言文件中,这些文件存放在大约270个子目录中。源代码大约由200万行组成,占58M以上的空间。要弄清楚这个操作系统,一行一行的阅读这200万行代码似乎是行的同,但实际上却是行不同的一个方法,如何在短时间内抓住其中不同层次的主要关系,就显的非常必要,我尝试用泛系思想方法来快速理解和掌握其中的关系,以下的报告是我用泛系思想研究Linux一些探索。
主要内容 1.操作系统的泛系关系 2.内核数据的动静思想 3.Linux文件系统的形影关系
1.4技术实现 • 在操作系统供求关系的技术实现上主要作两个抽象:即任务抽象和资源抽象。通过资源抽象能把计算机中的软硬件资源表示出来;通过任务抽象能把系统中计算任务表示出来。
1.4.1任务抽象 • 任务抽象就是我们通常所说的计算任务的抽象,抽象后的任务在一般教科书书中称之为进程。在系统中用进程控制块(PCB)来描述。在Linux内核中每一个进程用task_struct数据结构表示 。
1.4.2资源抽象 • 为了让操作系统本身知道系统中的软硬件资源,就需要把计算机中的各种软件资源在操作系统中表示出来,这就是资源抽象。例如,就拿Linux内存管理来说,Linux在管理内存时,把系统中的内存分了大小相等的块,我们称之为页,一般来说这些页的大小为4K,为了表示其中的页,Linux使用了page数据结构 。
1.4.3资源抽象和任务抽象之间的泛系关系 • 资源抽象和任务抽象的泛系关系就是供求关系,也就是说操作系统的本质便是要在资源抽象和任务抽象之间建立供求关系。通过操作系统的内核沟通资源和任务,在这两者之间充当中间商。具体来说就是由操作系统内核决定分配当前的哪些资源给哪些任务。
2.操作系统内核数据管理控制策略的泛系思想方法2.操作系统内核数据管理控制策略的泛系思想方法 ——以少控多,以静制动
2.1操作系统内核数据管理控制上的两难问题 • 操作系统是一个典型的庞大复杂巨系统,就其内核而言,单数据的数量之庞大就不言而谕的。再加上其自身是一个系统,在系统运行的时候数据的数量和值还会随着系统处于不同的状态而不同,可以说是时时在变,这就给管理控制这些数据带来了很多困难。
如果给这些数据分配固定的空间,当然在管理控制方面没有什么太多的问题,既然是事先分配的空间,就能直接的访问。这些数据在内核空间中也不会互相干扰,数据不会出现混乱的情况,但一个严重的后果是系统缺乏了伸缩和灵活性,事先分配的空间总是有限的,当然内核数据的量超过这个要求的时候,系统就没办法正常运行,再说在内核数据量比较小的时候,会有很多事先分配的空间在这个时候没有使用上,也是一种资源的浪费。如果给这些数据分配固定的空间,当然在管理控制方面没有什么太多的问题,既然是事先分配的空间,就能直接的访问。这些数据在内核空间中也不会互相干扰,数据不会出现混乱的情况,但一个严重的后果是系统缺乏了伸缩和灵活性,事先分配的空间总是有限的,当然内核数据的量超过这个要求的时候,系统就没办法正常运行,再说在内核数据量比较小的时候,会有很多事先分配的空间在这个时候没有使用上,也是一种资源的浪费。
如果采用让所有的数据都动起来,即动态的分配和使用,那么在这个时候以上说的问题就迎刃而解,但这个时候出现了另外一个严重的问题,即给这些数据的管理控制带来了麻烦,要访问的数据在某个时刻究竟在什么位置,怎样保证在需要的时候能快速的找到想要访问的数据,这些问题就显得很棘手。如果采用让所有的数据都动起来,即动态的分配和使用,那么在这个时候以上说的问题就迎刃而解,但这个时候出现了另外一个严重的问题,即给这些数据的管理控制带来了麻烦,要访问的数据在某个时刻究竟在什么位置,怎样保证在需要的时候能快速的找到想要访问的数据,这些问题就显得很棘手。
2.2内核数据的管理控制策略 显然,事先为所有的数据分配静态的空间的策略是不可取的,那么我们只能使用按需要动态分配空间的策略,接下来的问题是我们如果来管理控制这些数据,能随时很方便的访问到想要访问的数据.为了能找到解决问题的办法,我们自然而然的一的泛系思想是寻找泛对称,也就是要从这千变万化的数据中寻找中不变的东西.
首先,内核数据是可以分类的,例如系统中所有的进程控制块(PCB),可以认为是同属于一个类;其次,每在一类数据中寻找不变的数据,把这些数据做成静态结构,在系统初始化的过程中分配固定空间,此后,在系统运行的过程中其位置不再发生变化,而其它数据则在系统运行过程中,需要的时候分配,用完就退回系统,这些随机的数据可以和这个类中静态分配的数据关联起来,在系统需要访问的时候可以通过这个类中静态的数据和它们的关联关系很容易的找到.首先,内核数据是可以分类的,例如系统中所有的进程控制块(PCB),可以认为是同属于一个类;其次,每在一类数据中寻找不变的数据,把这些数据做成静态结构,在系统初始化的过程中分配固定空间,此后,在系统运行的过程中其位置不再发生变化,而其它数据则在系统运行过程中,需要的时候分配,用完就退回系统,这些随机的数据可以和这个类中静态分配的数据关联起来,在系统需要访问的时候可以通过这个类中静态的数据和它们的关联关系很容易的找到.
以上树中的所有节点组成了一类数据,在树的变化过程中,有的节点消失,又有新的节点生成。而在这个千边万化的过程中,树的根节点始终没有变化,这里就存在一个泛对称,根节点便是个泛极端。以上树中的所有节点组成了一类数据,在树的变化过程中,有的节点消失,又有新的节点生成。而在这个千边万化的过程中,树的根节点始终没有变化,这里就存在一个泛对称,根节点便是个泛极端。
极端的情况是一类中的所有数据都是动态变化的,在这个时候我们可以仍然可以用同样的方法分析。但这个时候引进泛系规的思想。极端的情况是一类中的所有数据都是动态变化的,在这个时候我们可以仍然可以用同样的方法分析。但这个时候引进泛系规的思想。
可以把根节点不变的所有数据看成一类,而这个根节点就是这个类的泛极端,在对所有的泛极端求共影,例如可以把它们共影到某个固定(静态)的指针变量P。可以把根节点不变的所有数据看成一类,而这个根节点就是这个类的泛极端,在对所有的泛极端求共影,例如可以把它们共影到某个固定(静态)的指针变量P。
2.4Linux操作系统内核数据以少控多,以静制多策略实例2.4Linux操作系统内核数据以少控多,以静制多策略实例
init_task是系统中的0号进程,也就是第一个进程,这个进程永远不会被撤消,它的描述符被静态的分配到内核数据段中,也就是说init_task的进程描述符是预先由编译器分配的,在运行的过程中保持不变,而其它描述符是在运行的过程中,由系统根据当前的内存状况随机分配的,撤消的时再在归还给系统。init_task是系统中的0号进程,也就是第一个进程,这个进程永远不会被撤消,它的描述符被静态的分配到内核数据段中,也就是说init_task的进程描述符是预先由编译器分配的,在运行的过程中保持不变,而其它描述符是在运行的过程中,由系统根据当前的内存状况随机分配的,撤消的时再在归还给系统。
(1)在0—4K之间存放加电自测期间检查到的硬件配置。(1)在0—4K之间存放加电自测期间检查到的硬件配置。 • (2)640K—1M之间被留作BIOS程序使用,并且映射ISA显示卡上的存储器(在早期的MS—DOS系统上有很有名的640K地址限制的说法)。 • Linux操作系统被安装在1M以后的内存空间上,在系统初始化的时候,操作系统被装了上去,同时这部分建立了固定的映射,这里我们把它看作静的,因为一但初始化结束时,这部分的映射在系统运行时不再发生变化,这部分映射有: • (1)_text—_etext之间存放内核代码。 • (2)_etext—_edata之间存放已初始化的内核数据。 • (3)_edata—_end之间存放未初始化的内核数据。 • 在这里,_text是紧挨着1M后的内存单元,_text,_etext,_edata,_end这些参数的值是在编译内核时产生的。
2.6内核数据控制策略的再次泛系哲理思考 • 动静关系是泛系思想中的一个重要基本关系,在这里,我们用少量的静态数据控制了大量的动态数据,实现了我们高效利用存储空间的目的。这就是以少控多,以静制动。
3.1形影关系的思想渊源 • x 1 2 3 4… 在人们认识和掌握代数学之前,人们做的运算都是基于个体的具体的数字,但代数学使人们理解和掌握操作一类事物。
3.2泛系的形影关系 • 集论意义的形影关系包括函数,投影,影射,反函数,赋形(投影之逆),直集,商化(转化为商集——子集的某些集合),积化(商化之逆),有时也包括缩影及其逆——扩形以及泛积,并把形影关系的复合也看成形影关系。
3.3Linux所支持的文件系统 • 有Unix家族系统(Unix System V及BSD)的文件系统;有微软公司的文件系统,如MS-DOS,VFAT(Windows 98)及NTFS(Windows NT);有ISO9660 CD-ROM文件系统(以前的High Sierra文件系统);还有其它有专利权的文件系统,如HPFS(IBM公司的OS/2),HFS(苹果公司的Macintosh),FFS(Amiga公司的快速文件系统)以及ADFS(Acorn公司的系列机)。
3.4.1Linux文件系统的形影关系 • 在Linux文件系统为了要兼容各种操作系统下的文件系统,提出了“虚拟文件系统”VFS(Virtual Filesystem Switch)的概念。为了能做到兼容各种文件系统,Linux对各种文件系统作了极其美妙的抽象,在各个操作系统的文件系统上面又做了一层,这一层就是虚拟文件系统层。
“虚拟文件系统”VFS 相当于所有Linux所支持的具体的文件系统(EXT2文件系统,MS-DOS文件系统等)的一个框架,或者说是它所支持的具体文件系统的一个抽象的表格,Linux在操作一个具体的文件系统的时候,会在这个框架或表格中填上这个具体文件系统的一些重要信息,如这个具体文件系统的有关操作,参数等。