原创 Linux內核設計與實現 學習筆記(3)虛擬文件系統

虛擬文件系統(VFS)是linux內核和具體I/O設備之間的封裝的一層共通訪問接口,通過這層接口,linux內核可以以同一的方式訪問各種I/O設備。 虛擬文件系統本身是linux內核的一部分,是純軟件的東西,並不需要任何硬件的支持。

原创 Linux內核設計與實現 讀書筆記(10)內核同步方法

主要內容: 原子操作自旋鎖讀寫自旋鎖信號量讀寫信號量互斥體完成變量大內核鎖順序鎖禁止搶佔順序和屏障總結   1. 原子操作 原子操作是由編譯器來保證的,保證一個線程對數據的操作不會被其他線程打斷。 原子操作有2類: 原子整數操作,

原创 Linux內核設計與實現,學習筆記(2)內存管理

內核的內存使用不像用戶空間那樣隨意,內核的內存出現錯誤時也只有靠自己來解決(用戶空間的內存錯誤可以拋給內核來解決)。 所有內核的內存管理必須要簡潔而且高效。 主要內容: 內存的管理單元獲取內存的方法獲取高端內存內核內存的分配方式總結

原创 Linux內核設計與實現 學習筆記(1)定時器和時間管理

系統中有很多與時間相關的程序(比如定期執行的任務,某一時間執行的任務,推遲一段時間執行的任務),因此,時間的管理對於linux來說非常重要。   主要內容: 系統時間定時器定時器相關概念定時器執行流程實現程序延遲的方法定時器和延遲的

原创 基於 Bochs 的操作系統內核實現

簡介 Bochs 簡介 Bochs(讀音Box)是一個開源的模擬器(Emulator),它可以完全模擬x86/x64的硬件以及一些外圍設備。與VirtualBox / VMware等虛擬機(Virtual Machine)產品

原创 Linux內核設計與實現 讀書筆記(6)內核數據結構

主要內容: 鏈表隊列映射紅黑樹   1. 鏈表 鏈表是linux內核中最簡單,同時也是應用最廣泛的數據結構。 內核中定義的是雙向鏈表。   1.1 頭文件簡介 內核中關於鏈表定義的代碼位於: include/

原创 Linux內核設計與實現 讀書筆記(3)Linux的進程

主要內容: 進程和線程進程的生命週期進程的創建進程的終止 1. 進程和線程 進程和線程是程序運行時狀態,是動態變化的,進程和線程的管理操作(比如,創建,銷燬等)都是有內核來實現的。 Linux中的進程於Windows相比是很輕量級的

原创 C++資源總彙

關於 C++ 框架、庫和資源的一些彙總列表,由 Break發起和維護。內容包括:標準庫、Web應用框架、人工智能、數據庫、圖片處理、機器學習、日誌、代碼分析等。標準庫C++ Standard Library:是一系列類和函數的集合,使用核

原创 Linux內核設計與實現 學習筆記(8)內核調試

內核調試的難點在於它不能像用戶態程序調試那樣打斷點,隨時暫停查看各個變量的狀態。 也不能像用戶態程序那樣崩潰後迅速的重啓,恢復初始狀態。   用戶態程序和內核交互,用戶態程序的各種狀態,錯誤等可以由內核來捕獲並顯示。 而內核是直

原创 Linux內核設計與實現 學習筆記(10)補丁,開發和社區

linux最吸引我的地方之一就是它擁有一個高手雲集的社區, 還有就是如果能=爲linux內核中貢獻代碼, 一定是一件令人自豪的事情. 下面主要總結一些和貢獻代碼相關的主要內容. 加入社區編碼風格提交補丁總結   1. 加入社區 如

原创 Linux內核設計與實現 讀書筆記(8)中斷處理下半部

主要內容: 中斷下半部處理實現中斷下半部的機制總結中斷下半部的實現中斷實現示例   1. 中斷下半部處理 那麼對於一箇中斷,如何劃分上下兩部分呢?哪些處理放在上半部,哪些處理放在下半部? 這裏有一些經驗可供借鑑: 如果一個任務對時

原创 Linux內核設計與實現 學習筆記(7)設備與模塊

主要內容: 設備類型內核模塊內核對象sysfs總結   1. 設備類型 linux中主要由3種類型的設備,分別是: 設備類型 代表設備 特點 訪問方式 塊設備 硬盤,光盤 隨機訪問設備中

原创 Linux內核設計與實現 學習筆記(5)進程地址空間

進程地址空間也就是每個進程所使用的內存,內核對進程地址空間的管理,也就是對用戶態程序的內存管理。 主要內容: 地址空間(mm_struct)虛擬內存區域(VMA)地址空間和頁表   1. 地址空間(mm_struct) 地址空間就

原创 Linux內核的設計與實現 讀書筆記(7)中斷處理

主要內容: 什麼是中斷中斷類型中斷相關函數中斷處理機制中斷控制方法總結   1. 什麼是中斷 爲了提高CPU和外圍硬件(硬盤,鍵盤,鼠標等等)之間協同工作的性能,引入了中斷的機制。 沒有中斷的話,CPU和外圍設備之間協同工作可能只

原创 Linux內核設計與實現 學習筆記(9)可移植性

linux內核的移植性非常好, 目前的內核也支持非常多的體系結構(有20多個). 但是剛開始時, linux也只支持 intel i386 架構, 從 v1.2版開始支持 Digital Alpha, Intel x86, MIPS和