原创 實驗3前篇——X86的中斷管理

       實驗3主要內容是用戶進程的創建,運行,銷燬;從操作系統的角度來看用戶進程,可以看作是動態加載可運行的程序,然後進行不斷地動態切換,這裏我們當然也可以從虛擬機的角度來考察操作系統——操作系統其實是在硬件上爲用戶進程創建虛擬

原创 磨刀不誤砍柴工——實驗工具準備

        寫在最前面的話:    後面的一系列博客主要圍繞MIT-OS的學習課程來創建;    爲什麼會學習mit-os?    1)對於複雜的事物,一種常見的思維就是從簡單到複雜的思維。根據這種思維去學習原始的os,透過它去熟悉o

原创 實驗2後篇——內存管理算法

     實驗2介紹了操作系統的基本內存管理,或者說是系統內存管理的軟件接口實現。這對於我們實際上碰到的內存管理操作有一些差距,所以我們這一節補充一些內容,來詳細介紹一些內存管理技術。     這裏要對實驗2進行一些補充說明,實驗2

原创 實驗1後篇——引導linux與uboot命令仿真

         經過了實驗1的“洗禮”,會讓人感覺只是只是打開了一個“玩具操作系統”的模擬過程,雖然能讓人由一個直觀與形象的理解,但是還是沒有實在的用途。當然了,可以這麼說了。所以如上所調侃而言,我們爲了讓我們的實驗進行的更有意義,

原创 實驗2前篇——X86內存管理

     實驗1“洋洋灑灑”的寫了那麼多的內容,看起來很豐富;但其實沒有進入主題。然而它們卻是實現與理解操作系統的必要步驟與開端。純粹的操作系統的理論總是讓人無法身臨其境的去理解而且實用性不是很強 ,而且我覺得操作系統的相關理論都是經

原创 實驗3正篇——用戶進程

        進入實驗3的實驗過程了,在實驗2中我們實現了操作系統基本模塊的內存管理部分,然後需要實現的部分就是進程管理的部分了。而對於進程管理實驗其實分爲兩個實驗——實驗3與實驗4,實現集中在創建進程,而實驗4則集中於調度進程。從

原创 實驗1前篇——BIOS編程空間

      從此篇開始更多的注重技術細節了。細節決定成敗的故事太多了,而且對於編程者肯定都有這樣的經歷——自信滿滿的認爲自己寫得程序天衣無縫,但是當運行調試之後,才發現bug無處不在,更可氣的是很多的bug卻是因爲語法細節或者指尖

原创 萬變不離其宗——程序動態分析(gdb)

     萬劍歸宗是無名的招數,但是它卻道出一個道理。不管劍招多麼花哨,多麼厲害,最終還是需要回歸正宗與樸實。程序也是一樣,不管代碼如何實現,不論語言如何,技巧如何,最終也是要能夠被正確,有效,可靠的運行,纔是本真。所以我們需要耐心的

原创 實驗1正篇——引導PC

      講了這麼久,終於進入主題了。爲了讓讀者更深入的理解整個系統,做一些必要的鋪墊是必需的;這樣不僅能做到有理有據,更能讓人知其然,而且知其所以然。題目所謂“正”篇,就是要從正面去描述該實驗的內容,當然是對其進行意譯,同時根據其

原创 linux用戶進程分析

       經過實驗3的介紹,我們需要來點實在的,所以將我們理解的流程用於linux系統的分析。換句話說,通過類比的方式去進行描述與理解linux相關的部分。本節的內容很詳實,而且也分析了很久,所以長話短說,靜靜的去感受與理解li

原创 實驗2正篇——內存管理

   經過這麼久的準備終於進入正題了。本實驗主要介紹的是我們實現的操作系統中的內存管理。實驗將以兩部分內容進行講解——內核與操作系統我們將互用,請根據實際情況理解:        第一部分是內核的物理內存分配器,內核能夠分配內存並且能夠

原创 百尺竿頭更進一步——編譯器gcc對c語言的擴展

       三國殺是個很有意思的遊戲,在遊戲的過程中有一些封號有意思,“初嘗勝果”,“旗開得勝”....都是剛開始的勝利,可圈可點;然而高手與熟手的區別在於能否對自己用的工具領悟得更多。        在這個技術知識爆炸的年代,很多人都

原创 千里之行始於足下——編譯器助手(binutils與elf文件)

任何技藝的提升都在於積累與總結;而對工具與流程的認識,有利於我們更深入的理解系統結構與執行環境。 任何東西都要硬幣一樣有正反兩面: 感謝GNU,爲我們提供了一整套完整的開發工具與運行環境,讓我們能夠更容易地開發與理解軟件系統。 唾棄GNU

原创 工欲善其事,必先利其器——編譯開發流程

已經工作幾年了,跟着工作項目與自己興趣,學到了一些知識,覺得對於技術的提煉與能力的提高,需要不斷總結,反思,錘鍊。所以謀生了寫寫博客的想法,就當知識的總結與技術的考驗。記錄下自己的一些想法與知識技巧,也助於自己的進一步學習與技能的提升,如