linux分層
Ⅰ linux網路協議是什麼該如何去理解
Linux網路協議棧基於分層的設計思想,總共分為四層,從下往上依次是:物理層,鏈路層,網路層,應用層。 Linux網路協議棧其實是源於BSD的協議棧,它向上以及向下的介面以及協議棧本身的軟體分層組織的非常好。 Linux的協議棧基於分層的設計思想,總共分為四層,從下往上依次是:物理層,鏈路層,網路層,應用層。 物理層主要提供各種連接的物理設備,如各種網卡,串口卡等; 鏈路層主要指的是提供對物理層進行訪問的各種介面卡的驅動程序,如網卡驅動等; 網路層的作用是負責將網路數據包傳輸到正確的位置,最重要的網路層協議當然就是IP協議了,其實網路層還有其他的協議如ICMP,ARP,RARP等,只不過不像IP那樣被多數人所熟悉; 傳輸層的作用主要是提供端到端,說白一點就是提供應用程序之間的通信,傳輸層最著名的協議非TCP與UDP協議末屬了; 應用層,顧名思義,當然就是由應用程序提供的,用來對傳輸數據進行語義解釋的「人機界面」層了,比如HTTP,SMTP,FTP等等,其實應用層還不是人們最終所看到的那一層,最上面的一層應該是「解釋層」,負責將數據以各種不同的表項形式最終呈獻到人們眼前。 Linux網路核心架構Linux的網路架構從上往下可以分為三層,分別是: 用戶空間的應用層。 內核空間的網路協議棧層。 物理硬體層。 其中最重要最核心的當然是內核空間的協議棧層了。 Linux網路協議棧結構Linux的整個網路協議棧都構建與Linux Kernel中,整個棧也是嚴格按照分層的思想來設計的,整個棧共分為五層,分別是 : 1,系統調用介面層,實質是一個面向用戶空間應用程序的介面調用庫,向用戶空間應用程序提供使用網路服務的介面。 2,協議無關的介面層,就是SOCKET層,這一層的目的是屏蔽底層的不同協議(更准確的來說主要是TCP與UDP,當然還包括RAW IP, SCTP等),以便與系統調用層之間的介面可以簡單,統一。簡單的說,不管我們應用層使用什麼協議,都要通過系統調用介面來建立一個SOCKET,這個SOCKET其實是一個巨大的sock結構,它和下面一層的網路協議層聯系起來,屏蔽了不同的網路協議的不同,只吧數據部分呈獻給應用層(通過系統調用介面來呈獻)。 3,網路協議實現層,毫無疑問,這是整個協議棧的核心。這一層主要實現各種網路協議,最主要的當然是IP,ICMP,ARP,RARP,TCP,UDP等。這一層包含了很多設計的技巧與演算法,相當的不錯。 4,與具體設備無關的驅動介面層,這一層的目的主要是為了統一不同的介面卡的驅動程序與網路協議層的介面,它將各種不同的驅動程序的功能統一抽象為幾個特殊的動作,如open,close,init等,這一層可以屏蔽底層不同的驅動程序。 5,驅動程序層,這一層的目的就很簡單了,就是建立與硬體的介面層。 可以看到,Linux網路協議棧是一個嚴格分層的結構,其中的每一層都執行相對獨立的功能,結構非常清晰。 其中的兩個「無關」層的設計非常棒,通過這兩個「無關」層,其協議棧可以非常輕松的進行擴展。在我們自己的軟體設計中,可以吸收這種設計方法。
Ⅱ linux系統的目錄結構是分層的樹狀結構,都是掛載在根文件系統什麼下面
選B唯一的,這是數的特性
Ⅲ 一個linux系統分多少內核模塊
Linux 僅僅是內核。Linux 操作系統一般指的是 Linux 內核 + 其他軟體。
所以內核模塊,不用說了,就是 Linux 內核的可重載模塊。模塊化設計什麼意思不用說了。
Linux 源代碼要特指,一般說 Linux 源代碼應該是說 Linux 內核源代碼。也就是內核的最核心代碼+外圍模塊的源代碼。(注意模塊是可以獨立開發,獨立存在的。但內核模塊必須被內核載入後才能工作。)
所以一個 Linux 系統是沒辦法分多少內核模塊的,內核模塊是可以變的。
內核模塊既可以隨時用隨載入,不用了就卸載,也可以直接就放到內核中(也就是直接編譯到內核裡面)。可以說內核模塊主要就是驅動,驅動是運行在內核層面的程序。不同的計算機需要不同的驅動,不同的 Linux 內核版本,自帶的驅動也是有很大區別的。
Linux 系統是由各種各樣的「軟體包」(或者叫組件)組成的,而不是內核模塊組成的。因為 Linux 系統是 Linux 內核 + 其他軟體。內核模塊只是 Linux 內核部分的東西。其他軟體包括各種函數庫,各種應用程序,還有用戶界面介面等等。
如果《操作系統原理》明白了,Linux 還是很好理解的。
如果只用 Windows ,是不能理解系統分層的,因為你用 Windows ,只見過他的 GUI ,而沒見過其他的部分。比如 Windows 的 NT 內核是什麼東東,DirectX 11 算什麼,IE 是什麼層級。
Ⅳ linux下用vi編程怎麼能看著分層明顯
養成好的寫代碼習慣,使用空格代替tab(不同編輯器tab鍵代表的空格數不同)
Ⅳ 有誰可以提供一些Linux系統概述的資料,要快,非常感謝。
Linux概述
1.1 什麼是linux?
最節儉地說,linux是一個操作系統。它使得計算機上的軟體和硬體之間協調工作,就好像Microsoft Windows(MS windows,微軟的windows系統)系列操作系統(MS Windows和linux之間又有著巨大的差別。不僅差別巨大,甚至互相對立,互相攻擊。緣何對立?緣何攻擊?盡在本章中。)。至於linux具體特性,很難用一句或者一段話來表述清楚。但可以有一個大概了解:linux是一個多任務的多用戶的多平台的在保護模式下的遵守POSIX標準的遵守SYSV和BSD擴展的遵守GPL許可的32位(也有64位)的類UNIX的開放源代碼的免費操作系統。這句話基本上涵概了當今linux最流行最重要最主要的特性。可能讀者對以上的一些名詞雲里霧里,不知所雲,簡單介紹:
1.多任務
計算機在同一時刻運行多個應用程序的能力。
2.多用戶
計算機在同一時刻被多個用戶訪問的能力。如網路上的伺服器必須是多用戶的。因為網路上的伺服器需要能夠同時接受多個用戶的同時訪問。除了linux系統,比較熟悉的Win2000也是多用戶的操作系統。多用戶操作系統最主要的特點是:同一時刻不同的用戶訪問。例:一台windows98機器,雖然可以有好幾個不同的帳號,但不能同時訪問,所以它並不是多用戶的。
3.多平台
可以在不同種類的CPU下工作。不要以為世界上就只有intel ,AMD這樣的兼容CPU,還有很多種類的CPU。如:Alpha、Sparc。
4.保護模式
在linux下應用軟體無法訪問系統分配的內存以外的內存區域。如此,一個軟體的錯誤不會造成整個系統的癱瘓。有些人沒事在那裡叫囂:linux理論上永遠也不會死機,就是這個原因。(但事實上還是會死的)
5.POSIX
POSIX表示可移植操作系統介面(Portable Operating System Interface ,縮寫為 POSIX 是為了讀音更像UNIX)。電氣和電子工程師協會(Institute of Electrical and Electronics Engineers,IEEE) 最初開發 POSIX 標准,是為了提高 UNIX 環境下應用程序的可移植性。然而,POSIX 並不局限於 UNIX。 許多其它的操作系統,例如 WinNT,都支持 POSIX 標准,尤其是 POSIX.1。POSIX.1 提供了源代碼級別的C 語言應用編程介面(API)給操作系統的服務程序,例如讀寫文件。POSIX.1 已經被國際標准化組織(International Standards Organization,ISO)所接受,被命名為 ISO/IEC 9945-1:1990 標准。
6.SYSV和BSD擴展
可以理解為和SYSV和BSD源代碼級的兼容。簡單一點,就是Linux下的應用程序同時也能在這兩個系統上運行。SYSV和BSD也是兩個操作系統,不知道這兩個系統是什麼?那就往下看。
7.GPL(General Public License)
公用許可證,下文會有詳解。
1.2發音問題
1.2.1 linux的發音
linux發音是五花八門版本頗多,就筆者見到和聽到的不下10種。對這種情況,據說,linux的創始人Linus(Linus Torvalds)針對讀音分歧較多的情況,特意錄了一段他對Linux的發音。這段錄音的內容是這樣的:「Hello,this is Linus Torvalds and I pronounce Linux as Linux」。我聽出來的是/'li:nэks/,綜合網上和linus自己的讀音,概括出幾個自認為最合適也最通用的讀法:/Li'nQks/(「里那克斯」)或/'li:nэks/(「里呢克斯」)或/Li'nu:ks?/(「里紐克斯」)。這幾個應該是誰都聽得懂的。至於哪個比較正宗,當然是linus的原音。但事實上似乎使用linus那種讀發的人並不在多數。
提示:上面的這段錄音可以在RedHat中調試音效卡的時候可以聽到,如果你的音效卡調試成功,系統會播放上面一段聲音以示成功。
1.2.2 Linus Torvalds的發音
我們還應該了解一下其作者名子的發音。畢竟是一個人的名子,沒人敢隨便念。基本上比較統一。在英語中,Linus Torvalds(/li'nus 'tRwR:z/)中文就是「李紐斯·托沃茲」,也有翻成「李納斯·托沃茲」的。但是你有機會聽上面提到的那段錄音,可以發現他念的是「李紐斯·托沃茲」。一般我們稱他為linus先生,也就是「李牛死」。
2、體系結構概述
按照Garlan和Shaw提出的Linux操作系統分層方法:Linux操作系統分為4層次,即四個子系統,分別是用戶進程、系統調用介面、Linux內核、硬體控制器。下面簡單介紹一下這四個組成部分。
用戶進程:用戶應用程序是運行在Linux操作系統最高層的一個龐大的軟體及核。當一個用戶程序在操作系統之上運行時,它就是操作系統的一個進程。計算機不同,程序的集合大小會有所變化。
系統調用介面:為了在應用程序中實現特定的任務,可以通過系統調用來調用操作系統內核中特定的過程,以實現特定的服務。一般認為,這些調用和服務業時操作系統的一部分,內和編程介面也屬於這一部分。系統調用本身也是由若干條指令組成的,但與一般過程不同的是:系統調用運行在內核模式,而一般的進程運行在用戶模式。
Linux內核:內核式操作系統的靈魂,包括內核抽象核對硬體資源(如cpu)的間接訪問,它負責管理磁碟上的文件、內存,負責啟動系統並運行程序,負責從網路上接收和發送數據包等等
硬體:這個子系統包括了Linux安裝時需要的所有可能的物理設備。
3、Linux內核
從程序員的角度來講,操作系統的內核提供了一個虛擬的機器介面。它抽象了許多硬體細節,程序可以以某種統一的方式來進行數據管理,而內核將所有的硬體抽象成統一的虛擬借口。
Linux以統一的方式支持多任務,而這種方式對用戶進程是透明的,每一個進程運行起來就好像只有它一個進程在計算機上運行一樣,獨占內存和其他的硬體資源。實際上內核在並發的運行幾個進程。並且能夠讓幾個進程公平合理地使用硬體資源,也能使各個進程之間互不幹擾安全的運行。讀到這里你就明白了為什麼linux不會象windows那樣常死機、藍屏。linux如果使用圖形界面可能會發現計算機好像死機了,其實沒有死,而是某個進程死了,可能就是你的kde,gnome.殺死這個進程就可以了不必reset.
Linux內核也要完成一般操作系統必須完成的任務:
對文件系統的讀寫進行管理,把對文件系統的操作映射成對磁碟或者其他塊設備的操作,Linux系統把所有的設備對定義為文件了,哈哈,這可與windows不同。
管理程序的運行,為程序分配資源,並且處理程序之間的通訊。
管理存儲器,為程序分配內存,並且管理虛擬內存
管理輸入輸出,將設備映射成文件。
管理網路:有「網路之子」之稱的Linux,對網路的管理可是她的強項。使用Linux你就會感受到它的網路功能的強大,可以使用Linux模擬強大的Csico高級路由器,那種感覺真實太棒了,只要幾百塊錢買一台486的計算機哦,就可以在上面自己構造強大功能的路由器,是不是動心了,哈哈,不過軟體實現的路由器性能肯定比不上硬體路由器。
內核必須包含虛擬文件系統(VFS)管理程序以及各種具體文件系統映射成VFS的程序。這可是Linux較有特設的一部分,這就是為什麼Linux支持的文件系統(minix文件系統、ext2/ext3文件系統、msdos/vfat/ntfs文件系統、iso9600CD-ROM的標准文件系統、hpfs OS/2用的文件系統、ufs/sysv 文件系統)很多的原因。對於內存的管理,Linux使用虛擬存儲管理方式,利用現代處理器的頁面映射能力,在x86處理器上,Linux使用4GB的地址空間,操作系統處理利用物理存儲器外還支持將硬碟空間映射成虛擬內存。所有的存儲器(物理內存和虛擬內存)被分成大小相等的頁面,系統通過給出頁號和頁面內偏移量對某個內存地址進行訪問。物理內存緊張的時候,操作系統把某些沒有使用的頁面從內存移動到硬碟上以便騰出空閑的頁面供程序使用,這個過程叫做交換(SWAP).Linux使用交換分區來處理交換需要的虛擬存儲空間,在硬碟上開設一個獨立的分區專門用於映射虛擬內存,交換分區可以有多個,之所以這樣是因為早期的Linux核心要求每一個交換分區不能超過128MB.對於較重負荷的伺服器,交換內存用到256MB甚至更多都是很正常的事情,因此那時的系統經常有多個交換分區。目前這個限制已經去除。
內核的另外一個任務是執行用戶程序,為此核心必須支持可執行格式。Linux使用多種可執行文件個時,諸如elf、aout等等,這可與windows不同,沒有辦法從名字上區分一個文件到底是什麼格式,核心只關心二進制文件的具體形式。
linux內核由五個主要的子系統組成:進程調度(SCHED)、內存管理(MM)、虛擬文件系統(VFS)、網路介面(NET)、進程間通信(IPC)。進程調度處於核心位置,所有的子系統都依賴於它,因為每一個子系統都需要掛起或者恢復進程。一般情況下,當一個進程等待硬體操作完成時,它會被掛起;當操作真正完成時,進程恢復執行。各個子系統之間的依賴關系如下:
進程調度與內存管理之間的關系:這兩個子系統互相依賴。在多道程序環境下,程序運行必須為之創建進程,而創建進程的第一件事就是要將程序和數據裝入內存。
進程間通信與內存管理的關系:進程間通信子系統要依賴內存管理支持共享內存通信機制。這種機制尤許兩個進程除了擁有自己的私有內存外,還可存取共同的內存區域。
虛擬文件系統與網路介面之間的關系:虛擬文件系統利用網路介面支持網路文件系統(NFS),也利用內存管理支持RAMDISK設備
內存管理與虛擬文件系統之間的關系:內存管理利用虛擬文件系統支持交換,交換進程定期地由調度程序調度。
也可參照以下網址:http://ew.gqjy.net/kcgg/zczn/Win2000/200608/22649.html
Ⅵ linux如何掛載通用分層系統
硬碟已經正常安裝並啟動系統後,使用mount 掛載到想要掛載的目錄即可,例如:
mount /dev/sda2 /opt/disk
其中dev/sda2 是你的硬碟,/opt/disk是你想要掛載的目錄
掛載完成後進入/opt/disk,就可以打開你的硬碟了
去除掛載的話,使用命令 umount /opt/disk 即可,在去除掛載時,注意你當前的目錄不要在/opt/disk 目錄下,否則無法去除掛載。
Ⅶ linux 下 合成後的PDF文件是可分層編輯的,可否在加密或只讀方面做一些工作
加密文件推薦使用深度文件夾鎖。軟體操作簡單以,安全方便,永久免費!文件加密,U盤加密,移動硬碟加密。
加密文件防刪,防移,防復制等。對windows各系統有兼容性
Ⅷ linux是什麼系統
Linux 也是眾多操作系統之一,要想知道 Linux 是什麼,首先得說一說什麼是操作系統。
計算機是一台機器,它按照用戶的要求接收信息、存儲數據、處理數據,然後再將處理結果輸出(文字、圖片、音頻、視頻等)。計算機由硬體和軟體組成:
硬體是計算機賴以工作的實體,包括顯示器、鍵盤、滑鼠、硬碟、CPU、主板等;
軟體會按照用戶的要求協調整台計算機的工作,比如 Windows、Linux、Mac OS、Android等操作系統,以及 Office、QQ、迅雷、微信等應用程序。
- 操作系統(Operating System,OS)是軟體的一部分,它是硬體基礎上的第一層軟體,是硬體和其它軟體溝通的橋梁(或者說介面、中間人、中介等)。
- 操作系統會控制其他程序運行,管理系統資源,提供最基本的計算功能,如管理及配置內存、決定系統資源供需的優先次序等,同時還提供一些基本的服務程序,例如:
- 提供計算機存儲信息的結構,信息存儲在文件中,文件主要存儲在計算機的內部硬碟里,在目錄的分層結構中組織文件。文件系統為操作系統提供了組織管理數據的方式。
- 提供連接計算機的每個硬體設備的介面,設備驅動器使程序能夠寫入設備,而不需要了解執行每個硬體的細節。簡單來說,就是讓你能吃到雞蛋,但不用養一隻雞。
- 操作系統需要為用戶提供一種運行程序和訪問文件系統的方法。如常用的 Windows 圖形界面,可以理解為一種用戶與操作系統交互的方式;智能手機的 Android 或 iOS 系統,也是一種操作系統的交互方式。
- 當計算機啟動時,會自啟動許多系統服務程序,執行安裝文件系統、啟動網路服務、運行預定任務等操作。可查看Linux書籍《Linux就該這么學》了解Linux詳細知識。
1) 文件系統
2) 設備驅動程序
3) 用戶介面
4) 系統服務程序
Ⅸ Linux系統中設備驅動分層結構是怎樣的如何實現與設備無關性
特定的設備驅動程序注冊調用系統驅動框架提供的一些系統函數將驅動注冊進系統,同時填充一些函數指針,還是到網上去搜搜吧,不是一兩句話能說清楚的
Ⅹ 嵌入式linux中,kernel,vfs,文件系統是什麼關系從分層的角度看,文件系統是屬於內核嗎
vfs,文件系統都是屬於內核
根文件系統是根分區的文件系統