原创 函數調用的過程

C代碼: int fun(int para) {   int a=0;   return 0; } void main() {   fun(1); } 彙編代碼: 1: 2: 3:    int fun(int pa

原创 文件系統(三)——陳莉君老師經典

儒家倡導“修身齊家治國平天下”,認爲“天下之本在國,國之本在家,家之本在身”。在儒家看來,通過修身養性而實現的人內在的身心和諧,是實現人際和諧、羣己和諧,最後達至天人和諧的必要前提。只有“成己”才能“成人”,只有“成己”才能“成物”,

原创 STL的vector使用精講

C++內置的數組支持容器的機制,但是它不支持容器抽象的語義。要解決此問題我們自己實現這樣的類。在標準C++中,用容器向量(vector)實現。容器向量也是一個類模板。標準庫vector類型使用需要的頭文件:#include <vect

原创 文件系統(二)——陳莉君老師經典

儒家和諧的思想不僅主導着我們的日常生活和社會關係,而且在Unix/Linux文件系統的設計中充分體現。先秦儒家以西周末年太史史伯提出的“和實生物,同則不繼。”《國語·鄭語》中,則對和諧思想做了進一步的完善和發展,把“和”作爲處理人的身

原创 關於IO內存

在平臺設備驅動中: 內存空間: 內存地址尋址範圍,32位操作系統內存空間爲2的32次冪,即4G。 物理內存: 實實在在的物理設備,一般<4g,映射在內存空間上。 IO空間: X86特有的一個空間,與內存空間彼此獨立的地址空間,32位X

原创 中斷絮說(一)——陳莉君老師經典

這部分內容來自http://www.kerneltravel.net/內核之旅的電子雜誌第八期《中斷》,再次提起,是希望你知道,那個困擾我們的中斷原來不過如此。 一、中斷是什麼 中斷的漢語解釋是半中間發生阻隔、停頓或故障而斷開。那麼,在計

原创 C語言的inline

一直以來我就認爲inline關鍵字是C++中的。今天我看到一篇講關於C語言的inline關鍵字的。呵呵。。。 原來是我弄錯了。看來以後定義一些宏命令完全可以用這樣的一些inline函數來代替了。以下是我從網上搜集來的知識點(來源:htt

原创 中斷處理之RTC——陳莉君老師(經典)

中斷絮說(三)-從外而內,Linux對中斷的支持 在Linux中,中斷處理程序看起來就是普普通通的C函數。只不過這些函數必須按照特定的類型聲明,以便內核能夠以標準的方式傳遞處理程序的信息,在其他方面,它們與一般的函數看起來別無二致。

原创 中斷絮說(二)——陳莉君老師經典

計算機系統實現中斷機制是非常複雜的一件工作,再怎麼說人都是高度智能化的生物,而計算機作爲一個鐵疙瘩,沒有程序的教導就一事無成。而處理一箇中斷過程,它受到的限制和需要學習的東西太多了。 首先,計算機能夠接收的外部信號形式非常有限。中斷是由外

原创 unix進程狀態轉換

3.7 UNIX SVR4 進程管理 UNIX 系統V 使用了一種簡單但是功能強大的進程機制,且對用戶可見。UNIX 採用圖3.15b 中的模型,其中大部分操作系統在用戶進程環境中執行。UNIX 使用兩類進程,即系統進程和用戶進程。

原创 文件系統(一)——陳莉君老師經典

文件是一個抽象的概念,它是存放一切數據化信息的倉庫。用戶爲了保存數據或信息,首先要創建一個文件,然後把數據或信息寫入該文件。文件的載體通常情況下是磁盤,只要給出存放文件的路徑和文件名,文件系統就可以在磁盤上找到該文件的物理位置,並把它調

原创 linux名稱解析函數簡介——gethostbyname與getaddrinfo

使用這個東西,首先要包含2個頭文件:#include <netdb.h>#include <sys/socket.h>struct hostent *gethostbyname(const char *name);這個函數的傳入值是域名或

原创 linux工作隊列解析(一)

INIT_DELAYED_WORK()是一個宏,我們給它傳遞了兩個參數.&hub->leds和led_work.對設備驅動熟悉的人不會覺得INIT_DELAYED_WORK()很陌生,其實鴉片戰爭那會兒就有這個宏了,只不過從2.6.20

原创 RCU機制(轉)

本文轉自:http://blog.csdn.net/junguo/article/details/8244530 感謝作者。        簡介         RCU(Read-Copy Update)是數據同步的一種方式,在

原创 Linux工作隊列解析(二)

工作、工作隊列和工作者線程 如前所述,我們把推後執行的任務叫做工作(work),描述它的數據結構爲work_struct,這些工作以隊列結構組織成工作隊列(workqueue),其數據結構爲workqueue_struct,而工作線程