後繼無人:Linux核心維護人員日漸蒼老

    一年一度的Linux開發人員大會上周在舊金山舉行,會上Linux基金會執行理事Jim Zemlin表示,得益於雲端運算以及其它科技潮流的出現,Linux的市場地位十分穩固,然而一些主要的維護人員已經日漸蒼老,後繼者卻還沒有成熟。   sysfs核心子系統維護者Grey Kroah-Hartman指出:“上層的人員仍然沒有變動,我們都還在,不過保持持續的人員變動是必要的,如果我們已經阻礙了Linux的發展,那麼請 告知我們。”SCSI子系統維護者James

Linux記憶體管理之kmalloc 與 __get_free_page()

            在裝置驅動程式中動態開闢記憶體,不是用malloc,而是kmalloc,或者用get_free_pages直接申請頁。釋放記憶體用的是kfree,或free_pages.  對於提供了MMU(儲存管理器,輔助作業系統進行記憶體管理,提供虛真實位址轉換等硬體支援)的處理器而言,Linux提供了複雜的儲存管理系統,使得進程所能訪問的記憶體達到4GB。  進程的4GB記憶體空間被人為的分為兩個部分--使用者空間與核心空間。使用者空間地址分布從0到3GB(PAGE_OFFSET,

[經典]Linux核心中get_free_page、kmalloc和vmalloc函數的區別(樣本Module)

  對於提供了MMU(儲存管理器,輔助作業系統進行記憶體管理,提供虛真實位址轉換等硬體支援)的處理器而言,Linux提供了複雜的儲存管理系統,使得進程所能訪問的記憶體達到4GB。  進程的4GB記憶體空間被人為的分為兩個部分--使用者空間與核心空間。使用者空間地址分布從0到3GB(PAGE_OFFSET,在0x86中它等於0xC0000000),3GB到4GB為核心空間。如所示:  核心空間中,從3G到vmalloc_start這段地址是實體記憶體映射地區(該地區中包含了核心鏡像、物理頁框表me

Linux下chmod 和 chown 命令備忘

指令名稱 : chmod 使用許可權 : 所有使用者 使用方式 : chmod [-cfvR] [--help] [--version] mode file... 說明 : Linux/Unix 的檔案存取許可權分為三級 : 檔案擁有者、群組、其他。利用 chmod 可以藉以控制檔案如何被他人所存取。 mode : 許可權設定字串,格式如下 : [ugoa...][[+-=][rwxX]...][,...],其中u 表示該檔案的擁有者,g 表示與該檔案的擁有者屬於同一個群體(group)者,o

Linux 編程段錯誤(segmentation error)總結

   最近一段時間在linux下用C做一些學習和開發,但是由於經驗不足,問題多多。而段錯誤就是讓我非常頭痛的一個問題。不過,目前寫一個一千行左右的代碼,也很少出現段錯誤,或者是即使出現了,也很容易找出來,並且處理掉。    那什麼是段錯誤?段錯誤為什麼是個麻煩事?以及怎麼發現程式中的段錯誤以及如何避免發生段錯誤呢?    一方面為了給自己的學習做個總結,另一方面由於至今沒有找到一個比較全面介紹這個雖然是“particular

Linux核心源碼Kconfig文法分析

linux在2.6版本以後將設定檔由原來的config.in改為kconfig,對於kconfig的文法在/Documentation/kbuild/kconfig-language.txt中做了詳細的說明,在這裡給出kconfig-language.txt的中文版。介紹----在設定資料庫的配置選項是以樹的形式組織的:   +- Code maturity level options   | +- Prompt for development and/or incomplete

Linux核心中printk與記錄層級

     函數printk的使用方法和printf相似,用於核心列印訊息。printk根據記錄層級(loglevel)對訊息進行分類。記錄層級用宏定義,記錄層級宏展開為一個字串,在編譯時間由前置處理器將它和訊息文本拼接成一個字串,因此printk 函數中記錄層級宏和格式字串間不能有逗號。   下面是兩個printk的例子,一個用於列印調試資訊,另一個用於列印臨界條件資訊。printk(KERN_DEBUG "Here I am: %s:%i/n", _ _FILE_ _, _ _LINE_ _)

Linux核心模組編程簡介

主題: linux核心模組的程式結構--模組載入函數(必須),模組卸載函數(必須),模組許可證聲明(必須),模組參數(可選),模組匯出符號(可選),模組作者的等資訊聲明(可選)一個linux核心模組主要由以下幾個部分組成。1、模組載入函數"用module_init()來指定"(必須)   當通過insmod和modprobe命令載入核心模組時,模組的載入函數會自動被核心執行,完成本模組的相關初始化工作。linux模組載入函數一般以 __init表示聲明。典型聲明如下::static int __

Linux proc file system for module development

建立一個 proc 檔案根據對 proc 檔案的不同使用,核心提供了多種封裝函數來建立一個 proc 檔案。方法一:struct proc_dir_entry *create_proc_entry(const char *name, mode_t mode, struct proc_dir_entry *parent)這是最直接,封裝最少的建立方法。參數 name 是要建立的 proc 檔案名稱。mode 是該檔案許可權值,例如 S_IRUGO,可傳入0表示採用系統預設值。parent

Linux核心中常見的結構體對象中的函數指標賦值操作

常見的賦值操作兩種方法都可實現,Linux核心編程的相關書籍中看到方法一較多,周立功編寫的linux系統構建於驅動程式開發範例中見到的是方法二,於是奇怪,編寫兩種代碼實驗,都成功。賦值操作 方法一:static struct file_operations File_Ops_4_Our_Proc_File = {.read = module_output,.write = module_input,.open = module_open,.release =

Linux記憶體線性地址空間布局解析

 Linux記憶體線性地址空間大小為4GB,分為2個部分:使用者空間部分(通常是3G)和核心空間部分(通常是1G)。在此我們主要關注核心地址空間部分。核心通過核心頁全域目錄來管理所有的實體記憶體,由於線性地址前3G空間為使用者使用,核心頁全域目錄前768項(剛好3G)除0、1兩項外全部為0,後256項(1G)用來管理所有的實體記憶體。核心頁全域目錄在編譯時間靜態地定義為swapper_pg_dir數組,該數組從實體記憶體地址0x101000處開始存放。由圖可見,核心線性地址空間部分從PAGE_O

linux下的framebuffer的例子)

例子實現了直接寫屏的功能,即把螢幕清空(變黑),程式的流程大致為:開啟一個FrameBuffer裝置;通過mmap調用把顯卡的實體記憶體空間映射到使用者空間;通過映射關係直接寫記憶體。標頭檔///////////////////////////////////////////////////// fbtools.h ////////////////////////////////////////////////////////#ifndef _FBTOOLS_H_#define

Linux下多線程(pthread)編程執行個體

Linux系統下的多線程遵循POSIX線程介面,稱為 pthread。編寫Linux下的多線程程式,需要使用標頭檔pthread.h,串連時需要使用庫libpthread.a。順便說一下,Linux 下pthread的實現是通過系統調用clone()來實現的。clone()是 Linux所特有的系統調用,它的使用方式類似fork,關於clone()的詳細情況,有興趣的讀者可以去查看有關文檔說明。下面我們展示一個最簡單的多線程程式

Linux下的定時器:alarm()與setitimer()

Linux下的定時器有兩種,以下分別介紹:1、alarm如果不要求很精確的話,用alarm()和signal()就夠了unsigned int alarm(unsigned int seconds)函數說明: alarm()用來設定訊號SIGALRM在經過參數seconds指定的秒數後傳送給目前的進程。如果參數seconds為0,則之前設定的鬧鐘會被取消,並將剩下的時間返回。傳回值: 返回之前鬧鐘的剩餘秒數,如果之前未設鬧鐘則返回0。alarm()執行後,進程將繼續執行,在後期(alarm以後)

宏核心與微核心,Linux核心與Unix核心

 作業系統核心可能是微核心,也可能是單核心(後者有時稱之為宏核心Macrokernel)。按照類似封裝的形式,這些術語定義如下:   單核心:也稱為宏核心。將核心從整體上作為一個大過程實現,並同時運行在一個單獨的地址空間。所有的核心服務都在一個地址空間運行,相互之間直接調用函數,簡單高效。微核心:功能被劃分成獨立的過程,過程間通過IPC進行通訊。模組化程度高,一個服務失效不會影響另外一個服務。Linux是一個單核心結構,同時又吸收了微核心的優點:模組化設計,支援動態裝載核心模組。Linux還避免

解讀linux對string.h函數的實現

/* file:string.h #ifndef _LINUX_STRING_H_ #define _LINUX_STRING_H_ /* We don't want strings.h stuff being user by user stuff by accident */ #ifdef __KERNEL__ #include <linux/types.h> /* for size_t */ #include <linux/stddef.h> /* for NULL

不可不知的 Linux 十項重大發展

慶祝 Linux 成功 10 年 Linux技術、開發模型和社區都對 IT 業產生了重要的影響,我們能做的就是站到一邊看看這些,很高興與 developerWorks 一起度過了第一個 10 年。Linux 團隊已經將這些對 Linux 產生重大影響的內容整理到一起。CONTENT GOES HERE-->過去 10 年裡,Linux 發生了太多的事情,很難完整地列出該作業系統的重要事件和技術改進。儘管如此,為了慶祝我們的十歲生日,Linux

linux-2.6核心模組引用計數的實現(try_module_get和module_put)

linux-2.6核心模組引用計數的實現作者:劉洪濤,華清遠見嵌入式學院金牌講師。 一、模組使用計數的背景知識    模組是一種可以在核心運行過程中動態載入、卸載的核心功能組件。2.6核心中模組的命名方式為*.ko。模組在被使用時,是不允許被卸載的。編程時需要用“使用計數”來描述模組是否在被使用。二、2.4核心使用計數的實現方法    2.4核心中,模組自身通過 MOD_INC_USE_COUNT,

Linux的核心模組管理命令

核心模組管理是學習Linux的一個重要的必經之路,如果不斷的使用新硬體可能這方面更顯得尤為重要。1. lsmod 列出已經載入的核心模組lsmod 是列出目前系統中已載入的模組的名稱及大小等;另外我們還可以查看 /proc/modules ,我們一樣可以知道系統已經載入的模組。 2.modinfo 查看模組資訊modinfo 可以查看模組的資訊,通過查看模組資訊來判定這個模組的用途。 3.modprobe 掛載新模組以及新模組相依賴的模組  modprobe

Linux Assembly “Hello World” Tutorial, CS 200

 by Bjorn Chambless IntroductionThe following is designed familiarize the reader with programming in x86 (AT&Tstyle, that produced by gcc) assembly under Linux and how to interface assemblyand higher-level language code (i.e. C). The tutorial

總頁數: 3772 1 .... 418 419 420 421 422 .... 3772 Go to: 前往

Beyond APAC's No.1 Cloud

19.6% IaaS Market Share in Asia Pacific - Gartner IT Service report, 2018

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。