欧美成人午夜免费全部完,亚洲午夜福利精品久久,а√最新版在线天堂,另类亚洲综合区图片小说区,亚洲欧美日韩精品色xxx

扣丁學堂解析Linux 系統(tǒng)結(jié)構(gòu)

2018-09-06 09:37:37 978瀏覽

隨著互聯(lián)網(wǎng)IT行業(yè)的發(fā)展,越來越多的人選擇入坑互聯(lián)網(wǎng),程序員是一個很好的選擇,但是很多沒有基礎(chǔ)的同學都會選擇先去培訓機構(gòu)培訓,今天小編先來給參加Linux培訓的同學講一下Linux系統(tǒng)結(jié)構(gòu)。



Linux系統(tǒng)一般有4個主要部分:

內(nèi)核、shell、文件系統(tǒng)和應用程序。內(nèi)核、shell和文件系統(tǒng)一起形成了基本的操作系統(tǒng)結(jié)構(gòu),它們使得用戶可以運行程序、管理文件并使用系統(tǒng)。部分層次結(jié)構(gòu)如圖1-1所示。

1、linux內(nèi)核

內(nèi)核是操作系統(tǒng)的核心,具有很多最基本功能,它負責管理系統(tǒng)的進程、內(nèi)存、設備驅(qū)動程序、文件和網(wǎng)絡系統(tǒng),決定著系統(tǒng)的性能和穩(wěn)定性。

Linux內(nèi)核由如下幾部分組成:內(nèi)存管理、進程管理、設備驅(qū)動程序、文件系統(tǒng)和網(wǎng)絡管理等。如圖:

圖1

系統(tǒng)調(diào)用接口:SCI層提供了某些機制執(zhí)行從用戶空間到內(nèi)核的函數(shù)調(diào)用。這個接口依賴于體系結(jié)構(gòu),甚至在相同的處理器家族內(nèi)也是如此。SCI實際上是一個非常有用的函數(shù)調(diào)用多路復用和多路分解服務。在./linux/kernel中您可以找到SCI的實現(xiàn),并在./linux/arch中找到依賴于體系結(jié)構(gòu)的部分。

2、內(nèi)存管理

對任何一臺計算機而言,其內(nèi)存以及其它資源都是有限的。為了讓有限的物理內(nèi)存滿足應用程序?qū)?nèi)存的大需求量,Linux采用了稱為“虛擬內(nèi)存”的內(nèi)存管理方式。Linux將內(nèi)存劃分為容易處理的“內(nèi)存頁”(對于大部分體系結(jié)構(gòu)來說都是4KB)。Linux包括了管理可用內(nèi)存的方式,以及物理和虛擬映射所使用的硬件機制。

不過內(nèi)存管理要管理的可不止4KB緩沖區(qū)。Linux提供了對4KB緩沖區(qū)的抽象,例如slab分配器。這種內(nèi)存管理模式使用4KB緩沖區(qū)為基數(shù),然后從中分配結(jié)構(gòu),并跟蹤內(nèi)存頁使用情況,比如哪些內(nèi)存頁是滿的,哪些頁面沒有完全使用,哪些頁面為空。這樣就允許該模式根據(jù)系統(tǒng)需要來動態(tài)調(diào)整內(nèi)存使用。

為了支持多個用戶使用內(nèi)存,有時會出現(xiàn)可用內(nèi)存被消耗光的情況。由于這個原因,頁面可以移出內(nèi)存并放入磁盤中。這個過程稱為交換,因為頁面會被從內(nèi)存交換到硬盤上。內(nèi)存管理的源代碼可以在./linux/mm中找到。

3、進程管理

進程實際是某特定應用程序的一個運行實體。在Linux系統(tǒng)中,能夠同時運行多個進程,Linux通過在短的時間間隔內(nèi)輪流運行這些進程而實現(xiàn)“多任務”。這一短的時間間隔稱為“時間片”,讓進程輪流運行的方法稱為“進程調(diào)度”,完成調(diào)度的程序稱為調(diào)度程序。

進程調(diào)度控制進程對CPU的訪問。當需要選擇下一個進程運行時,由調(diào)度程序選擇最值得運行的進程。可運行進程實際上是僅等待CPU資源的進程,如果某個進程在等待其它資源,則該進程是不可運行進程。Linux使用了比較簡單的基于優(yōu)先級的進程調(diào)度算法選擇新的進程。

通過多任務機制,每個進程可認為只有自己獨占計算機,從而簡化程序的編寫。每個進程有自己單獨的地址空間,并且只能由這一進程訪問,這樣,操作系統(tǒng)避免了進程之間的互相干擾以及“壞”程序?qū)ο到y(tǒng)可能造成的危害。為了完成某特定任務,有時需要綜合兩個程序的功能,例如一個程序輸出文本,而另一個程序?qū)ξ谋具M行排序。為此,操作系統(tǒng)還提供進程間的通訊機制來幫助完成這樣的任務。Linux中常見的進程間通訊機制有信號、管道、共享內(nèi)存、信號量和套接字等。

內(nèi)核通過SCI提供了一個應用程序編程接口(API)來創(chuàng)建一個新進程(fork、exec或PortableOperatingSystemInterface[POSⅨ]函數(shù)),停止進程(kill、exit),并在它們之間進行通信和同步(signal或者POSⅨ機制)。

4、文件系統(tǒng)

和DOS等操作系統(tǒng)不同,Linux操作系統(tǒng)中單獨的文件系統(tǒng)并不是由驅(qū)動器號或驅(qū)動器名稱(如A:或C:等)來標識的。相反,和UNIX操作系統(tǒng)一樣,Linux操作系統(tǒng)將獨立的文件系統(tǒng)組合成了一個層次化的樹形結(jié)構(gòu),并且由一個單獨的實體代表這一文件系統(tǒng)。Linux將新的文件系統(tǒng)通過一個稱為“掛裝”或“掛上”的操作將其掛裝到某個目錄上,從而讓不同的文件系統(tǒng)結(jié)合成為一個整體。Linux操作系統(tǒng)的一個重要特點是它支持許多不同類型的文件系統(tǒng)。Linux中最普遍使用的文件系統(tǒng)是Ext2,它也是Linux土生土長的文件系統(tǒng)。但Linux也能夠支持FAT、VFAT、FAT32、MINIX等不同類型的文件系統(tǒng),從而可以方便地和其它操作系統(tǒng)交換數(shù)據(jù)。由于Linux支持許多不同的文件系統(tǒng),并且將它們組織成了一個統(tǒng)一的虛擬文件系統(tǒng).

虛擬文件系統(tǒng)(VirtualFileSystem,VFS):隱藏了各種硬件的具體細節(jié),把文件系統(tǒng)操作和不同文件系統(tǒng)的具體實現(xiàn)細節(jié)分離了開來,為所有的設備提供了統(tǒng)一的接口,VFS提供了多達數(shù)十種不同的文件系統(tǒng)。虛擬文件系統(tǒng)可以分為邏輯文件系統(tǒng)和設備驅(qū)動程序。邏輯文件系統(tǒng)指Linux所支持的文件系統(tǒng),如ext2,fat等,設備驅(qū)動程序指為每一種硬件控制器所編寫的設備驅(qū)動程序模塊。

虛擬文件系統(tǒng)(VFS)是Linux內(nèi)核中非常有用的一個方面,因為它為文件系統(tǒng)提供了一個通用的接口抽象。VFS在SCI和內(nèi)核所支持的文件系統(tǒng)之間提供了一個交換層。即VFS在用戶和文件系統(tǒng)之間提供了一個交換層。

VFS在用戶和文件系統(tǒng)之間提供了一個交換層:

在VFS上面,是對諸如open、close、read和write之類的函數(shù)的一個通用API抽象。在VFS下面是文件系統(tǒng)抽象,它定義了上層函數(shù)的實現(xiàn)方式。它們是給定文件系統(tǒng)(超過50個)的插件。文件系統(tǒng)的源代碼可以在./linux/fs中找到。

文件系統(tǒng)層之下是緩沖區(qū)緩存,它為文件系統(tǒng)層提供了一個通用函數(shù)集(與具體文件系統(tǒng)無關(guān))。這個緩存層通過將數(shù)據(jù)保留一段時間(或者隨即預先讀取數(shù)據(jù)以便在需要是就可用)優(yōu)化了對物理設備的訪問。緩沖區(qū)緩存之下是設備驅(qū)動程序,它實現(xiàn)了特定物理設備的接口。

因此,用戶和進程不需要知道文件所在的文件系統(tǒng)類型,而只需要象使用Ext2文件系統(tǒng)中的文件一樣使用它們。

5、設備驅(qū)動程序

設備驅(qū)動程序是Linux內(nèi)核的主要部分。和操作系統(tǒng)的其它部分類似,設備驅(qū)動程序運行在高特權(quán)級的處理器環(huán)境中,從而可以直接對硬件進行操作,但正因為如此,任何一個設備驅(qū)動程序的錯誤都可能導致操作系統(tǒng)的崩潰。設備驅(qū)動程序?qū)嶋H控制操作系統(tǒng)和硬件設備之間的交互。

設備驅(qū)動程序提供一組操作系統(tǒng)可理解的抽象接口完成和操作系統(tǒng)之間的交互,而與硬件相關(guān)的具體操作細節(jié)由設備驅(qū)動程序完成。一般而言,設備驅(qū)動程序和設備的控制芯片有關(guān),例如,如果計算機硬盤是SCSI硬盤,則需要使用SCSI驅(qū)動程序,而不是IDE驅(qū)動程序。

6.網(wǎng)絡接口(NET)

提供了對各種網(wǎng)絡標準的存取和各種網(wǎng)絡硬件的支持。網(wǎng)絡接口可分為網(wǎng)絡協(xié)議和網(wǎng)絡驅(qū)動程序。網(wǎng)絡協(xié)議部分負責實現(xiàn)每一種可能的網(wǎng)絡傳輸協(xié)議。眾所周知,TCP/IP協(xié)議是Internet的標準協(xié)議,同時也是事實上的工業(yè)標準。

Linux的網(wǎng)絡實現(xiàn)支持BSD套接字,支持全部的TCP/IP協(xié)議。Linux內(nèi)核的網(wǎng)絡部分由BSD套接字、網(wǎng)絡協(xié)議層和網(wǎng)絡設備驅(qū)動程序組成。網(wǎng)絡設備驅(qū)動程序負責與硬件設備通訊,每一種可能的硬件設備都有相應的設備驅(qū)動程序。

7.linuxshell

shell是系統(tǒng)的用戶界面,提供了用戶與內(nèi)核進行交互操作的一種接口。它接收用戶輸入的命令并把它送入內(nèi)核去執(zhí)行,是一個命令解釋器。另外,shell編程語言具有普通編程語言的很多特點,用這種編程語言編寫的shell程序與其他應用程序具有同樣的效果。

目前主要有下列版本的shell。

1.BourneShell:是貝爾實驗室開發(fā)的。

2.BASH:是GNU的BourneAgainShell,是GNU操作系統(tǒng)上默認的shell,大部分linux的發(fā)行套件使用的都是這種shell。

3.KornShell:是對BourneSHell的發(fā)展,在大部分內(nèi)容上與BourneShell兼容。

4.CShell:是SUN公司Shell的BSD版本。

8.linux文件系統(tǒng)

文件系統(tǒng)是文件存放在磁盤等存儲設備上的組織方法。Linux系統(tǒng)能支持多種目前流行的文件系統(tǒng),如EXT2、EXT3、FAT、FAT32、VFAT和ISO9660。


以上就是扣丁學堂Linux培訓小編給大家分享的文章,希望對小伙伴們有所幫助,想要了解更多關(guān)于Linux開發(fā)方面內(nèi)容的小伙伴可以登錄扣丁學堂官網(wǎng)咨詢??鄱W堂不僅有專業(yè)的Linux培訓班供大家學習,還有與時俱進的課程體系和大量的Linux在線視頻教程讓學員免費觀看學習,想要快速學習Linux開發(fā)就到由專業(yè)老師授課的扣丁學堂學習吧。扣丁學堂Linux技術(shù)交流群:422345477。

扣丁學堂微信公眾號


【關(guān)注微信公眾號獲取更多學習資料】



查看更多關(guān)于“Linux培訓資訊”的相關(guān)文章>>

標簽: Linux培訓

熱門專區(qū)

暫無熱門資訊

課程推薦

微信
微博
15311698296

全國免費咨詢熱線

郵箱:codingke@1000phone.com

官方群:148715490

北京千鋒互聯(lián)科技有限公司版權(quán)所有   北京市海淀區(qū)寶盛北里西區(qū)28號中關(guān)村智誠科創(chuàng)大廈4層
京ICP備2021002079號-2   Copyright ? 2017 - 2022
返回頂部 返回頂部