檔案管理原理簡介

來源:互聯網
上載者:User

我們知道作業系統做的最重要的幾件事就是管理CPU,記憶體,硬碟,IO裝置了啊.而檔案就是儲存在硬碟上,所有檔案管理大部分時候實際上也是研究怎麼管理硬碟.所有檔案在硬碟上儲存都是一樣的,一串0101,沒一點區別.只有我們讀取檔案中的資訊做不同的處理時才看出不一樣的東西.

檔案管理系統和資料庫管理系統

實際上兩者的基本思想差不多的.我們知道在資料庫中最常用的操作先是create table,然後去select , insert ,update, delete.假如我們沒有網路的話.我們在電腦上做的最多的操作也差不多就是建立檔案,相當於建立table,然後搜尋檔案,往檔案裡新增內容(insert),更新檔案中的內容(update),刪除檔案.可能讀取檔案資料這一塊就比較有趣一點,比如不同的檔案經過不同的應用程式做相應的處理就呈現豐富多彩的東西.比如讀取電影檔案時,播放器給你顯示出畫面,並通過音箱發出聲音來.

由於操作的檔案管理是真正與硬碟打交道,而資料庫是先通過作業系統與硬碟打交道.所以實際上資料庫上所有的操作最終還是會轉化成檔案系統的操作.當然也不完全一一對應.因為資料庫會先把很多資料載入到記憶體中,然後做些複雜的處理.然後過段時間往硬碟讀寫資料,比如要找的資料不在記憶體,或者記憶體快滿了之類的情況下啊.資料庫中的所有資訊最終是儲存在硬碟上一個個檔案.比如Oracle裡那些表中所有的內容都儲存在一個個的尾碼為DBF的檔案中,還一些記錄檔儲存在log檔案中

另外資料庫中會有非常多的許可權管理,Oracle中的許可權操作就有幾百種.作業系統也有檔案的許可權管理.只不過比較簡單沒那麼複雜,一般整個啥讀寫權限就差不多了.

實際上作業系統管理硬碟時也會把很多關於硬碟的資訊在開機啟動時先載入到記憶體.比如硬碟用了多少空間,還剩下多少空間這些資訊啊.

 

硬碟與記憶體

硬碟和記憶體都叫儲存空間.都是用來儲存東西的.只不過的製作材料有點不一樣.也有一些區別.硬碟能永久儲存,記憶體只能臨時儲存資訊.一斷就沒了.我們編程時有時會自己申請一塊在記憶體空間,然後用個指標指向那,通過指標去讀取資料.實際上在硬碟上也差不多,我們建立一個檔案或者拷貝過來一個檔案的話還相當於去申請一塊硬碟空間,記憶體空間比較小,都按位元組為單位去用,你一次可能也就申請幾個位元組,幾十個位元組就差不多了,而硬碟比較大.一般以多少K(幾KB啊)為基本單位,你一次可能申請幾十M,甚至幾個G都有可能.記憶體中的指標具體怎麼實現的可能憑我們經驗直覺貌似不容易想通.但硬碟上的指標真的就是名副其實的指標了啊,像指南針一樣看得見,摸得著,只不過比較小.而且我們一般叫它磁頭.當你把檔案儲存到硬碟上後,作業系統會給你記錄下檔案的位置.你讀取時硬碟就用磁頭給你轉到指定的地方然後讀取資料到記憶體中.硬碟上的資料只有到了記憶體中,再被應用程式處理下才是有用的資訊.

      記憶體或硬碟要申請空間那肯定得先有作業系統去管理這方面的資訊,看哪些地方還有空地方.然後給你用分配.如果沒有足夠的空間就會報錯的.而記憶體中你用完了一塊申請的記憶體就會delete掉,不然就記憶體泄露了啊.硬碟的話你也會經常刪除檔案.實際上不管是記憶體還是硬碟,你刪除並沒有直的刪了.你只是通知作業系統那塊記憶體或硬碟不需要了.系統就把它標誌為空白,並把你的引用資訊去掉,你再也查看不到它了.然後如果有其他人申請空間的話系統就可能分配給別人.別人再覆蓋裡面的資訊.但沒分配給別人之前裡面的資訊還仍然在的.這就是為什麼有所謂的磁碟還原技術.就是你把檔案刪了,連資源回收筒裡的也刪了還有可能找回來.只要你資訊所在的硬碟那一塊暫時還沒被別人覆蓋掉.當然要還原自然還會涉及到很多技術,不會簡單的拷回來就行的.具體操作原理我也不太懂.

 

IO裝置與檔案

有些作業系統把一些IO裝置也當作檔案一樣去處理,比如打字機啊.你直接往它裡面寫東西,就像往檔案裡寫一樣.寫了之後怎麼處理你不不管了.有驅動程式去處理.而輸入裝置如鍵盤,我們就把它當作一個檔案就讀資料,你敲進去的東東就被讀取到記憶體中了啊.

 

Linux與windows

我們大部分人都用windows比較多,而像linux,Unix,Apple之類的作業系統聽是偶爾聽說,沒怎麼用過.我們對自己不熟悉的的事物總是有一種神秘感.於是覺得啥Linux應該是個很神秘的東東.用起來應該很難的.實際上你想想作業系統做的事都差不多,還不就是管理CPU,記憶體,硬碟之類的.使你們更方便的用電腦.你的電腦能裝下windows也能裝上linux,當然貌似有些作業系統會存在硬體的一些謙容問題了.只不過不同的作業系統採取一些演算法和方式有點不一樣.不過其實這些都封裝起來了,我們使用者不關心.很多時候我們只關心怎麼去用.

windows流行的最重要的一個原因就是UI介面友好,易用.不過Linux等一些作業系統也同樣有圖形操作介面.其實按道理來說所有作業系統都能給你提供一樣的圖形介面,使你用起來完全感覺不到到底是用哪一種作業系統了.就跟你的電腦硬體一樣,都是封裝起來了.你用不同的硬體你會覺得不一樣嗎?你看到的只是使用者圖形介面.內部硬體和作業系統背後的原理你都不知道,一般情況也不用知道.

那為啥不把所有作業系統的介面都統一了,都整成一樣呢?這裡基本上不存在啥太多的技術原因.實現起來不困難的.主要還是商業原因.假如你Linux把介面做成跟windows一樣的了,然後拿去賣錢.人家微軟肯定跟你打官司了.另外還有就是應用程式相容的問題.因為用windows的人多,大部分開發軟體的人也是首選支援windows.人多就有錢賺嘛.很多軟體都不能運行在linux上.

作業系統只是提供一些基本的功能,提供一個支撐平台.我們大部分時候是想用各種各樣五花八門的應用軟體.所以哪種作業系統上能跑的軟體多使用者就喜歡用哪個啊.

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.