看UNIX相關的書時經常能遇到這幾個概念,但一直沒有好好去理清這幾個概念,以致對這幾個概念一直一知半解。今天好好區分了一下這幾個概念並總結如下。說白了這幾個UID引出都是為了系統的權限管理。下面分別用RUID, EUID,SUID來表示實際用戶ID,
我這裡用到的Linux內核版本是linux2.6.33.3其實添加系統調用是一件很簡單的事情,因為你只是定義一些處理函數,添加符號表,其他的調度都是由內核來幫忙做的。1.下載內核 http://www.kernel.org/pub/Linux/ker
前言之前讀了關於順序一致性和緩存一致性討論的文章,感覺豁然開朗。對linux內核中出現的種種同步和屏障,想做一點總結。緩存一致性之前一直認為linux中很多東西是用來保證緩存一致性的,其實不是。緩存一致性絕大部分是靠硬件機制實現的,只有在帶lock前
經過之前的摸索,對Linux內核的學習有一些自己的看法,就列一下自己支持的學習方法:1、要選最新的內核去學。Linux內核版本變化太快了。Linux 0.11就是一個自己動手寫操作系統的范例,而到Linux 2.4則發展到百萬行級,被移植到各種平台。
在linux內核中,有一種通用的雙向循環鏈表,構成了各種隊列的基礎。鏈表的結構定義和相關函數均在include/linux/list.h中,下面就來全面的介紹這一鏈表的各種API。 struct list_head {
在Linux內核中,經常會看到do{}while(0)這樣的語句,剛開始會疑惑,認為do{}while(0)毫無意義,因為它只會執行一次,加不加do{}while(0)效果是完全一樣的,其實do{}while(0)只要用於宏定義中。這裡用以個簡單點的
以下操作均要root權限.sudo su(這樣子比較方便,一次性取得root權限)1:下載好linux-2.6.39.tar.bz(內核文件) 2:tar -jxvf /path/to/linux-2.6.39.tar.bz -C /us
在學習Linux內核移植部分,今天先在虛擬機上安裝linux-3.0.8上做個雙系統。內核配置:我們一般是找一個配置好的內核配置文件.config來作為配置參考步驟1.make clean/ make mrproper/make distclean清
[THIS_MODULE]模塊是一種可以在內核運行過程中動態加載、卸載的內核功能組件。2.6內核中模塊在被使用時,是不允許被卸載的。編程是需要用”使用計數”來描述模塊是否在被使用。THIS_MODULE就充當了這個功能。[likely& un
[臨界區和競爭條件]所謂臨界區就是訪問和操作共享數據的代碼段。多個執行線程並發訪問同一個資源通常是不安全的,為了避免在臨界區中並發訪問,coder必須保證這些代碼原子執行。如果兩個執行線程有可能處於同一個臨界區中同時執行,那麼這就是程序包含的一個bu
[中斷概述]中斷本質上是一種特殊的電信號,由硬件設備發向處理器。異常和中斷的不同是異常在產生時必須考慮與處理器時鐘同步。實際上異常也常常稱為同步中斷。比如在除0或者缺頁時,必須靠內核處理的時候,處理器就會產生一個異常。[中斷處理機制的實現] 
Linux自從2.6.20之後,工作隊列發生了一些變化,目前從網絡上搜索的資料一般都是介紹老版本的工作隊列,很少見到對新版本的介紹。本文對新老版本都做了簡要概述,並分別提供了簡單的實作案例。工作隊列(work queue)是Linux kernel中
CRC: Cyclic redundancy check 循環冗余校驗內核中使用的crc16計算方法位於代碼樹/lib/crc16.c文件中crc32的計算方法位於代碼樹/lib/crc32.c文件中均采用了查表法其中crc32的表由代碼樹/lib/
這一段時間分三步完成1,啟動BIOS,准備實模式下的中斷向量表和中斷服務程序。2,加載操作系統到內存。用步驟1中准備的中斷服務程序實現。3,為執行main函數做過渡工作。一,啟動BIOS靠硬件方法來啟動BIOS,BIOS程序入口地址0xFFFF0。加
開發平台:Ubuntu11.04 編 譯器:gcc version 4.5.2 (Ubuntu/Linaro4.5.2-8ubuntu4) Cont
內核版本:2.6.22 為什麼要采用這樣一個較低的版本進行移植了,因為韋東山大牛說了,低版本的才能學到東西,越是高版本需要移植時做的工作量越少,學的東西越少。 內核啟動分為三個階段,第一是運行head.S文件和head-common.S,
1.由ip_conntrack引出的Linux內存映射有很多文章在討論關於ip_conntrack表爆滿之後丟棄數據包的問題,對此研究深入一些的知道Linux有個內核參數ip_conntrack_max,在擁有較大內存的機器中默認65536,於是瘋狂
Linux缺頁異常程序必須能夠區分由編程引起的異常以及由引用屬於進程地址空間但還尚未分配物理頁框的頁所引起的異常。在x86-ia32體系上由do_page_fault函數處理,每個版本有所差異,現分析的版本為2.6.32 /*