成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

學(xué)會(huì)Linux Kernel熟練Linux

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

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

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

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

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

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

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

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

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

一個(gè)最簡(jiǎn)單的hello world驅(qū)動(dòng)例子:

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

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

【編輯推薦】

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

2010-01-19 09:23:50

2010-01-26 09:07:50

2009-04-28 18:19:25

2009-08-21 15:40:26

Linux KerneLinux開(kāi)發(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-12-21 14:25:47

Linux內(nèi)核

2009-12-23 15:55:53

Linux權(quán)限管理

2009-02-18 20:27:44

Linux下載Kernel 2.6.

2009-03-20 11:41:03

Linuxkernellogo

2010-08-03 10:04:51

Linux Kerne

2010-05-18 11:05:44

Linux Kerne

2011-07-27 16:12:35

Linux KerneLinux內(nèi)核

2013-07-01 16:12:24

Linux 3.10Linux

2009-09-08 10:48:25

2009-03-01 22:23:39

LinuxKernelLinuxDNA

2013-09-09 15:35:35

Linux
點(diǎn)贊
收藏

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

主站蜘蛛池模板: av黄色国产| 免费视频二区 | 国产精品成人一区二区 | 97精品视频在线 | 国产精品一区二区久久久久 | 成人在线免费 | av在线视 | 综合自拍| 最新高清无码专区 | 国产精品成人一区二区 | 国产成在线观看免费视频 | 中文字幕一区二区三区不卡在线 | 国产一区二区精品在线 | 亚洲欧洲精品在线 | 成人午夜免费福利视频 | 国产激情视频在线 | 国产乱码久久久久久 | 国产精品美女久久久久aⅴ国产馆 | 国产免费一区二区 | 欧美video| www.五月婷婷.com | 久久99视频精品 | 国产亚洲精品精品国产亚洲综合 | 日韩精品一区二区三区高清免费 | 欧美中文字幕在线 | a看片| 精品欧美色视频网站在线观看 | 成人一区二区在线 | 毛片一区二区三区 | 欧美 日韩 在线播放 | av中文在线观看 | 99热热 | 日韩一区二区久久 | 乱码av午夜噜噜噜噜动漫 | 91在线观看免费 | 在线免费av观看 | 午夜www| 国产精品入口久久 | 国产一区二区影院 | 久久最新 | 精品一区二区免费视频 |