學習日記之核心與檔案系統之間的關係

2021-10-01 06:28:56 字數 944 閱讀 7985

這個問題的出現時源自於我在思考乙個可執行檔案是如何被作業系統知道,並且執行的呢?

比如我編譯出乙個可執行檔案test,可以在作業系統下直接執行,但是他怎麼就認識我這個可執行檔案,怎麼就知道我**在哪。

後來我學了檔案系統之後,又看了核心和作業系統,我才有一點拙見。

在檔案系統的眼中,任何的檔案都是透明的,它是不是可執行檔案,是哪種屬性的,唯讀還是可讀寫,長度,大小,偏移量,如果是可執行檔案,linux下為elf檔案,它的結構就跟普通檔案不一樣,有個頭部,後面接著資料段,堆疊段,**段,和彙編**一樣,其實就是二進位製流吧,這其中每個段的偏移,基位址,檔案系統都知道,因為你編譯出來的檔案就是在檔案系統環境下編譯出來的,如果你想讓檔案系統識別你的可執行檔案,你就得讓它知道test的所有資訊。

現在在檔案系統下,可執行檔案的各個段都知道了,就變成系統呼叫了(應該是這樣,進核心裡執行了),核心級別的操作,比如修改暫存器,修改pc指標,修改堆疊指標sp,修改狀態暫存器,雖然這些是彙編**,但c語言可以嵌入彙編的,具體怎麼從c語言轉到彙編執行我不清楚,但是如果我執行這個test,那麼test的**段肯定是要複製到cpu裡的,然後作業系統建立乙個程序,把這個程序的資訊填充為test的資訊,**和資料,然後就相當於作業系統增加了乙個程序,就是你的可執行檔案test,多程序多執行緒的概念先不談,現在就是能知道了,無論什麼檔案,你也許看不到它的檔案型別, 但檔案系統一定知道,並且知道它能幹什麼,比如可以執行啦,是個裝置檔案啦你可以操作裝置,是個鏈結檔案啦,還是個普通檔案啦,等等。

現在又有乙個問題,我從網路或者串列埠接收到乙個檔案,我存下來了,它原來是個可執行檔案,現在傳到我這裡,是個普通檔案了,我怎麼辦?

在linux下,我給他新增可執行的屬性,然後我執行它,如果它真的是個可執行檔案,那麼它的格式一定符合我檔案系統裡認識的那種格式,然後我通過我自己的格式去讀去執行它,一定可以執行,如果不是,那對不起,你不是可執行檔案,最起碼在我這檔案系統裡不算,那你就是個普通二進位製流檔案,啥也不是。

檔案系統與核心

核心是執行單元,檔案系統是儲存單元 核心以某種方式 某一檔案系統 從nand中讀取所需要的資料進行處理 處理完後再以某種方式 某一檔案系統 儲存到nand中 這句話很簡單 可我是理解了好幾天 我原來一直糾結與我在電腦螢幕上看到的各種資料夾 比如核心是存在於 usr src 下,我就一直想著是不是檔案...

核心與檔案系統的關係

核心與檔案系統的關係 技術上說linux是乙個核心。核心 指的是乙個提供硬體抽象層 磁碟及檔案系統控制 多工等功能的系統軟體。乙個核心不是一套完整的作業系統。一套基於linux核心的完整作業系統叫作linux作業系統,或是gnu linux。檔案系統是kernel的一部分。檔案系統實現了系統上儲存介...

HBase HDFS與本地檔案系統之間的關係

所謂檔案系統,是作業系統用於明確磁碟或分割槽上的檔案的方法和資料結構 即在磁碟上組織檔案的方法。也指用於儲存檔案的磁碟或分割槽,或檔案系統種類。這裡的本地檔案系統指的是作業系統層面的檔案系統,譬如linux支援的檔案系統,ext3,ext4及xfs等。我們知道hdfs的全稱是hadoop distr...