原创 內存虛擬化硬件基礎——分頁模式

文章目錄32-bit模式層級結構PTE/PDECR3PAE模式層級結構PTE/PDEPDPTECR34-level模式層級結構PTE/PDEPDPTEPML4ECR3總結 內存分頁是將線形地址轉化成物理地址的過程,如果把分頁過程

原创 eventfd機制

文章目錄eventfd用法demo分析eventfd內核實現創建eventfd系統調用創建eventfd_ctx讀eventfd寫eventfd用戶態寫內核態寫 eventfd可以用於線程或者父子進程間通信,內核通過eventfd

原创 KVM——X86中斷控制器模擬

文章目錄前言中斷信號處理路徑IOAPIC遞交中斷IOAPIC簡介物理位置原理簡介KVM模擬IOAPIC中斷流程處理LAPIC處理LAPIC簡介物理位置工作流程優先級寄存器KVM模擬LAPIC中斷處理流程Make RequestKi

原创 VirtIO實現原理——virtblk初始化

文章目錄virtio總線的註冊virtio-blk驅動的註冊virtio-blk設備的matchvirtio-blk設備的探測virtio-blk配置空間佈局virtqueue初始化塊設備初始化virtio-blk設備狀態Gues

原创 QEMU虛機關閉流程

文章目錄發起關機標記關機通知qemu主線程主線程發起關機流程響應關機流程中斷相關硬件初始化中斷模擬基本原理ARM平臺GPIO中斷模擬中斷控制器GIC設備模擬GIPO控制器芯片PL061設備模擬GPIO-KEY設備模擬下發中斷到KV

原创 KVM——ARM中斷控制器模擬

文章目錄QEMU設備到vGICvGIC到CPU interfaceARM GICv2簡介ARM GICv2中斷類型中斷信號的狀態Distributor數據結構Distributor初始化路由表通用結構路由表路由表項路由表默認配置A

原创 SRCU的簡單實現

文章目錄引子設計原則基本術語源碼實現數據結構讀者寫者場景分析場景1場景2場景3實現解析數據結構讀者訪問步驟寫者更新步驟寬限期檢查機制 引子 Read-copy update (RCU)是一種在讀多寫少場景下可替代讀寫鎖的高性能同

原创 qemu內存管理

文章目錄前言樹狀視圖MemoryRegion數據結構分類MR實例AddressSpace數據結構AdressSpace初始化AdressSpace Listener初始化扁平化視圖FlatView數據結構FlatView初始化Fl

原创 qemu/kvm內存預留

文章目錄功能開源用法libvirt配置qemu配置對比預留前預留後預留原理開源實現原理參數解析功能實現預留部分內存內存分配流程用戶空間內核空間內存預留流程實現驗證mlock內核實現系統調用 功能 內存預留,顧名思義,將虛擬機使用

原创 SRCU的內核簡單實現

文章目錄前言初始化寬限期統計數據結構寬限期統計原理讀者寫者 前言 srcu早期的內核實現比較簡單,本文基於內核3.10.0分析srcu。內核中許多地方用srcu鎖實現數據同步,比如debugfs,kvm,fsnotify,blk

原创 淺析qemu內存遷移

文章目錄遷移概述遷移模型傳輸方式遷移準備內存遷移源端遷移發起遷移準備遷移拷貝遷移結束目的端遷移發起遷移拷貝 遷移概述 遷移模型 qemu內存遷移的有三個階段: 標髒所有的內存頁 迭代遷移所有髒頁,直到剩餘髒頁降低到一定水線

原创 深入理解qemu事件循環 ——下半部(bottom half)

文章系列: 深入理解qemu事件循環 —— 基本框架 深入理解qemu事件循環 —— 下半部 文章目錄簡述BH 數據結構BH API掛載 BH通知執行 BH卸載BH禁用BHdemo代碼分析運行結果分析 簡述 qemu事件循環可以

原创 QCOW2和RBD快照克隆原理對比

文章目錄前言簡介快照實現原理QCOW2快照原理圖快照過程快照之後的寫入元數據狀態圖還原快照QCOW2查找當前鏡像的數據和快照數據有什麼區別?RBD快照原理圖快照過程快照之後的寫入快照鏡像重建還原快照克隆前爲什麼要做快照保護?快照機

原创 彙編語法

文章目錄前言彙編(Assembly)1.表達式2.數學指令3.數據傳輸4.執行流控制5.宏定義內聯彙編(Inline Assembly in Linux C)example基本格式常用約束 前言 機器指令是用二進制代碼表示的CP

原创 深入理解qemu協程

文章目錄簡介ucontext API實現協程數據結構ucontext函數族一個簡單的例子一個協程的實現qemu實現協程數據結構setjmp函數族qemu協程基本接口創建協程進入協程協程生命週期qemu 協程demo 簡介 CPU