亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊(cè) 查看新帖 |

Chinaunix

  平臺(tái) 論壇 博客 文庫(kù)
最近訪問板塊 發(fā)新帖
查看: 20047 | 回復(fù): 6
打印 上一主題 下一主題

幾個(gè)Linux驅(qū)動(dòng)面試題 [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2014-08-16 10:56 |只看該作者 |倒序?yàn)g覽
這幾天面試幾個(gè)想做安卓Linux驅(qū)動(dòng)的,總體感覺上驅(qū)動(dòng)基礎(chǔ)還是比較薄弱,大部分情況是雖然做過驅(qū)動(dòng),但是基本上都是采用內(nèi)核現(xiàn)成的,或者是開發(fā)板上已經(jīng)有的,單獨(dú)寫過模塊驅(qū)動(dòng)很少,驅(qū)動(dòng)機(jī)制理解不是很透徹.以下是幾個(gè)隨口問過的基礎(chǔ)問題,供參考.

1、字符型驅(qū)動(dòng)設(shè)備你是怎么創(chuàng)建設(shè)備文件的,就是/dev/下面的設(shè)備文件,供上層應(yīng)用程序打開使用的文件?

2、寫一個(gè)中斷服務(wù)需要注意哪些?如果中斷產(chǎn)生之后要做比較多的事情你是怎么做的?

3、自旋鎖和信號(hào)量在互斥使用時(shí)需要注意哪些?在中斷服務(wù)程序里面的互斥是使用自旋鎖還是信號(hào)量?還是兩者都能用?為什么?

4、原子操作你怎么理解?為了實(shí)現(xiàn)一個(gè)互斥,自己定義一個(gè)變量作為標(biāo)記來(lái)作為一個(gè)資源只有一個(gè)使用者行不行?

5、insmod 一個(gè)驅(qū)動(dòng)模塊,會(huì)執(zhí)行模塊中的哪個(gè)函數(shù)?rmmod呢?這兩個(gè)函數(shù)在設(shè)計(jì)上要注意哪些?遇到過卸載驅(qū)動(dòng)出現(xiàn)異常沒?是什么問題引起的?

6、在驅(qū)動(dòng)調(diào)試過程中遇到過oops沒?你是怎么處理的?

7、ioctl和unlock_ioctl有什么區(qū)別?

8、驅(qū)動(dòng)中操作物理絕對(duì)地址為什么要先ioremap?

9、設(shè)備驅(qū)動(dòng)模型三個(gè)重要成員是?platfoem總線的匹配規(guī)則是?在具體應(yīng)用上要不要先注冊(cè)驅(qū)動(dòng)再注冊(cè)設(shè)備?有先后順序沒?

這些應(yīng)該都是比較基礎(chǔ)的問題吧,但是從實(shí)際情況上來(lái)看,回答的都不是很正確。

論壇徽章:
0
2 [報(bào)告]
發(fā)表于 2014-08-17 18:32 |只看該作者
新手試著回答一下,歡迎指正。

1、字符型驅(qū)動(dòng)設(shè)備你是怎么創(chuàng)建設(shè)備文件的,就是/dev/下面的設(shè)備文件,供上層應(yīng)用程序打開使用的文件?
答:mknod命令結(jié)合設(shè)備的主設(shè)備號(hào)和次設(shè)備號(hào),可創(chuàng)建一個(gè)設(shè)備文件。

2、寫一個(gè)中斷服務(wù)需要注意哪些?如果中斷產(chǎn)生之后要做比較多的事情你是怎么做的?
答:中斷處理例程應(yīng)該盡量短,把能放在后半段(tasklet,等待隊(duì)列等)的任務(wù)盡量放在后半段。

3、自旋鎖和信號(hào)量在互斥使用時(shí)需要注意哪些?在中斷服務(wù)程序里面的互斥是使用自旋鎖還是信號(hào)量?還是兩者都能用?為什么?
答:使用自旋鎖的進(jìn)程不能睡眠,使用信號(hào)量的進(jìn)程可以睡眠。中斷服務(wù)例程中的互斥使用的是自旋鎖,原因是在中斷處理例程中,硬中斷是關(guān)閉的,這樣會(huì)丟失可能到來(lái)的中斷。

4、原子操作你怎么理解?為了實(shí)現(xiàn)一個(gè)互斥,自己定義一個(gè)變量作為標(biāo)記來(lái)作為一個(gè)資源只有一個(gè)使用者行不行?
答:原子操作指的是無(wú)法被打斷的操作。我沒懂第二句是什么意思,自己定義一個(gè)變量怎么可能標(biāo)記資源的使用情況?其他進(jìn)程又看不見這個(gè)變量

5、insmod 一個(gè)驅(qū)動(dòng)模塊,會(huì)執(zhí)行模塊中的哪個(gè)函數(shù)?rmmod呢?這兩個(gè)函數(shù)在設(shè)計(jì)上要注意哪些?遇到過卸載驅(qū)動(dòng)出現(xiàn)異常沒?是什么問題引起的?
答:insmod調(diào)用init函數(shù),rmmod調(diào)用exit函數(shù)。這兩個(gè)函數(shù)在設(shè)計(jì)時(shí)要注意什么?卸載模塊時(shí)曾出現(xiàn)卸載失敗的情形,原因是存在進(jìn)程正在使用模塊,檢查代碼后發(fā)現(xiàn)產(chǎn)生了死鎖的問題。

6、在驅(qū)動(dòng)調(diào)試過程中遇到過oops沒?你是怎么處理的?
沒有。。

7、ioctl和unlock_ioctl有什么區(qū)別?
沒用過unlock_ioctl。。

8、驅(qū)動(dòng)中操作物理絕對(duì)地址為什么要先ioremap?
答:因?yàn)閮?nèi)核沒有辦法直接訪問物理內(nèi)存地址,必須先通過ioremap獲得對(duì)應(yīng)的虛擬地址。

9、設(shè)備驅(qū)動(dòng)模型三個(gè)重要成員是?platfoem總線的匹配規(guī)則是?在具體應(yīng)用上要不要先注冊(cè)驅(qū)動(dòng)再注冊(cè)設(shè)備?有先后順序沒?
這個(gè)真不知道。。

論壇徽章:
0
3 [報(bào)告]
發(fā)表于 2014-08-18 22:38 |只看該作者
1、字符型驅(qū)動(dòng)設(shè)備你是怎么創(chuàng)建設(shè)備文件的,就是/dev/下面的設(shè)備文件,供上層應(yīng)用程序打開使用的文件?
答:mknod命令結(jié)合設(shè)備的主設(shè)備號(hào)和次設(shè)備號(hào),可創(chuàng)建一個(gè)設(shè)備文件。
評(píng):這只是其中一種方式,也叫手動(dòng)創(chuàng)建設(shè)備文件。還有UDEV/MDEV自動(dòng)創(chuàng)建設(shè)備文件的方式,UDEV/MDEV是運(yùn)行在用戶態(tài)的程序,可以動(dòng)態(tài)管理設(shè)備文件,包括創(chuàng)建和刪除設(shè)備文件,運(yùn)行在用戶態(tài)意味著系統(tǒng)要運(yùn)行之后。那么在系統(tǒng)啟動(dòng)期間還有devfs創(chuàng)建了設(shè)備文件。一共有三種方式可以創(chuàng)建設(shè)備文件。
2、寫一個(gè)中斷服務(wù)需要注意哪些?如果中斷產(chǎn)生之后要做比較多的事情你是怎么做的?
答:中斷處理例程應(yīng)該盡量短,把能放在后半段(tasklet,等待隊(duì)列等)的任務(wù)盡量放在后半段。
評(píng):寫一個(gè)中斷服務(wù)程序要注意快進(jìn)快出,在中斷服務(wù)程序里面盡量快速采集信息,包括硬件信息,然后推出中斷,要做其它事情可以使用工作隊(duì)列或者tasklet方式。也就是中斷上半部和下半部。
第二:中斷服務(wù)程序中不能有阻塞操作。為什么?大家可以討論。      
第三:中斷服務(wù)程序注意返回值,要用操作系統(tǒng)定義的宏做為返回值,而不是自己定義的OK,F(xiàn)AIL之類的。

3、自旋鎖和信號(hào)量在互斥使用時(shí)需要注意哪些?在中斷服務(wù)程序里面的互斥是使用自旋鎖還是信號(hào)量?還是兩者都能用?為什么?
答:使用自旋鎖的進(jìn)程不能睡眠,使用信號(hào)量的進(jìn)程可以睡眠。中斷服務(wù)例程中的互斥使用的是自旋鎖,原因是在中斷處理例程中,硬中斷是關(guān)閉的,這樣會(huì)丟失可能到來(lái)的中斷。
評(píng):回答的還可以。
4、原子操作你怎么理解?為了實(shí)現(xiàn)一個(gè)互斥,自己定義一個(gè)變量作為標(biāo)記來(lái)作為一個(gè)資源只有一個(gè)使用者行不行?
答:原子操作指的是無(wú)法被打斷的操作。我沒懂第二句是什么意思,自己定義一個(gè)變量怎么可能標(biāo)記資源的使用情況?其他進(jìn)程又看不見這個(gè)變量
評(píng):第二句話的意思是:
  定義一個(gè)變量,比如 int flag =0;
   if(flag == 0)
  {
       flag = 1;

       操作臨界區(qū);
      flag = 0;
   }這樣可否?
5、insmod 一個(gè)驅(qū)動(dòng)模塊,會(huì)執(zhí)行模塊中的哪個(gè)函數(shù)?rmmod呢?這兩個(gè)函數(shù)在設(shè)計(jì)上要注意哪些?遇到過卸載驅(qū)動(dòng)出現(xiàn)異常沒?是什么問題引起的?
答:insmod調(diào)用init函數(shù),rmmod調(diào)用exit函數(shù)。這兩個(gè)函數(shù)在設(shè)計(jì)時(shí)要注意什么?卸載模塊時(shí)曾出現(xiàn)卸載失敗的情形,原因是存在進(jìn)程正在使用模塊,檢查代碼后發(fā)現(xiàn)產(chǎn)生了死鎖的問題。

評(píng):要注意在init函數(shù)中申請(qǐng)的資源在exit函數(shù)中要釋放,包括存儲(chǔ),ioremap,定時(shí)器,工作隊(duì)列等等。也就是一個(gè)模塊注冊(cè)進(jìn)內(nèi)核,退出內(nèi)核時(shí)要清理所帶來(lái)的影響,帶走一切不留下一點(diǎn)痕跡。
6、在驅(qū)動(dòng)調(diào)試過程中遇到過oops沒?你是怎么處理的?
沒有。。
評(píng):其他人可以接著說(shuō)。
7、ioctl和unlock_ioctl有什么區(qū)別?
沒用過unlock_ioctl。。
評(píng):其他人可以接著說(shuō)。
8、驅(qū)動(dòng)中操作物理絕對(duì)地址為什么要先ioremap?
答:因?yàn)閮?nèi)核沒有辦法直接訪問物理內(nèi)存地址,必須先通過ioremap獲得對(duì)應(yīng)的虛擬地址。
評(píng):其他人可以接著說(shuō)。
9、設(shè)備驅(qū)動(dòng)模型三個(gè)重要成員是?platfoem總線的匹配規(guī)則是?在具體應(yīng)用上要不要先注冊(cè)驅(qū)動(dòng)再注冊(cè)設(shè)備?有先后順序沒?
這個(gè)真不知道。。
評(píng):其他人可以接著說(shuō)。

論壇徽章:
0
4 [報(bào)告]
發(fā)表于 2014-08-18 22:38 |只看該作者
本帖最后由 gz金易龍 于 2014-08-18 22:40 編輯

發(fā)重復(fù)了。

論壇徽章:
0
5 [報(bào)告]
發(fā)表于 2014-08-19 20:23 |只看該作者
回復(fù) 3# gz金易龍

多謝!

第二句話的意思是:
  定義一個(gè)變量,比如 int flag =0;
   if(flag == 0)
  {
       flag = 1;

       操作臨界區(qū);
      flag = 0;
   }這樣可否?


這樣應(yīng)該不能起到互斥的作用。因?yàn)榱硗庖粋(gè)進(jìn)程根本沒有flag這個(gè)變量,自然不用檢查就能進(jìn)入臨界區(qū)。充當(dāng)互斥的變量應(yīng)該是訪問進(jìn)程都可見的

論壇徽章:
0
6 [報(bào)告]
發(fā)表于 2016-03-26 20:54 |只看該作者
設(shè)備驅(qū)動(dòng)模型三個(gè)重要成員       device設(shè)備 driver驅(qū)動(dòng) bus總線

論壇徽章:
0
7 [報(bào)告]
發(fā)表于 2016-04-14 14:38 |只看該作者
做linux驅(qū)動(dòng)好多年了,對(duì)這些問題只能回答三分之一吧,確實(shí)在基礎(chǔ)理論方面比較欠缺。只有實(shí)際工作中經(jīng)常用的東西才會(huì)了解一些。
一些不懂的東西,baidu了一下,

6、在驅(qū)動(dòng)調(diào)試過程中遇到過oops沒?你是怎么處理的?
oops就是kernel在運(yùn)行過程中打印出來(lái)的warning、exceptiont等的信息,一般包含stack信息,調(diào)用過程,
不同有情況不同的處理方法,有些不影響運(yùn)行的warning級(jí)的,都不處理,
7、ioctl和unlock_ioctl有什么區(qū)別?
在2.6.36以后ioctl函數(shù)已經(jīng)不再存在了,而是用unlocked_ioctl和compat_ioctl兩個(gè)函數(shù)實(shí)現(xiàn)以前版本的ioctl函數(shù)。同時(shí)在參數(shù)方面也發(fā)生了一定程度的改變,去除了原來(lái)ioctl中的struct inode參數(shù),同時(shí)改變了返回值。
compat_ioctl主要是在64位系統(tǒng)中可能會(huì)用到,
您需要登錄后才可以回帖 登錄 | 注冊(cè)

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號(hào)-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號(hào):11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報(bào)專區(qū)
中國(guó)互聯(lián)網(wǎng)協(xié)會(huì)會(huì)員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請(qǐng)注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP