操作系统中一些可以借鉴的解决问题的方法

来源:互联网 发布:php reflection 意义 编辑:程序博客网 时间:2024/04/30 06:26

      操作系统和一些成熟的软件产品中,有一些解决问题的方法是很值得借鉴的。我们可以使用这些解决问题的方式来解决一些我们遇到的问题,因为他们的解决方式通常都是比较成熟的。

      比如,引用计数。最开始接触这个概念是在COM中,后来发现操作系统中,也有很多使用引用计数的地方,像有的内核对象中就有一个引用计数,来决定何时删除这个内核对象。智能指针也可以用引用计数来实现,这里用一个智能指针的实现来展示一下引用计数。

      分析使用引用计数的各个场合,可以看出满足以下条件可以使用引用计数:

(1)引用计数通常用于控制对象的生命周期;

(2)有多个用户代码使用同一对象;

(3)用户代码不必关心对象何时销毁,对象根据引用计数决定何时销毁自己。

 

      再比如,操作系统用于管理内存的方法,虽然可能实现上更多是用硬件,但其设计的思路可以帮助我们设计用于软件的存储系统。我想主要说的是分页的设计方式,其中有两点可以借鉴,至少我借鉴过,当然也许以后更精细的研究可能会借鉴更多:

(1)将物理内存和虚拟内存都分成固定的大小来存放不同大小的数据。

(2)用页表来索引这些页的位置,用来读取和写入数据。

      通过以上两点,一个说明了存储的结构,一个说明了使用时存取的方式,可以设计出一个存储系统用于存放不同大小的数据。当然,为了方便管理,还可以借鉴硬盘存储系统中,将数据分为数据块,数据块组成数据簇。不过,其中可能会涉及到删除存储的对象,并在利用其存储空间的一些问题。

 

      还有一点,可能非常简单,就是在很多地方,操作系统都为一些要用到的东西分配一个ID来索引。这其实就是涉及到效率的一个考量。我曾参与的一个项目有同事设计的对象用字符串来标示,其效率就降低了。所以这一点很基本,但是却值得注意。

(待续)

原创粉丝点击