Time of Update: 2018-12-04
進程地址空間由每個進程中的線性地址區組成,而且核心允許進程使用該空間的地址。每個進程都有一個32或者64位的平坦地址空間。(平坦是指地址空間範圍是一個獨立的連續空間)。進程有權訪問的虛擬記憶體地址,這些可被訪問的合法地址被稱為記憶體地區(memory area).進程只能訪問有效範圍以內的記憶體位址。每個記憶體地區也具有相應進程必須遵循的特定訪問屬性(如唯讀,唯寫,可執行等屬性)。核心使用記憶體描述符結構體(mm_struct)表示進程的地址空間.mm_users域表示正在使用該地址的進程數目。
Time of Update: 2018-12-04
在Unix中,檔案系統被安裝在一個特定的安裝點上,該安裝點在全域階層中被稱為命名空間,所有的已安裝檔案系統都作為根檔案系統樹的枝葉出現在系統中。檔案其實可以看作是一個有序位元組串。Unix系統將檔案的相關資訊和檔案本身這兩個概念加以區分;檔案相關資訊,有時候被稱為檔案的中繼資料(也就是說,檔案的相關資料),被儲存在一個單獨的資料結構中,該結構被稱為索引節點(inode),是index
Time of Update: 2018-12-04
系統定時器是一種可程式化硬體晶片,它能以固定頻率產生中斷。該中斷就是所謂的定時器中斷。該頻率可以通過編程預定,稱為節拍率(tickrate). 全域變數jiffies用來記錄自系統啟動以來產生的節拍的總數,總是無符號長整數(unsignedlong),在32位體繫結構上是32位,在64位體系就是64位。用volatile表示。 核心可以使用宏jiffies_to_clock_t()將一個由HZ表示的節拍計數轉換成一個由USER_HZ表示的節拍數。 系統時鐘(RTC)是用來持久存放系統時間的裝置,
Time of Update: 2018-12-04
核心同步保護的是資料(data),而不是邏輯(logic).中斷處理常式中能避免並發訪問的安全的程式碼稱為中斷安全的程式碼,在對稱式多處理的機器中能避免並發訪問的安全的程式碼稱為SMP安全的程式碼(SMP-safe),在核心搶佔時能避免並發訪問的安全的程式碼稱為搶佔安全的程式碼(preempt-safte).1,原子操作,只能針對整數或者bit,用atomic_t類型(只能用24位,因為在SPARC體繫上,在int類型的低八位中嵌入一個鎖)。2,自旋鎖(spin
Time of Update: 2018-12-04
什麼是中斷: 中斷是某些硬體用來與cpu非同步通訊的一種方式,類似的還有異常.(中斷與異常的根本區別還有待繼續研究,將在新的文章中解釋)中斷的本質: 發往中斷控制器的一個電訊號,而後由中斷控制器發往cpu。最後由cpu來調用之前註冊的中斷控制器。中斷類型: 快速中斷(SA_INTERRUPT):在中斷處理常式中禁止所有的中斷 共用中斷(SA_SHIRQ):多個中斷處理常式共用同一個中斷線,在中斷來臨時,會調用註冊在這個中斷線上的每一個中斷處理常式。
Time of Update: 2018-12-04
物理頁作為核心管理的基本單位。主要的三個用途:1,頁緩衝使用(mapping域指向和這個頁關聯的address_space對象);2,作為私用資料(由private指向);3,進程頁表的映射。用sturct
Time of Update: 2018-12-04
塊裝置的特點在於可以被隨機訪問,即在訪問裝置時隨意地從一個位置跳轉到另一個位置。塊裝置中最小的可定址單元是扇區(sector),扇區的大小是裝置的物理屬性。扇區對於核心的重要性在於所有裝置的I/O操作都必須基於扇區來進行。軟體的最小邏輯可定址單元---塊,(比扇區高一層的抽象)。塊是檔案系統的一種抽象---只能基於塊來訪問檔案系統。塊不能比扇區還小,只能數倍於扇區大小。每個緩衝區與一個塊對應,它相當於是磁碟塊在記憶體中的表示。用buffer_head結構體表示,被稱為緩衝區頭。它的目的在於描述磁
Time of Update: 2018-12-04
比如:有個檔案夾999,其路徑為: /home/yan/999,我要將檔案夾999下的所有檔案進行壓縮。命令如下: cd /home/yan tar -zcvf 999Back.tar.gz 999 或者 tar -zcvf 999Back.tar.gz ./999注意這個999Back.tar.gz名字是自己起的,尾碼最好這樣加,你解壓縮的時候好知道用什麼參數。 -zcvf,這個命令大家記著。後面的vf是必備的,z和
Time of Update: 2018-12-04
轉自http://blog.csdn.net/dingxy/archive/2009/03/20/4008724.aspx 和http://blog.csdn.net/dingxy/archive/2009/03/23/4016383.aspx/etc/profile:此檔案為系統的每個使用者佈建環境資訊,當使用者第一次登入時,該檔案被執行.並從/etc/profile.d目錄的設定檔中搜集shell的設定./etc/bashrc:為每一個運行bash shell的使用者執行此檔案.當bash
Time of Update: 2018-12-04
利用qt檢測隨身碟插拔,思路有用qt的qdbus,dbus接收HAL的訊息,或者是接收udisks的訊息,這兩種方法在x86平台上是可行的,但到板子裡就不行。板子裡不一定有HAL的,而HAL往板子裡移植網上麼有半點鐘資料。udisk也沒有移植的資料。更要命的是,不管hal也好udisks也好,他們得到的訊息都是udev發過來的。而udev需要sysfs檔案系統的支援,但現在arm板子上大多數都是yaffs或yaffs2檔案系統的支援。儘管有udev移植的資料,但往yaffs、yaffs2
Time of Update: 2018-12-04
1、Linux系統剛裝完,切換不到root許可權,這是因為沒有創立密碼的原因。 輸入命令:sudo passwd,按照提示,設定unix密碼。 這個密碼就是你切換到root許可權時的密碼。這個密碼 和
Time of Update: 2018-12-04
Fedora14(linux)下qt配置Openv:1,gedit /usr/share/qt4/mkspecs/default/qmake.conf在檔案內添加了下面兩句:QMAKE_INCDIR = /usr/include/opencv QMAKE_LIBS = -lcvaux -lcv -lcxcore -lhighgui -lml2,在專案檔的.pro檔案內添加:INCLUDEPATH += /usr/include/opencvLIBS += /usr/lib/libcv.so \/
Time of Update: 2018-12-04
本文檔參考著linux裝置驅動開發詳解一起看8.1 阻塞與非阻塞 I/O阻塞操作是指在執行裝置操作時若不能獲得資源則掛起進程,直到滿足可操作的條件後再進行操作;被掛起的進程進入休眠狀態,被從調度器的運行隊列移走,直到等待的條件被滿足。非阻塞操作的進程在不能進行裝置操作時並不掛起,它或者放棄,或者不停地查詢,直至可以進行操作為止。 阻塞從字面上聽起來似乎意味著低效率,實則不然,如果裝置驅動不阻塞,則使用者想擷取裝置資源只能不停地查詢,這反而會無謂地耗費 CPU 資源。而阻塞訪問時,
Time of Update: 2018-12-04
終於說到最後一個註冊了,今天也是年末了,可是我依然戰鬥在一線的感覺!說完這個,我也得放鬆一會兒。學習核心也接近大半個月了,收穫頗多,不過還有太多東西需要我在繼續努力了,雖然部落格的流量不是很理想,表明關注我部落格的網友不是很多,但是我相信,就會在不久,linux成為千家萬戶都在關注的對象時,我部落格將成為初學者很好的入門資料,這也是我寫這些文章的一個出發點,希望以後在來回味自己走過linux的路程時有所感慨!來自:drivers/base/driver.c:int
Time of Update: 2018-12-04
網路攝影機型號是環宇飛揚,普通的usb網路攝影機。運行環境是在linux上的,Opencv版本是2.1的。如果是windows下的qt開發環境,要麼改下配置,要麼照著源碼寫一下。在linux上運行是沒有任何問題。.pro檔案的源碼:#-------------------------------------------------## Project created by QtCreator 2012-05-04T09:51:33##-------------------------------
Time of Update: 2018-12-04
這篇文章將那個3個註冊函數說說,把整個裝置模型架構搭建起來,當然,是重點部分了。在這之前希望你已經懂得匯流排、裝置、驅動的資料結構及其裡面的有關資料結構。關於調用的函數,如果顯示為粗體,那麼在下面我有分析。來自:drivers/base/core.cint device_register(struct device *dev){ device_initialize(dev);//初始化裝置 return device_add(dev);
Time of Update: 2018-12-04
qtCreator安裝好了之後,是沒有案頭啟動表徵圖的,每次到終端裡輸入命令也麻煩。以前寫過一個給eclipse建立表徵圖的方法,這次我給qt弄,發現找那個logo找了好長時間。索性我再寫以下把。我的QT的安裝目錄是/usr/local/QtSDK/ 這個目錄下的。如有需要,大家把目錄換成自己的安裝目錄就行了,我的版本是4.8.1.採用離線qt的安裝包七百多M的安裝的。 方法:輸入su -,獲得root許可權,然後gedit /usr/share/applications/
Time of Update: 2018-12-04
裝置模型第二層也是非常重要的一層,為各種裝置打好了基礎,由於我之前在分析的過程中發現,如果每個細節都一起摳,可能很難將裝置模型的概貌理解清楚,因此,我將採用從整體到局部的方法分析裝置模型第二層,還是因為裡面的東西太過於複雜。那麼我們將哪些給踢掉呢,當然為了將裝置模型的重點給捋出來,我可是費了不少功夫。我們將裝置模型中關於sysfs、class
Time of Update: 2018-12-04
很就沒跟大家聊天了,上次聊還是分析完核心啟動全過程的事情。這幾次發的都是我目前學習裝置模型的心得,把它都總結了起來,然後放到部落格中供大家學習與探討。如果你還記得當時分析到了driver_init()這個函數,那麼太好了,因為下面的內容就是對這個函數進行簡要分析的。如果你沒關注過,那麼也不用太那個什麼,因為這個函數和核心啟動全過程基本沒什麼聯絡,看看它在哪裡就知道了。drivers/base/init.c檔案中,看看目錄就知道,我們開始進入裝置模型這塊內容了,而base/這個目錄將裝置模型的第一
Time of Update: 2018-12-04
現在我們還在關於機器代碼裡晃悠呢,昨天分析了arch/x86/kernel/head_32.S裡面的代碼,彙編的時代已經過去了,現在起,代碼都是C的,很爽啊。我們離大本營越來越近了,裝置模型就在前方不遠處,不過還沒繼續分析完,估計你還在迷糊,在哪裡呢?呵呵,很快的,這一切會在一瞬間就走完,不要太過於留戀太多無聊的東西。現在該是時候跳到昨天說的那裡了。來自arch/x86/kernel/head32.c:void __init i386_start_kernel(void){#ifdef