linux內核應用
A. linux內核探索
對待知識領域,我們總喜歡去下一個定義。操作系統是我們每天工作都要使用的東西,由於現代商業操作系統的復雜性和沒有統一的標准,若對一個操作系統下定義並不能精確的描述操作系統所屬領域。根據經驗我們可以認為操作系統就是在整個應用系統中負責最基本功能和系統管理的那部分。包括內核、設備驅動程序、啟動引導程序、命令行Shell或者GUI界面、基本文件管理工具和系統工具。
嚴格的來講linux只是操作系統內核本身,廣義上的linux則常用來指基於linux內二的完整的操作系統,它包括GUI組件和其它許多工具。
GUI其實只是操作系統的表象,內核才是操作系統內在的核心。系統的其它部分必須依靠內核所提供的服務,像管理硬體設備、分配系統資源等,內核有時候被稱為管理者或者操作系統核心。
通常一個內核由負責響應中斷的中斷服務程序,負責進程調度的CPU調度程序,負責管理進程地址空間的內存管理程序以及網路、進程間通信等系統服務共同組成的。
內核在有安全機制的操作系統中不同於普通程序,一般處於系統態(內核態),擁有受保護的內存空間和訪問硬體設備的所有許可權。這種系統狀態和被保護起來的內存空間,統稱為 內核空間 。
與內核空間相對的,用戶所執行的應用程序在用戶空間執行。用戶態的應用程序只能訪問允許它們使用的系統資源,並且只使用某些特定的系統功能,不能直接訪問硬體,也不能訪問內核劃分給其它應用程序的內存空間。
應用程序通過系統調用來和內核通信,當一個應用程序發起系統調用時,內核便代其執行。在這種情況下應用程序通過系統調用在內核空間運行,而內核被稱為運行在進程上下文中。應用程序通過系統調用進入內核空間時應用完成其工作的基本方式。
操作系統內核可分為兩大陣營:單內核和微內核。
單內核是一種較為簡單的設計,通常以單個靜態二進制文件存儲在磁碟中,整體上作為一個單獨的大過程,所有的內核服務都在這樣的一個大內核地址空間上運行。內核服務都處於內核態,並身處同一內核地址空間,之間可以幾乎無性能損耗的相互通信。
單內核具有簡單和高性能等特點。
微內核根據功能被分割成多個獨立的過程,每個過程都叫做一個伺服器。所有的伺服器都運行在各自的地址空間上(大部分處於用戶空間),只有強烈請求特權服務的伺服器才運行在特權模式下。
微內核伺服器之間不能直接調用函數通信,而是通過 消息傳遞 通信。系統採用進程間通信(IPC)機制,服務之間各自獨立,通過IPC互換消息,有效的避免了服務之間的失敗傳染。
IPC機制的開銷遠高於函數調用,而且在運行時還會牽扯到內核空間和用戶空間上下文切換,所以消息傳遞需要一些開銷。所以在內核的實際實現上大部分微內核的操作系統也會讓大部分的服務放置與內核中,這樣就可以直接調用函數,消除消息傳遞的開銷。
windows NT和Mach(Mac OS X)都是典型的微內核,不過在實際實現上,其所有服務都運行在內核空間。
linux是一個單內核,不過linux汲取了微內核的精華,並擁有模塊化設計、搶占式內核、支持內核線程以及動態裝載內核模塊等特性。
linux內核在設計時充分參考了已有的很多UNIX的內核實現,並且有一些創新方案。linux內核和傳統的UNIX系統之間存在一些顯著的差異:
本文的寫作和學習中參考了以下資料
1.《Linux Kenel Development ~ Thrid Edition 》
B. linux 內核是什麼, 本人有linux基礎
Linux內核:Linux是一種開源電腦操作系統內核。它是一個用C語言寫成,符合POSIX標準的類Unix操作系統。Linux最早是由芬蘭Linus Torvalds為嘗試在英特爾x86架構上提供自由的類Unix操作系統而開發的。該計劃開始於1991年,在計劃的早期有一些Minix 黑客提供了協助,而今天全球無數程序員正在為該計劃無償提供幫助。
Linux最早是由芬蘭人Linus Torvalds設計的。當時由於UNⅨ的商業化,Andrew Tannebaum教授開發了Minix操作系統以便於不受AT&T許可協議的約束,為教學科研提供一個操作系統。
(2)linux內核應用擴展閱讀:
Linux將標準的GNU許可協議改稱Copyleft,以便與Copyright相對照。通用的公共許可(GPL)允許用戶銷售、拷貝和改變具有Copyleft的應用程序。當然這些程序也可以是Copyright的,但是你必須允許進一步的銷售、拷貝和對其代碼進行改變,同時也必須使他人可以免費得到修改後的源代碼。事實證明,GPL對於Linux的成功起到了極大的作用。它啟動了一個十分繁榮的商用Linux階段,還為編程人員提供了一種凝聚力,誘使大家加入這個充滿了慈善精神的Linux運動。
C. linux內核與應用程序, )
你的問題可以這樣問:為什麼同樣都是「程序」(C代碼),同樣都是GCC編譯,有的成了應用程序,有的成了內核?
內核從文件的角度來看,就是一個編譯好的映像,它的格式和ELF是不同的。因為前者是在沒有文件的概念下,先運行起來,支撐操作系統的其他部分的。bootloader將內核解壓到RAM中,並且放置了一些參數,然後控制權交給內核(RAM中的可執行代碼)了。可執行程序,並不是直接放到RAM中就可以執行的,中間還得經歷一些過程,系統服務將進程的環境設置好之後(可以查一下fork做了什麼)才開始運行的。
GCC的參數很多,可以參數要求來「定製」你的可執行文件,也就是說gcc可以編譯出各種不同的目標文件。
上面是從文件組織上說的。下面的才是主要的原因。內核中的代碼是用來支撐操作系統的,和硬體相關的所有事件、進程的數據結構、內存的管理、文件系統的管理都是由內核直接完成的,由於這部分涉及到操作系統最核心的功能,最重要的數據,因此,必須有某種機制保護(軟體、硬體的),使得應用程序不能隨意的訪問內核空間的數據,否則會影響其他的應用程序(需要內核的各種支持),導致系統不穩定。
D. 通俗講解一下linux內核是干什麼的
內核麻就是和硬體打交道的,粗略的講,計算機實現什麼功能都是要靠硬體的,那麼操作硬體就需要很多驅動,那麼內核就是對下層管理協調這些驅動,對上層處理應用程序的進程,內核是操作系統的核心,其實真正的linux只有一個內核,而我們用的應該叫GNU-linux,因為他不僅提供了內核還有很多遵循GNU的應用程序
E. linux內核是什麼,有啥作用 ,
Linux是一種開源電腦操作系統內核。它是一個用C語言寫成,符合POSIX標準的類Unix操作系統。
操作系統是一個用來和硬體打交道並為用戶程序提供一個有限服務集的低級支撐軟體。一個計算機系統是一個硬體和軟體的共生體,它們互相依賴,不可分割。
計算機的硬體,含有外圍設備、處理器、內存、硬碟和其他的電子設備組成計算機的發動機。但是沒有軟體來操作和控制它,自身是不能工作的。完成這個控制工作的軟體就稱為操作系統,在Linux的術語中被稱為「內核」,也可以稱為「核心」。
Linux內核的主要模塊(或組件)分以下幾個部分:存儲管理、CPU和進程管理、文件系統、設備管理和驅動、網路通信,以及系統的初始化(引導)、系統調用等。
(5)linux內核應用擴展閱讀:
Linux內核的特性
1、可移植性
Linux是全球被最廣泛移植的操作系統內核。從掌上電腦iPad到巨型電腦IBM S/390,甚至於微軟出品的游戲機XBOX都可以看到Linux內核的蹤跡。Linux也是IBM超級計算機Blue Gene的操作系統。
2、網路支持
作為一個生產操作系統和開源軟體,Linux 是測試新協議及其增強的良好平台。Linux 支持大量網路協議,包括典型的 TCP/IP,以及高速網路的擴展(大於 1 Gigabit Ethernet [GbE] 和 10 GbE)。Linux 也可以支持諸如流控制傳輸協議(SCTP)之類的協議,它提供了很多比 TCP 更高級的特性(是傳輸層協議的接替者)。
3、動態內核
Linux 還是一個動態內核,支持動態添加或刪除軟體組件。被稱為動態可載入內核模塊,它們可以在引導時根據需要(當前特定設備需要這個模塊)或在任何時候由用戶插入。
4、系統管理程序
Linux 最新的一個增強是可以用作其他操作系統的操作系統。該系統對內核進行了修改,稱為基於內核的虛擬機(KVM)。這個修改為用戶空間啟用了一個新的介面,它可以允許其他操作系統在啟用了 KVM 的內核之上運行。除了運行 Linux 的其他實例之外, Microsoft® Windows® 也可以進行虛擬化。惟一的限制是底層處理器必須支持新的虛擬化指令。
F. 在linux操作系統內核實現里經常使用的紅黑樹
在linux操作系統內核實現里經常使用的紅黑樹如下:
二叉樹,按中序遍歷後為一遞增數組,自平衡意味著樹的高度有一個上限,對於紅黑樹,其為2log(n+1),所以時間復雜度為最差為Olog(n)。
賦予二叉搜索樹自平衡特性的方法有多種,紅黑樹通過一下4條約束實現自平衡:
Every node is either red or black.
All NIL nodes (figure 1) are considered black.
A red node does not have a red child.
Everypathfrom a given node to any of its descendant NIL nodes goes through the same number of black nodes.
其中根節點為黑色。
紅黑樹的搜索與二叉搜索樹無異,但是插入和刪除可能會違背上述四條原則。需要用到左旋右旋操作。左旋右旋上圖,可以看到左旋右旋本身不改變二叉搜索樹的特性,旋轉後必要時改變節點的顏色可消除插入或者刪除帶來的紅沖突和黑沖突,有時紅黑樹的重新平衡需要迭代進行。
紅黑樹比較適合的應用場景:
需要動態插入、刪除、查找的場景,包括但不限於:
某些資料庫的增刪改查,比如select * from xxx where 這類條件檢索。
linux內核中進程通過紅黑樹組織管理,便於快速插入、刪除、查找進程的task_struct。
linux內存中內存的管理:分配和回收。用紅黑樹組織已經分配的內存塊,當應用程序調用free釋放內存的時候,可以根據內存地址在紅黑樹中快速找到目標內存塊。
hashmap中(key,value)增、刪、改查的實現;java 8就採用了RBTree替代鏈表。
Ext3文件系統,通過紅黑樹組織目錄項。
G. linux內核,驅動,應用程三者的概念和之間的關系
首先,要理解操作系統的概念,操作系統是用戶和硬體之間的一層媒介程序。不管是Linux還是Windows或者安卓、IOS,它的主要功能有兩點:
1、有效管理硬體。
2、方便用戶操作。
其次,Linux內核是Linux系統的核心程序,主要完成任務調度、內存管理、IO設備管理等等功能,主要目的是為了應用程序提供一個穩定良好的運行環境,這是一個基礎。
再次,驅動程序是操作系統有效管理硬體的一個途徑。應用程序是方便用戶操作提供的程序,比如Shell,Linux中的bash shell以及KDE、gnome等圖形Shell都是應用程序。 你可以簡單的理解為驅動程序實現了操作系統對硬體的有效管理,應用程序實現了操作系統方便用戶操作的目的。
最後,從編程角度來看,Linux內核就是一個調用庫,應用程序通過調用Linux提供的API函數來實現操作,Linux內核通過與驅動通信實現對硬體的有效管理。具體的編程細節,需要自己在實踐編程中體會。這是一個整體的描述。
H. 什麼是linux kernel有什麼作用
Linux內核(英語:Linux kernel)是一種開源的類Unix操作系統宏內核。
工作於平板電腦、智能手機及智能手錶的Android操作系統同樣通過Linux內核提供的服務完成自身功能。
一個計算機系統是一個硬體和軟體的共生體,它們互相依賴,不可分割。計算機的硬體,含有外圍設備、處理器、內存、硬碟和其他的電子設備組成計算機的發動機。但是沒有軟體來操作和控制它,自身是不能工作的。
完成這個控制工作的軟體就稱為操作系統,在Linux的術語中被稱為「內核」,也可以稱為「核心」。Linux內核的主要模塊(或組件)分以下幾個部分:存儲管理、CPU和進程管理、文件系統、設備管理和驅動、網路通信,以及系統的初始化(引導)、系統調用等。
整個Linux操作系統家族基於該內核部署在傳統計算機平台(如個人計算機和伺服器,以Linux發行版的形式)和各種嵌入式平台,如路由器、無線接入點、專用小交換機、機頂盒、FTA接收器、智能電視、數字視頻錄像機、網路附加存儲(NAS)等。
工作於平板電腦、智能手機及智能手錶的Android操作系統同樣通過Linux內核提供的服務完成自身功能。盡管於桌面電腦的佔用率較低,基於Linux的操作系統統治了幾乎從移動設備到主機的其他全部領域。截至2017年11月,世界前500台最強的超級計算機全部使用Linux。
(8)linux內核應用擴展閱讀:
編程語言
Linux是用C語言中的GCC版(這種C語言有對標准C進行擴展)寫的,還有幾個用匯編語言(用的是GCC的"AT&T風格")寫的目標架構短段。因為要支持擴展的C語言,GCC在很長的時間里是唯一一個能正確編譯Linux的編譯器。
有許多其他的語言用在一些方面上,主要集中在內核構建過程中(這里指從源代碼創建可引導鏡像)。包括Perl、Python和多種腳本語言。有一些驅動可能是用C++、Fortran或其他語言寫的,但是這樣是強烈不建議的。
編譯器兼容性
GCC是Linux內核源代碼的預設編譯器。在2004年,Intel主張通過修改內核,以便Intel C++編譯器能正確編譯內核。在2009年,有通過修改內核2.6.22版而成功編譯的報告(並帶來平均8-9%性能增長)。
自從2010年,已經開始進行使用Clang建造Linux內核的努力,Clang是一個可作為替代的C語言編譯器;截止2014年4月12日,官方內核幾乎可以完全用Clang編譯。致力於這個目標的計劃叫做「LLVMLinux」,得名於Clang所基於的LLVM編譯器下部構造。
LLVMLinux不意圖復制Linux內核或LLVM,因此它是由最終提交給上游計劃的補丁構成的一個元計劃。使Linux內核可以用Clang編譯最大的好處是比GCC有更快的編譯速度,內核開發者可以得益於由此而來的更快的工作流程
I. 什麼是linux內核
Linux是由Linus Torvalds開發的類UNIX的操作系統,Linux主要特點是開源的,因此我們可以免費使用來當做伺服器。
Linux嚴格分為兩個含義。
1.廣泛的Linux是指Linux發行版
2.狹義的Linux是指Linux內核
Linux內核是操作系統的基礎,介於硬體和軟體之間,並且內核位於操作系統中,操作系統將在硬體和軟體之間進行調解,Linux內核是操作系統核心部分的功能。
二:內核的基本性能
1.流程管理
在Linux內核中,程序的執行狀態以進程為單位進行管理。此外,內核為每個進程准備一個名為task_stract結構的數據結構。
2.進程調度程序
可執行狀態等待哪個進程以哪個順序執行,由於基本上不可能運行比CPU數量更多的進程,因此運行過程的效率非常重要。
3.內存管理
在Linux內核中,使用物理內存和虛擬內存管理數據。通過分配對應於物理存儲器的虛擬地址,而不是實際為每個進程分配物理存儲器地址,可以使用容量遠大於實際物理存儲器容量的存儲器。它使它成為可能。此外,由於每個進程都分配了自己的虛擬地址,因此每個進程的內存空間是獨立的,並且不會違反其他進程的內存。
3.文件系統
它以文件的形式提供存儲數據的訪問方法。所有數據都以文件的形式進行管理。/ Directory(根目錄)作為頂點,內核本身作為文件和目錄的集合存在。