計算機領域中隨處可見的抽象


想要管理多種具體的東西,那么需要遵守每種東西的規范。如果想要提供一種通用模式來對這些具體的東西統一管理,需要使用一種古老的技術:抽象。

抽象是將多種具體的東西(管理時需要遵守的規范)的共同點抽取出來,放入到更高一層的抽象層。在抽象層不定義或少量定義具體的規范細則,而是讓下層更具體的東西遵守抽象出來的規則去各自實現。之后只需通過這個抽象層中的通用規范就能管理所有具體的事物(即面向對象范疇中的多態概念,事實上面向對象的本質就是抽象),並且隨時可以添加新事物到這個抽象層之下,擴展性和適應性大大增強。

所以,抽象的兩個要點:

  1. 從多個具體事物中抽取出共同點,放入抽象層
  2. 具體事物遵守抽象層的規則,各自實現細節

比如,各種類型的文件系統(ext2、xfs、fat、zfs等)的特性都不一樣,但主要功能都一樣:讀、寫。操作系統希望以一種更通用的方式去管理這些不同的文件,可以在這些文件系統的更高一層提供一個抽象文件系統,這個抽象文件系統中定義讀和寫的規范,同時要求各種具體的文件系統按照這個規范去實現讀和寫的操作。以后就可以在操作系統上使用多種文件系統,不管使用何種文件系統,都可以直接通過這個抽象的文件系統來調用。

再繼續往下,還有抽象層。文件系統可以指定讀寫功能,從何處讀寫?可以是各種類型的塊設備,比如IDE磁盤、SATA磁盤等,但是文件系統並不能和這些磁盤進行直接的交互,只有這些外圍硬件的驅動程序才能和這些硬件直接交互,那么文件系統就需要和各種塊設備的驅動交互。所以,在文件系統層和各種塊設備驅動中間,又對這些塊設備的驅動進行了抽象,提供一種抽象的塊設備層,然后要求各種塊設備的驅動按照這個抽象塊設備層的規范去編碼。以后只要文件系統和這個抽象的塊設備層交互,它就會自動調用到各種具體的塊設備驅動。

這些抽象層次,通常會命名為“通用xxx”或者“虛擬xxx”。例如,抽象文件系統層稱為虛擬文件系統VFS,抽象塊設備層稱為虛擬塊設備層或通用塊設備層(generic-inode(g-inode)或virtual inode(vnode)正是這樣出現的)。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM