原创 7.3 IOMMU流程分析

7.3.1 IOMMU 初始化  kvm用到的iommu功能源碼位於:drivers/iommu,主要代碼爲iommu.c, iova.c, dmar.c,intel-iommu.c.   7.3.1.1 IOMMU模塊初始化 dma

原创 10.4 QCOW2虛擬機鏡像

10.4.1 QCOW2格式 typedef struct QCowHeader {     uint32_t magic;// 'Q''F' 'I' 0xb0     uint32_t version;   //backing 文件名

原创 嵌入式底層軟件開發學習系列之四基本技能篇

嵌入式開發技能的學習是一個不斷積累的過程,這與在學校階段的課程學習有較大的區別; 按照軟件工程的說法, 它是一個迭代的過程。 其原因在於不同的知識相互影響, 而隨着知識的學習,代碼閱讀與編寫技能的提高,對同一技能或知識的理解水平與層次也就

原创 BCache源碼淺析之一基本使用與代碼模塊

BCache源碼淺析  BCache可用於雲平臺加速磁盤的讀寫性能;但目前該技術由於較新還不夠穩定。不過由於它已經移入到了Linux內核源碼中,所以穩定性應會得到不斷的提升。本系類文章將嘗試分析Linux Kernel/Driver/Md

原创 BCache源碼淺析之四分配管理與Journal

5. Allocation 與Bucket Bcache將cache disk的空間線性劃分爲若干個bucket, 每個bucket對應的磁盤地址按bucket號線性增加,每個bucket的大小一致。 bch_bucket_alloc  

原创 FlashCache相關文章整理

相對於BCache, FlashCache是一個比較成熟與簡單的Linux緩存解決方案, 這裏整理出了一些較優秀的分析FlashCache的文章: (1) 基礎與架構 a.FlashCache發展史 b.Flashcache基本使用及注意

原创 kvm隨筆系列三: Qemu/kvm虛擬化相關開發組件

本文按Guest OS, VMM Host, Client三個層次,分別總結Qemu+KVM+Spice虛擬化組件 1. Guest OS: (1).Virtio Driver (2). QXL: 配合Spice的顯卡驅動 Linux採x

原创 嵌入式底層軟件開發學習系列之五調試方法

嵌入式開發中難免出現這樣或那樣的問題, 因而軟件的調試手段會直接影響到開發的進度, 本節將總結一些常用的調試方法: (1) 聯機調試   對於在操作系統上(windows 或Linux)運行的內核態程序可以通過windbg或kgdb進行

原创 嵌入式底層軟件開發學習系列之六軟件工程

  本節按照項目的週期來分析: 需求與立項,軟件硬件設計,編碼實現與調試,量產前測試,小規模量產測試, 大規模量產測試,  後期維護;等過程中軟件部分的工作點。重點將體現與純軟件開發的差異 (1) 需求與立項 與企業應用等軟件開發比較起來

原创 kvm隨筆系列四:AMD SVM

在qeum/kvm系列文章中分析了Intel VT的實現框架, 這裏對AMD的虛擬化技術框架做一個對比性的小結。 (1) 基本指令 首先是判斷 cpu是否支持svm: if (CPUID 8000_0001.ECX[SVM] == 0)

原创 Linux Kernel中的數據結構----樹

Linux Kernel與驅動部分用到了一些關於樹的數據結構; 網上該類文章較多, 這裏挑選了一些較好的文章,並給出鏈接: (1)紅黑樹 基礎知識: http://blog.sina.com.cn/s/blog_60707c0f0101

原创 BCache源碼淺析之三數據讀寫流程

4. 數據讀寫流程與B+Tree cached_dev_make_request: a. 如果device沒有對應的緩存設備,則直接將向主設備提交bio,並返回. b.如果有cache device 根據要傳輸的bio, 用search_

原创 8.1 Qemu 管理模塊與接口

8.1.1 qemu內部命令架構 (1) 管理模塊的char device qemu採用monitor來管理內部命令, 當用戶在qemu虛擬機界面上輸入Ctrl+ALT+2將進入qemu monitor; 然後按CTRL+ALT+1將恢

原创 8.2 虛擬機Save 與load

8.2.1 虛擬機狀態的維護 本節通過Cpu,內存和硬盤來分析虛擬機的狀態維護 (1) CPU cpu_exec_init ==>     vmstate_register(NULL, cpu_index,&vmstate_cpu_c

原创 4.1中斷虛擬化架構與8259虛擬化

本節將以8259控制器爲例來分析Kvm Qemu的虛擬化原理與架構,關於更加複雜的APIC將在下一節分析。 4.1.1 虛擬中斷控制器的創建與初始化 (1) 用戶態空間中斷模塊初始化 kvm_init==>kvm_irqchip_cre