原创 程序員面試寶典-1.基本數據結構

1. ++i和i++ 函數參數從右到左壓棧,計算順序也是從右到左。i++會產生未變化的臨時變量i,再改變內存中的i爲i+1。++i不產生臨時量直接使用內存中的i。         int i=1; switch (i++){

原创 程序員面試寶典-3.繼承和虛函數

1. 繼承關係  子類只能繼承父類的protected 和 public成員。private不可繼承。私有繼承後父類成員就作爲子類的私有成員,無法繼續向下繼承。私有繼承(class Derived: private Base)子類可以訪問

原创 Linux驅動----9、PCI驅動程序

本文參考:https://blog.csdn.net/cjecho/article/details/54934264 PCI(Peripheral Component Interconnect)外圍設備互聯是一組完整的規範,定義了計算機各

原创 Linux驅動----4、併發和競態

scull的缺陷 scull是個設備,如果兩個進程同時訪問下面代碼,都分配內存給指針dptr->data,後訪問的會覆蓋前者,前者內存無法釋放造成內存泄漏。 只要代碼將一個指針傳遞給了內核的其他部分,一個新的共享就可能建立。 if (!

原创 Linux驅動----7、與硬件通信

對常規內存優化 ,優化過程是透明的,而且效果良好,但是對I/O操作來說這些優化可能造成致命錯誤,因爲它們受邊界效應影響。 side effect(譯爲邊際效應或副作用):是指讀取某個地址時可能導致該地址內容發生變化,比如,有些設備的中斷狀

原创 Linux驅動----5、高級字符驅動程序操作

  ioctl //用戶空間的ioctl //... 一般用char *argp代替防止編譯器進行類型檢查 int ioctl(int fd, unsigned long cmd, ...); //驅動程序ioctl原型 //前兩個參

原创 Linux驅動----8、中斷處理和內核數據結構

註冊中斷 並口的標準規定設置端口2的第4bit 將啓動中斷報告,short 模塊調用outb來設置這個位。開啓之後,每當引腳10的電平從低到高改變時,並口就會產生一箇中斷。(連接輸出口到引腳10可軟件控制產生中斷) 內核維護一箇中斷信號線

原创 Linux驅動----2、字符設備驅動

1.設備號 對字符設備的訪問通過文件系統內的設備名稱進行,這些名稱也稱爲文件系統樹的節點,位於/dev下。主設備號標誌着設備對應的驅動程序,次設備號區分相同驅動程序下的不同設備。 dev_t dev;//由主次設備號構成 MAJOR(

原创 Linux驅動----3、調試技術和/prop

Klogd&&Syslogd 1>  所有系統信息是輸出到ring buffer中去的.dmesg所顯示的內容也是從ring buffer中讀取的. 2> LINUX系統中/etc/init.d/sysklogd會啓動2個守護進程:Klo

原创 Linux驅動----6、時間延遲、內存分配

內核時間 時間中斷由系統定時硬件以週期性的間隔產生,這個間隔由內核根據HZ的值設定,大多數平臺每秒有100次或1000次中斷。計數器是一個64位變量,即使在32位架構上也是,稱爲jiffies_64,但是驅動程序開發者通常訪問的是jiff

原创 實際編程的幾個注意事項

1、輸入包含空格的字符串 //C char s1[4000]; gets(s1); //C++ string s2; getline(cin, s2); 2、無法定義 char s ='' 。"" != "空格"  3、isalpha

原创 程序員面試寶典-2.指針、編程基礎

1. 指針和引用的區別 引用初始化時被指定對象,以後不能改變。 //出錯指針沒有初始化 int *temp; *temp = 1; int *p, *q; int a[3]; p = a; q = &a[2]; //q-p = 2而不

原创 五、系統調用(1)

運行模式     Inter系列處理器有實模式和保護模式。剛啓動處於實模式只能使用實地址訪問內存。保護模式下可以使用段頁機制,虛地址尋址等,保護模式下還提供4個特權級,linux只使用特權級0(內核模式)和特權級3(用戶模式)。

原创 ubuntu “無法獲得鎖 /var/lib/dpkg/lock -open (11:資源暫時不可用)”

在ubuntu系統的termial下,用apt-get install 安裝軟件的時候,如果在未完成下載的情況下將terminal close。此時 apt-get進程可能沒有結束。結果,如果再次運行apt-get install

原创 Linux內核發佈時間表

有了這個Linux內核版本發佈時間表(0.00到3.19,當然沒有包含全部的版本), 大家就可以看看自己用的版本是何時發佈的了!做內核維護查看相關patch log時大致做個參考。 版本號 時間 發展史 0.00