關於哈希表,在內核裡設計兩個很重要的數據結構:哈希鏈表節點:點擊(此處)折疊或打開/*Kernel Version : 3.4.x [include/linux/types.h]*/struct hlist_node {struct
對照前面介紹過的內核通知鏈、鏈表,本章我們將要介紹的哈希表的初始化和定義也是如出一轍的:點擊(此處)折疊或打開定義並初始化一個名為name的哈希鏈表表頭#define HLIST_HEAD(name) structhlist_head
bootloader巧妙地利用函數指針及傳參規范將R0:0x0,R1: 機器號,R2:參數地址傳遞給內核.由於R0,R1比較簡單,不需要再作說明.需要花點時間了解的是R2寄存器.R2寄存器傳遞的是一個指針,這個指針指向一個TAG區域.
Linux內核地址映射模型x86 CPU采用了段頁式地址映射模型。進程代碼中的地址為邏輯地址,經過段頁式地址映射後,才真正訪問物理內存。段頁式機制如下圖。Linux內核地址空間劃分通常32位Linux內核地址空間劃分0~3G為用戶空間
l arch目錄arch是architecture的縮寫。內核所支持的每種CPU體系,在該目錄下都有對應的子目錄。每個CPU的子目錄,又進一步分解為boot,mm,kernel等子目錄,分別包含控制系統引導,內存管理,系統調用等。|
內核與操作系統:內核是操作系統的核心部分,包含了系統運行的核心過程,決定系統的性能,操作系統啟動內核被裝入到RAM中;操作系統與底層硬件設備交互和為運行應用程序提供執行環境。Linux內核與微內核比較:微內核:內核只需要一個很小的函數
一 進程與線程進程就是處於執行期的程序,包含了獨立地址空間,多個執行線程等資源。線程是進程中活動的對象,每個線程都擁有獨立的程序計數器、進程棧和一組進程寄存器。內核調度的對象是線程而不是進程。對Linux而言,線程是特殊的進程。二 進
一 用戶空間和內核空間Linux內核將這4G字節虛擬地址空間的空間分為兩部分: l 將最高的1G字節(從虛擬地址0xC0000000到0xFFFFFFFF),供內核使用,稱為“內核空間”。 l 將較低的3G字節(從虛擬地址 0
進程調度:在可運行態進程之間分配有限處理器時間資源的內核子系統。一 調度策略1 進程類型I/O消耗型進程:大部分時間用來提交I/O請求或是等待I/O請求,經常處於可運行狀態,但運行時間短,等待請求過程時處於阻塞狀態。如交互式程序。處理
一 臨界區和競爭條件臨界區:訪問和操作共享數據的代碼段。競爭條件:多個執行線程處於同一個臨界區中。處於競爭條件:造成訪問的數據或者資源不一致狀態:對資源i的訪問:ProcessA和B訪問後得到正確的結果應該是9:進程是並發執行,有可能
一 中斷硬件通過中斷與操作系統進行通信,通過對硬件驅動程序處注冊中斷處理程序,快速響應硬件的中斷。硬件中斷優先級很高,打斷當前正在執行的程序。有兩種情況:硬件中斷在中斷處理程序中處理硬件中斷延後再進行處理這個具體硬件相關,在中斷處理程
一 內核中的時間觀念內核在硬件的幫助下計算和管理時間。硬件為內核提供一個系統定時器用以計算流逝的時間。系統定時器以某種頻率自行觸發,產生時鐘中斷,進入內核時鐘中斷處理程序中進行處理。牆上時間和系統運行時間根據時鐘間隔來計算。利用時間中
一 原子操作指令以原子的方式執行——執行過程不被打斷。1 原子整數操作原子操作函數接收的操作數類型——atomic_t//定義 atomic_t v; //初始化 atomic_t u = ATOMIC_INIT(0); //操作
虛擬文件系統虛擬文件系統:內核子系統VFS,VFS是內核中文件系統的抽象層,為用戶空間提供文件系統相關接口;通過虛擬文件系統,程序可以利用標准Linux文件系統調用在不同的文件系統中進行交互和操作。VFS作為抽象層: 文件系統被
一 頁內核把物理頁作為內存管理的基本單位;內存管理單元(MMU)把虛擬地址轉換為物理地址,通常以頁為單位進行處理。MMU以頁大小為單位來管理系統中的也表。32位系統:頁大小4KB64位系統:頁大小8KB內核用相應的數據結構表示系統中的
1 背景1.1 用戶空間與內核空間內存的劃分從Linux操作系統層次上,內存可劃分為用戶空間內存和內核空間內存。 32位的CPU,最大尋址范圍為2^32 - 1也就是4G的線性地址空間。Linux簡化了分段機制,使得虛擬地
原文地址:【http://www.cnblogs.com/guguli/p/4489272.html#top】首先要理解一下每一個進程是如何維護自己獨立的尋址空間的,我的電腦裡呢是8G內存空間。了解過的朋友應該都知道這是虛擬內存技術解
Jack:hi,淫龍,在Linux內核的源代碼裡,有幾段匯編代碼,那幾段代碼是負責Linux內核引導的。我:是的。早期的Linux內核引導代碼只有bootsect.s、setup.s、head.s這3個文件,這三個文件都是Linus在
在下面幾種情況下會發生,頁面出錯異常(也叫缺頁中斷):1、相應的頁面目錄項或者頁面表項為空,也就是該線性地址與物理地址的映射關系尚未建立,或者已經撤銷。本文討論的就是這種情況。2、相應的物理頁面不在內存中。3、指令中規定的訪問方式與頁