Linux Kernel(核)
可以說:The linux kernel is important in that it serves as the glue between the user and the computer hardware. The kernel is the operating system.
Linux 作業系統的一個component 就是kernel(核)。 kernel 就像一座橋樑一樣, 將我們這些user 和 計算機的硬體(例如RAM, CPU, 以及其他的一些例如鍵盤滑鼠硬體資源) 聯絡起來了。
user和作業系統的kernel的關係如下所示:
我們在user space中, 或者我們有一個shell application, 想kernel 發出request, 例如列印一個message到螢幕上, 或者從鍵盤中讀取資訊等等。 kernel 收到這些請求之後, 去和Hardware 交流, 通過這樣, kernel 滿足我們的請求, 最終完成任務。
在kernel內部, 有如下的元件:
process Scheduler(程式排程器), memory managers(記憶體管理器)(注意是記憶體(RAM), 不是硬碟), I/O Scheduler(輸入輸出排程器), IPC(inter-process communications(程式之間的通訊)), Network services(網路服務), File system I/O。
process Scheduler: kernel 通過它使得CPU將時間均分為多個程式。
程式: Program that are actively running in memory(即正在執行的程式。 或者更準確的說, 程式是一個被載入到記憶體中, 並且準備執行的程式)。 程式可能執行在單個電腦上, 也可能執行在由網路連線的多個電腦中。
memory manager(記憶體管理器): kernel通過這個元件管理shell, 為不同的applications 分配記憶體空間。
I/O sheduler : kernel 利用這個元件對輸入輸出裝置進行管理。 例如鍵盤啊, 螢幕啊啥的。
IPC: IPC module 含有a set of methods for the exchange of data among multiple threads in one or more porocesss(一個或者多個程式內部的多個執行緒之間交換資料資訊的)。 例如當多個執行緒(multiple threading )同時執行的時候, 需要保持同步(synchronization).。 總體來說, IPC module 中的methods 主要分為如下幾種:
message
passing(訊息傳遞), synchronization(同步), shared
memory(共享記憶體), and remote
procedure calls
Network services(網路服務): kernel 也提供用於網路服務的介面。 這樣你就可以訪問網路了。
File system I/O(檔案系統輸入輸出): Linux的 kernel 具有一個Virtual File system(虛擬檔案系統), 正是因為有個這個虛擬檔案系統, 我們的kernel才能夠同不同格式的檔案交流(talk to) in a uniform manner。 也就是說, Linux kernel中的 Virtual File system 具有一層抽象, 這樣我們就不用為不同格式的檔案獨特的的複雜性煩惱了。 所以虛擬檔案系統對於Linux 十分的重要。 而且, 這個虛擬檔案系統talks to device driver(裝置驅動器), 然後device driver(一段程式, 即驅動程式) 再talk to Hardware(硬體).。
關於kernel的工作情況, 如下:
user (human)在user space 或者shell applications 通過向kernel傳送request(請求) 來talk to kernel。我們需要注意的是kernel工作的模式總是privileged mode, 即kernel 可以access any aspect of the computer at any time, 控制著所有的RAM, 而且可以和(talik to)與計算機以及與計算機相連的所有的硬體交流。
但是我們的在user space, 或者shell application, 均不能talk to hardware, 例如鍵盤等等。 只能通過kernel 傳送請求。 硬體通過中斷和kernel交流。
我們可以下載kernel , 網站是 www.kernel.org。
我們也可以在Linux 終端(terminal)輸入:
uname -r 指令來檢視kernel的version(版本)(單詞r 代表release version):
3是major number
2是minor number。 如果這個數字是偶數, 則表示這個版本是stable的。 如果是奇數, 表明是實驗的。 即處於development stage。 上述的版本是stable.
0表示revision number。
一旦我們獲得了kernel的source, 可以解壓縮到 /usr/src:
相關文章
- Linux kernel mapLinux
- Linux kernel 2.6.32.30Linux
- Linux Kernel File IO Syscall Kernel-Source-Code Analysis(undone)Linux
- [Linux] kernel: page allocation failureLinuxAI
- Linux kernel engineer--traceLinux
- Memory Allocation API In Linux Kernel && Linux Userspace、kmalloc vmalloc Difference、Kernel Large Section Memory AllocationAPILinux
- Unable to Find Sources for Current Linux KernelLinux
- linux kernel 2.6.11.12(轉)Linux
- Linux Boot,Kernel 和 Service 介紹Linuxboot
- Linux動態列印kernel日誌Linux
- Linux Kernel 3.10 正式釋出Linux
- Linux Kernel 3.0.50/3.2.33/3.4.17/3.6.5Linux
- Linux Kernel 3.8.8/3.4.41/3.0.74 釋出Linux
- Linux Kernel 3.4.8/3.2.27/3.0.40 釋出Linux
- Linux Kernel V2.6.15.5(轉)Linux
- 檢視linux的版本號(非linux kernel)Linux
- 【Linux】kernel.shmmax和shmall設定LinuxHMM
- Linux Kernel 5.9-rc3 釋出了Linux
- 檢視apache、linux、kernel、nginx等版本ApacheLinuxNginx
- Linux Kernel ACL訪問控制漏洞(轉)Linux
- 編譯linux kernel預裝工具list編譯Linux
- Proxmox VE 8.1 Kernel 6.5.13-5-pve ,無法支援核顯 SR-IOV 的問題
- linux kernel記憶體碎片防治技術Linux記憶體
- Linux Kernel 3.11 正式版釋出Linux
- linux 核心升級步驟,kernel升級Linux
- Linux on-the-fly kernel patching without LKM薦Linux
- linux引數之/proc/sys/kernel詳解Linux
- Linux kernel 'getting buggier'[英文](轉)Linux
- Install iSCSI target for Linux with kernel 2.6.14(zt)Linux
- 在 Linux Mint 安裝 Linux Kernel 4.12(穩定版)Linux
- linux系統關於kernel.sem調優Linux
- VirtualBox 7.0.8釋出:初步支援Linux Kernel 6.3Linux
- Linux kernel 的設計是否已經過時?Linux
- Linux 核心(kernel)引數 sysctl.conf , shmmaxLinuxHMM
- Linux Kernel 2.6 核心執行緒嚐鮮(轉)Linux執行緒
- Linux 下kernel.shmmax 的設定問題LinuxHMM
- 在Linux Kernel內新增一個System Call(轉)Linux
- 著名美國電信公司招聘linux kernel engineer(轉)Linux