原创 Linux內核0.12——微機組成結構

馮諾依曼體系結構計算機:CPU、ALU、存儲器、輸入輸出設備 總線: 傳統PC總線:CPU通過數據總線、地址總線和控制總線與外部設備進行通信,所有的外部設備都將連都這三條總線上,也就是說只有CPU和外部設備兩個層次,效率肯定不行 現代PC

原创 數據結構之各種排序的比較

(一)直接插入排序 算法簡潔,但是隻有當待排元素n比較少的時候效率才高所需空間:一個當前元素的哨兵array[0]即可所需時間:主要與所需關鍵字的比較次數及移動的次數有關最壞的情況——逆序:總的比較次數爲n(n-1)/2,記錄的移動次

原创 彙編學習筆記----8086CPU的段寄存器

(1)在8086CPU中,它是16bit結構,一次可以傳送一個字的數據,但其地址總線有20根,一次可以傳送2的20次方的數據 也就是說它的尋址能力爲1MB,很明顯,如果將地址從CPU內部簡單的發出來,一次就只能傳送16bit的地址,尋址能

原创 數據結構之棧的應用----算術表達式的實現

這次所講的是又一個棧的應用:算術表達式 這個程序是棧的應用的典型例子,是很好的棧的詮釋,這個程序在K&R的書上也被叫做逆波蘭計算器 /**********算術表達式的設計思想***********/ (1)首先,根據四則運算表達式,我們

原创 C專家編程精華篇----頭疼的C語言聲明:const、typedef、define及函數高級聲明

**************const有關的變量聲明***************** (1)const == read-only const修飾的變量被許多人錯誤的認爲是常量,但是const所修飾的變量應該是隻讀變量 檢驗這個結論可以用

原创 Linux的標準文件系統----EXT2

EXT2分爲幾個重要部分: inode、block、superblock EXT2將文件分爲兩部分存儲,文件的權限等屬性放在inode中,而其實際的數據放在block中,superblock當然就是記錄整個文件系統的inode和block

原创 Linux內核0.12——從一個簡單的多任務內核實例學習保護模式

《Linux內核完全剖析——基於0.12內核》(趙炯著)P.140 /******引導啓動程序boot.s******/ 此程序僅能加載長度不超過16個扇區的head代碼,並且直接使用BIOS默認設置的中斷向量號 首先利用BIOS中斷把內

原创 Linux內核0.12——內核編程語言和環境

/********AT&T 彙編格式********/ 1、爲了維持與gcc輸出彙編程序的兼容性,as彙編器使用AT&T系統V的彙編語法,這裏主要說明一下它與intel彙編的語法區別 2、AT&T與intel彙編語法格式的區別 1)寄存器

原创 Linux內核0.12——8086中斷

中斷:CPU不再繼續依序執行指令,而是轉去處理某一從CPU外部或內部產生的特殊信息 從彙編角度理解: 內中斷:對於8086CPU來說,以下發生在CPU內部的的情況會產生內中斷: 除法錯誤;單步執行;執行into指令;執行int指令。其相應

原创 Linux裏必須掌握的命令

--------------------grep------------------------工作方式:在一個或多個文件中搜索字符串模板,若模板包括空格,則必須被引用 模板後的所有字符串被看作文件名,不影響原文件內容常用參數: -a:將

原创 數據結構之棧的應用----迷宮求解

/***********程序設計思想*************/(1)迷宮地圖相關: 利用動態二維數組來初步勾勒出迷宮: 建議先用malloc申請一維數組,再用calloc申請每個元素中的一維數組,因爲我用的是1來表示迷宮的通路,0表示

原创 兩種方法搭建IA-32彙編設計環境

/*******DOS : 16bit 彙編程序環境搭建********/ 16彙編程序設計需要在DOS環境下,利用MASM5.0以上的版本才能編譯鏈接 16位彙編爲實地址模式,這裏的環境其實不需要搭建,只管利用masm編譯即可,以下是方

原创 數據結構之棧的應用----C程序的括號配對檢查

這周學完了嚴老師的棧及其應用。 已經對棧的應用有了一定的瞭解了,並且感覺到數據結構實在是很強大,它幾乎可以解決我們生活中的大部分問題。 關於棧的基本常識,這裏不做過多的解釋,總之,其核心就是先進後出(FILO) 聯想到這種模式我們就可以很

原创 C專家編程精華第二篇----C對內存的使用,底層探索

這裏以Linux中C編程爲例,有些東西可能在不同的系統中處理是不一樣的 /**************運行時:內存的佈局****************/ 以下面這段程序爲例: // A:未初始化的全局和靜態變量 int array[4

原创 彙編學習筆記----轉移指令及子程序原理

/*******8086CPU執行指令的步驟********/ 極重要: 1、從CS:IP指向的內存單元讀取指令,讀取的指令進入指令緩衝器 2、(IP)=(IP)+所讀取指令的長度,從而指向下一條指令 3、執行指令,轉到第一步,重複這三步