Linux Dri Dev 期末考試簡答題

2021-10-07 05:32:00 字數 3723 閱讀 3067

名字相同的不同函式的區別。

kmalloc函式與vmalloc函式的區別

來自csdn

kmalloc()

用於申請較小的、連續的物理記憶體

以位元組為單位進行分配,在中

void *kmalloc(size_t size, int flags) 分配的記憶體實體地址上連續,虛擬》位址上自然連續

gfp_mask標誌:什麼時候使用哪種標誌?如下:

———————————————————————————————-

情形 相應標誌

———————————————————————————————-

程序上下文,可以睡眠 gfp_kernel

程序上下文,不可以睡眠 gfp_atomic

中斷處理程式 gfp_atomic

軟中斷 gfp_atomic

tasklet gfp_atomic

用於dma的記憶體,可以睡眠 gfp_dma | gfp_kernel

用於dma的記憶體,不可以睡眠 gfp_dma | gfp_atomic

———————————————————————————————-

void kfree(const void *ptr)

釋放由kmalloc()分配出來的記憶體塊

vmalloc()

用於申請較大的記憶體空間,虛擬記憶體是連續的

以位元組為單位進行分配,在中

void *vmalloc(unsigned long size) 分配的記憶體虛擬位址上連續,實體地址》不連續

一般情況下,只有硬體裝置才需要實體地址連續的記憶體,因為硬體裝置往往存在於》mmu之外,根本不了解虛擬位址;但為了效能上的考慮,核心中一般使用 kmalloc()>,而只有在需要獲得大塊記憶體時才使用vmalloc(),例如當模組被動態載入到核心當》中時,就把模組裝載到由vmalloc()分配 的記憶體上。

void vfree(void *addr),這個函式可以睡眠,因此不能從中斷上下文呼叫。

malloc(), vmalloc()和kmalloc()區別

在linux驅動當中引入模組機制,模組機制是什麼,有什麼好處。

1.在系統執行動態載入模組,擴充核心的功能。不需要時可以解除安裝。

2.修改核心功能,不必重新全部編譯整改核心,只需要編譯相應模組即可。

3.模組目標**一旦被加載重定位到核心,其作用域和靜態鏈結的**完全等價。

以下來自書本

模組是可以在執行時加入核心的**,這是 linux乙個很好的特性.

這個特性使核心可以很容易地擴大或者縮小,一方面擴大核心可以增加核心的功能,另一方面縮小核心可以減小核心的大小.

linux裝置包含那三個方面?字元,塊裝置,網路裝置,字元和塊的區別,字元裝置與塊裝置的舉例。

以下來自ppt

linux系統將裝置分為3種型別:字元裝置、塊裝置和網路介面裝置。其中字元裝置和塊裝置難以區分,這裡將對其進行重要講解。

1.字元裝置

2.塊裝置

3.字元裝置和塊裝置的區分

以下來自書本6.1

6.1.1字元裝置和塊裝置

linux系統將裝置分為3種型別:字元裝置、塊裝置和網路介面裝置.

其中字元裝置和塊裝置難以區分,下面將對其進行重要講解

1.字元裝置

字元裝置是指那些只能乙個位元組乙個位元組讀寫資料的裝置,不能隨機讀取裝置記憶體中的某一資料.其讀取資料需要按照先後順序,從這點來看,字元裝置是面向資料流的裝置.常見的字元有滑鼠、鍵盤、串列埠、控制台和led等裝置

2.塊裝置塊

裝置是指那些可以從裝置的任意位置讀取一定長度資料的裝置.其讀取資料不必按照先後順序,可以定位到裝置的某一具體位置,讀取資料.常見的塊裝置有硬碟、磁碟、 u盤、sd卡等.

乙個字元的驅動編譯到核心中主要步驟。

以下來自網頁

第一步:準備module源**,根據實際情況,在核心目錄的相應位置新建相應資料夾,並將源**拷貝進去

第二步:在該相應目錄下與上一級目錄中,編寫kconfig檔案,構成完整的kconfig樹

第三步:在該相應目錄下與上一級目錄中,編寫配套makefile檔案,使kconfig檔案生效

第四步:在核心根目錄下編譯安裝(make make install)

linux核心中併發有哪些機制,有哪些原因,避免併發的方式和機制。

來自ppt

併發是指在作業系統中,乙個時間段中有幾個程式都處於已啟動執行到執行完畢之間,且這幾個程式都是在同乙個處理機上執行,但任乙個時刻點上只有乙個程式在處理機上執行。併發容易導致競爭的問題。競爭就是兩個或者兩個以上的程序同時訪問乙個資源,從而引起資源的錯誤。

來自書本

避免併發的方式和機制

1.原子變數操作

2.自旋鎖機制

3.訊號量機制

4.完成量機制

交叉編譯環境安裝。

來自csdn

交叉編譯環境搭建

建立完模組以後,如何建立乙個裝置,關鍵引數解釋。

來自網頁(不確定正確與否)

1) void cdev_init(struct cdev *cdev, struct file_operations *fops)

該註冊函式可以將cdev結構嵌入到自己的裝置特定的結構中。cdev是乙個指向結構體cdev的指標,而fops是指向乙個類似於file_operations結構(可以是file_operations結構,但不限於該結構)的指標.

中斷與dma的區別。常見中斷服務有哪些?如果中斷之後有哪些事情要做。中斷處理函式做了哪些事情。

中斷與dma的區別

來自網頁

dma:是一種無須cpu的參與就可以讓外設與系統記憶體之間進行雙向資料傳輸的硬體機制,使用dma可以使系統cpu從實際的i/o資料傳輸過程中擺脫出來,從而大大提高系統的吞吐率.

中斷:是指cpu在執行程式的過程中,出現了某些突發事件時cpu必須暫停執行當前的程式,轉去處理突發事件,處理完畢後cpu又返回源程式被中斷的位置並繼續執行。

所以中斷和dma的區別就是dma不需cpu參與而中斷是需要cpu參與的。

來自網頁

1、中斷方式是在資料緩衝寄存區滿後,發中斷請求,cpu進行中斷處理,dma方式則是以資料塊為單位傳輸的,在所要求傳送的資料塊全部傳送結束時要求cpu進行中斷處理,這樣大大減少cpu進行中斷處理的次數

dma方式不需cpu干預傳送操作,不占用cpu任何資源,中斷方式是程式切換,每次操作需要保護和恢復現場,中斷次數多,cpu需要花較多的時間處理中斷,中斷次數多也會導致資料丟失。

2、中斷方式的資料傳送方向是由裝置到cpu再到記憶體,或者相反。

dma方式的資料傳送則是將所傳輸的資料由裝置直接送入記憶體,或是由記憶體直接送到裝置。

生活感想 期末考試

期末考試成績出來了 差強人意 有所進步 但還是打不到最好的水平 小花在旁邊長吁短嘆 真受不了 我最近不想談成績 一談成績就容易惱 但是現在成績出來了 也該寫寫 現在心裡平靜了很多 總而言之 除了物理壓力很大 粗心錯了一道大題12分嗷嗷嗷要知道我和小花差了1.8分就八個人啊tut 其他的各項還好 數學...

期末考試題

1.假設屬性income的最大最小值分別是16000元和29000元。利用最大最小規範化的方法將屬性的值對映到0至1的範圍內。對屬性income的26000元將被轉化為 0.769 26000 16000 29000 16000 0.769 2.由8人組成的科研團隊的工資分別為 10,16,20,2...

757 期末考試

時間限制 1000 ms 記憶體限制 65535 kb 難度 2 描述 馬上就要考試了,小t有許多作業要做,而且每個老師都給出來了作業要交的期限,如果在規定的期限內沒 交作業就會扣期末成績的分數,假設完成每門功課需要一天的時間,你能幫助小t扣除的分數最小嗎?輸入輸入n,表示n門功課 n 2000 接...