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

想要管理多種具體的東西,那麼須要遵照每種東西的規範。若是想要提供一種通用模式來對這些具體的東西統一管理,須要使用一種古老的技術:抽象。node

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

因此,抽象的兩個要點:操作系統

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

好比,各類類型的文件系統(ext二、xfs、fat、zfs等)的特性都不同,但主要功能都同樣:讀、寫。操做系統但願以一種更通用的方式去管理這些不一樣的文件,能夠在這些文件系統的更高一層提供一個抽象文件系統,這個抽象文件系統中定義讀和寫的規範,同時要求各類具體的文件系統按照這個規範去實現讀和寫的操做。之後就能夠在操做系統上使用多種文件系統,無論使用何種文件系統,均可以直接經過這個抽象的文件系統來調用。3d

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

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

相關文章
相關標籤/搜索