目錄電腦的組成部分硬體系統軟體系統文件系統Linux系統的目錄根文件系統說明目錄的結構分析Linux 的文件類型 電腦的組成部分 硬體系統 電腦的硬體主要是由五部分組成:控制器、運算器、存儲器、輸入設備、輸出設備。 運算器和控制器的總稱是中央處理器(CPU),指的是電腦中對信息進行高速運算處 ...
目錄
電腦的組成部分
硬體系統
電腦的硬體主要是由五部分組成:控制器、運算器、存儲器、輸入設備、輸出設備。
-
運算器和控制器的總稱是中央處理器(CPU),指的是電腦中對信息進行高速運算處理的主要部件。
-
存儲器則是用來存儲程式、數據和文件,一般是由快速的內部存儲器(容量可達數百兆位元組,甚至數G位元組)和慢速的外部存儲器(容量可達數十G或數百G以上)組成,比如電腦中的記憶體條和固態硬體就屬於存儲器。
-
輸入設備與輸出設備就是用於實現人機交互的信息轉換器,由電腦的輸入輸出控制系統負責管理外部設備與主存儲器之間的信息交換,常用的輸入設備主要有鍵盤以及滑鼠,輸出設備則是顯示器、印表機以及其他可連接到電腦上的I/O設備。
軟體系統
如果電腦只有硬體系統,那麼電腦是無法正常工作的,因為電腦是由基本的電子元件組成的,而電子元件的狀態是需要由軟體來控制的,所以電腦必須要搭載軟體系統,電腦的軟體系統與硬體系統是互相依賴的。
電腦的軟體系統一般由兩部分組成:系統軟體、應用軟體。
- 系統軟體指的是電腦中的操作系統以及硬體驅動程式等。
- 應用軟體指的是用戶可以使用的各種程式設計語言以及利用程式設計語言設計的應用程式的集合。
文件系統
電腦的系統軟體和應用軟體其實都是大量的程式和數據組成的,也就是說兩者都需要存儲在電腦的存儲器中,這些程式和數據以什麼樣的格式存儲到存儲器中就由文件系統決定。
大家可以把文件系統理解為是一種“標準”或者“格式”,只要遵循這套標準就可以正確的訪問存儲在磁碟中的數據。
當然,標準的制定則是至關重要,但是由於技術原因或者商業利益考慮,導致現在文件系統沒有辦法統一。所以目前存在多種文件系統,常見的有FAT32、NTFS、ext4......,比如電腦的本地磁碟的文件系統就是NTFS格式。
當大家有的時候發現磁碟出現某些扇區損壞導致數據丟失時,就可以對磁碟進行格式化,在格式化磁碟的時候就可以選擇指定的文件系統類型。
Linux系統也支持多種文件系統類型,可以在Linux系統根目錄的/proc目錄下查閱filesystems
電腦中搭載的Linux操作系統就屬於系統軟體,操作系統的作用是用來連接應用軟體和底層硬體,因為涉及到Linux內核的安全管理機制,所以用戶空間是沒有辦法直接訪問硬體設備的。
由上圖所示,用戶想要實現對硬體的控制,必須通過Linux內核提供的相關函數介面才行。這樣做的好處是用戶無需瞭解硬體是如何控制的,只需將對應的參數提交給內核,內核便會將控制參數傳遞給硬體設備,最終由內核控制硬體設備完成相關動作。
也正因如此,用戶需要先利用程式設計語言設計出源文件(xxx.c),然後操作系統內核需要從磁碟中訪問源文件,再通過編譯器把源文件編譯生成可執行文件,最後內核再訪問存儲在磁碟中的可執行文件,從而把控制硬體的參數讀取出來。
-
知識點回顧:.c如何變為可執行文件?
預處理(-E,生成.i文件)-> 編譯(-S,生成-.s文件)-> 彙編(-c,生成.o文件)-> 鏈接(-o,生成可執行文件)
所以訪問磁碟中的文件也是操作系統要做的工作之一。所以操作系統和文件系統可以理解為一種“合作”關係,文件系統指定了讀寫文件的標準,而操作系統會按照這套標準去完成訪問文件的動作。
Linux系統的目錄
根文件系統說明
Linux系統是離不開文件系統的,在Linux內核啟動之後首先搭載的就是根文件系統rootfs,根文件系統rootfs本質就是文件系統,只不過是Linux內核掛載的第一個文件系統。而Linux內核源碼是存儲在文件系統中,所以在linux系統啟動的過程中啟動引導程式uboot會載入內核並利用內核掛載根文件系統。
根文件系統被掛載之後,一些服務程式和一些腳本文件才可以存儲在文件系統中,其他的文件系統才可以被掛載。
根文件系統會提供一些服務:比如根文件系統會提供一個根目錄(存儲文件和目錄)、提供一個shell終端(用戶才可以輸入命令)、根文件系統會存儲應用程式。總而言之,Linux內核離開根文件系統是無法正常工作的。
Linux系統的所有程式和數據都是以“*文件*”的形式存儲在文件系統中,所有Linux 用戶和程式看到的文件、目錄、軟連接及文件保護信息等都存儲在其中。這種機制有利於用戶和操作系統的交互,這也是Linux系統一切皆文件的原因。
其實就是借鑒了Unix系統的設計風格,體現了*面向對象*的設計思想,把腳本、文檔、硬體設備等都抽象為文件對象,再通過統一的POSIX操作介面對文件進行操作,簡化了操作難度。
目錄的結構分析
在 Linux 操作系統中,所有的文件和目錄都被組織成以一個根節點“/”開始的倒置的樹狀結構。如下圖:
文件系統的最頂層是由*根目錄*開始的,*系統使用“/”來表示根目錄*,在根目錄之下的既可以是目錄(目錄就相當於 Windows 中的文件夾,但目錄並不是一個“容器”,其中包含的是目標文件的索引),也可以是文件,而每一個目錄中又可以包含(子)目錄或文件。如此反覆就可以構成一個龐大的文件系統。
使用這種樹狀、具有層次的文件結構主要目的是方便文件系統的管理和維護,想象一下,如果所有的文件都放在一個目錄下,其文件系統的管理和維護將變成一場噩夢。
同樣,為了方便觀察Linux系統的目錄結構,所以Linux內核也提供了一個shell命令:*tree*,該命令可以以樹狀結構列印出目錄的層次,當然,tree命令需要在Linux系統中提前安裝。
在shell終端中輸入命令: sudo apt-get install tree 安裝tree命令
提示:後續在編寫工程文檔“READ ME”時會用到該指令來闡述工程的架構。
Linux 的文件類型
由於程式和數據在Linux系統中都是以文件的形式存在,那不同格式的數據所對應的文件類型也各不相同,在Linux系統下可以把文件的類型分為*以下七種*:
- 普通文件(-) :存在於外部存儲器中,用於存儲普通數據。
- 目錄文件(d) :用於存放目錄項,是文件系統管理的重要文件類型。
- 管道文件(p) :一種用於進程間通信的特殊文件,也稱為命名管道FIFO。
- 套接字文件(s) :一種用於網路間通信的特殊文件。
- 鏈接文件(l) :用於間接訪問另外一個目標文件,相當於windows快捷方式。
- 字元設備文件(c) :字元設備在應用層的訪問介面。
- 塊設備文件(b) :塊設備在應用層的訪問介面。