linux内核与用户态交互(linux内核与用户)
為什么要劃分為用戶空間和內核空間?
Linux虛擬內存的大小為2^32(在32位的x86機器上),內核將這4G字節的空間分為兩部分。
最高的1G字節(從虛地址 0xC0000000到0xFFFFFFFF)供內核使用,稱為“內核空間”。而較低的3G字節(從虛地址0x00000000到 0xBFFFFFFF),供各個進程使用,稱為“用戶空間”。因為每個進程可以通過系統調用進入內核,因此,Linux內核空間由系統內的所有進程共享。于是,從具體進程的角度來看,每個進程可以擁有4G字節的虛擬地址空間(也叫虛擬內存). 每個進程有各自的私有用戶空間(0~3G),這個空間對系統中的其他進程是不可見的。最高的1GB內核空間則為所有進程以及內核所共享。另外,進程的“用戶空間”也叫“地址空間”,在后面的敘述中,我們對這兩個術語不再區分。用戶空間不是進程共享的,而是進程隔離的。每個進程最大都可以有3GB的用戶空間。一個進程對其中一個地址的訪問,與其它進程對于同一地址的訪問絕不沖 突。比如,一個進程從其用戶空間的地址0x1234ABCD處可以讀出整數8,而另外一個進程從其用戶空間的地址0x1234ABCD處可以讀出整數 20,這取決于進程自身的邏輯。因此Linux對用戶空間與內核空間的劃分起到了一定程度上的沖突避免。
linux版本和內核版本區別?
先了解一個概念。
整個實際的Linux系統是由內核, 軟件, 工具三部分組成。
內核由早期的黑客工程師團隊開發和測試實現, 后來許多崇尚開源的工程師加入開發了軟件應用, Linux逐步完善, 功能也日益齊全和強大. 當普及程度越發廣泛的時期, 許多商業公司在內核和軟件的基礎上加入自己的系統工具方便不懂計算機的用戶也能使用linux系統, 然后打包成為一個完整的系統安裝程序方便用戶安裝和使用.
這樣的打包好的linux就稱為一個發行版本的linux, 相應的linux的內核版本就是指內核開發工程師開發和維護的內核部分的。
熟悉Linux內核后可以勝任哪些工作?
Linux內核編程主要在嵌入式產品開發領域有用武之地。當前的嵌入式產品是從過去的單片機產品發展而來的。區別在于單片機產品不具有操作系統,是單進程的。而現代嵌入式產品需要由嵌入式操作系統來支持多進程的運行。
Linux是一款公布了內核源碼的操作系統,用戶可以根據需求進行內核裁剪,所以在嵌入式領域廣受歡迎。
許多廠商都為了降低開發成本,選用了Linux內核,經過裁剪后移植到自己的嵌入式產品中去。
由于中國是制造業大國,在未來的十年中必將有大批的制造業產品需要采用嵌入式技術以提高產品的智能化水平。
所以今后Linux內核編程的開發人員在制造業領域需求很大。
目前在國內的電子行業和半導體行業需要一些Linux內核編程的開發人員。服務性行業和銀行外包的IT公司沒有這種需求。
linux內核由哪幾部分組成,簡述各部分作用?
一個完整的Linux內核一般由5部分組成,它們分別是內存管理、進程管理、進程間通信、虛擬文件系統和網絡接口。
1、內存管理
內存管理主要完成的是如何合理有效地管理整個系統的物理內存,同時快速響應內核各個子系統對內存分配的請求。
Linux內存管理支持虛擬內存,而多余出的這部分內存就是通過磁盤申請得到的,平時系統只把當前運行的程序塊保留在內存中,其他程序塊則保留在磁盤中。在內存緊缺時,內存管理負責在磁盤和內存間交換程序塊。
2、進程管理
進程管理主要控制系統進程對CPU的訪問。當需要某個進程運行時,由進程調度器根據基于優先級的調度算法啟動新的進程。:Linux支持多任務運行,那么如何在一個單CPU上支持多任務呢?這個工作就是由進程調度管理來實現的。
3、進程間通信
進程間通信主要用于控制不同進程之間在用戶空間的同步、數據共享和交換。由于不用的用戶進程擁有不同的進程空間,因此進程間的通信要借助于內核的中轉來實現。
一般情況下,當一個進程等待硬件操作完成時,會被掛起。當硬件操作完成,進程被恢復執行,而協調這個過程的就是進程間的通信機制。
4、虛擬文件系統
Linux內核中的虛擬文件系統用一個通用的文件模型表示了各種不同的文件系統,這個文件模型屏蔽了很多具體文件系統的差異,使Linux內核支持很多不同的文件系統。
5、網絡接口
網絡接口提供了對各種網絡標準的實現和各種網絡硬件的支持。網絡接口一般分為網絡協議和網絡驅動程序。網絡協議部分負責實現每一種可能的網絡傳輸協議。
總結
以上是生活随笔為你收集整理的linux内核与用户态交互(linux内核与用户)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: os引导程序boot从扇区拷贝os加载程
- 下一篇: 域名怎么停用(如何停用域名)