自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

學(xué)會Linux Kernel熟練Linux

系統(tǒng) Linux
在當(dāng)今社會Linux越來越成為主流,你了解Linux系統(tǒng)么?本文為你介紹Linux Kernel,Linux Kernel有一個很好的特性,可以支持在運(yùn)行是進(jìn)行擴(kuò)展。

在當(dāng)今社會Linux越來越成為主流,你了解Linux系統(tǒng)么?本文為你介紹Linux Kernel,Linux Kernel有一個很好的特性,可以支持在運(yùn)行是進(jìn)行擴(kuò)展。這意味著系統(tǒng)啟動運(yùn)行是,我們?nèi)匀豢梢韵騆inux kernel添加功能。這種運(yùn)行時可以被添加到kernel的代碼稱為Module(模塊)。

Linux Kernel支持好幾種模塊類型,包括設(shè)備驅(qū)動程序。每個模塊由目標(biāo)代碼組成,不是一個完整的可執(zhí)行程序。系統(tǒng)運(yùn)行時,我們可以通過insmod將模塊連接到正在運(yùn)行的內(nèi)核中去。也可以使用lsmod列出已加載模塊,rmmod或modprobe –r 移除模塊。

Linux系統(tǒng)將設(shè)備分為三種基本類型:字符設(shè)備,塊設(shè)備,網(wǎng)絡(luò)接口。

字符設(shè)備是能夠像字節(jié)流一樣被訪問的設(shè)備,一般只能順序訪問。其操作類似文件操作。

塊設(shè)備上能夠容納文件系統(tǒng),可以通過文件系統(tǒng)隨機(jī)訪問。其操作也類似于文件操作。

網(wǎng)絡(luò)接口是負(fù)責(zé)數(shù)據(jù)包的傳輸和接收的,一般無法影射到文件系統(tǒng)的節(jié)點(diǎn)。它與內(nèi)核的通信跟前面兩種設(shè)備不同,而是通過socket方式。在系統(tǒng)和驅(qū)動程序之間定義有專門的數(shù)據(jù)結(jié)構(gòu)(sk_buff)進(jìn)行數(shù)據(jù)的傳遞。系統(tǒng)里支持對發(fā)送數(shù)據(jù)和接收數(shù)據(jù)的緩存,提供流量控制機(jī)制,提供對多協(xié)議的支持。

在編寫模塊的時候,應(yīng)該注意,模塊僅僅被連接到內(nèi)核,所以它只能調(diào)用由內(nèi)核導(dǎo)出的那些函數(shù),而不能調(diào)用其他的本模塊未定義的函數(shù)。

在Linux kernel2.6.X下進(jìn)行模塊開發(fā)時,需要預(yù)先準(zhǔn)備好“kernel tree(內(nèi)核樹)”,即獲得與本系統(tǒng)相同的內(nèi)核的源代碼并編譯出目標(biāo)文件。

一個最簡單的hello world驅(qū)動例子:

  1. hello_world.c:     
  2. #include <linux/init.h>    
  3. #include <linux/module.h>    
  4. MODULE_LICENSE("Dual BSD/GPL");     
  5. static int hello_init(void)     
  6. {     
  7. printk(KERN_ALERT "Hello, world\n");     
  8. return 0;     
  9. }     
  10. static void hello_exit(void)     
  11. {     
  12. printk(KERN_ALERT "Goodbye, cruel world\n");     
  13. }     
  14. module_init(hello_init);     
  15. module_exit(hello_exit);   
  1. Makefile:  
  2. obj-m :hello.o  
  3. KERNELDIR ?= /lib/modules/$(shell uname -r)/build  
  4. PWD := $(shell pwd)  
  5. default:  
  6. $(MAKE) -C $(KERNELDIR) M=$(PWD) modules 

其中,源文件中的module_init和module_exit指定了模塊被加載時執(zhí)行的初始化函數(shù)和卸載時執(zhí)行的清理函數(shù)。另外可以使用module_param指定加載模塊時可以設(shè)置的參數(shù)。Makefile中的obj-m指定了使用make modules時候構(gòu)造*.ko目標(biāo)文件時使用的*.o目標(biāo)文件。

Linux Kernel的了解,讓你學(xué)好Linux。

【編輯推薦】

  1. 教你四種安裝Linux方法
  2. 詳解嵌入式Linux驅(qū)動入門
  3. 20年風(fēng)雨歷程:Linux嵌入式
  4. 10個***的自由Linux平臺ERP軟件
  5. 全面解讀嵌入式Linux
責(zé)任編輯:小霞 來源: 中國IT實驗室
相關(guān)推薦

2010-01-26 09:07:50

2010-01-19 09:23:50

2009-04-28 18:19:25

2009-08-21 15:40:26

Linux KerneLinux開發(fā)加速

2013-11-18 11:57:47

Linux KerneLinux 3.13

2013-12-09 16:37:05

Linux內(nèi)核Linux Kerne

2014-06-18 10:07:36

Linux 3.16

2014-07-07 17:23:55

Linux Kerne

2020-10-18 10:11:01

漏洞

2009-02-18 20:27:44

Linux下載Kernel 2.6.

2010-05-18 11:05:44

Linux Kerne

2010-08-03 10:04:51

Linux Kerne

2011-07-27 16:12:35

Linux KerneLinux內(nèi)核

2009-03-20 11:41:03

Linuxkernellogo

2013-07-01 16:12:24

Linux 3.10Linux

2009-03-01 22:23:39

LinuxKernelLinuxDNA

2013-09-09 15:35:35

Linux

2013-10-08 09:35:37

Linux Kerne

2009-02-13 09:03:18

Linux下載Linux Kerne2.6.28.5

2009-09-08 10:48:25

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號