導航:首頁 > 編程知識 > ke哪些編程軟體Linux

ke哪些編程軟體Linux

發布時間:2025-04-01 00:37:22

1. linux怎麼讀翻譯成中文是什麼謝謝。

Linux怎麼讀?在中文中,它通常讀作「利納斯」。具體讀音分解為四個音節:
第一個音:「li」讀第一聲;第二個音:「na」讀第三聲;第三個音:「ke」讀第三聲;第四個音:「si」讀輕聲。

Linux的具體意思是什麼呢?Linux是一種類Unix計算機操作系統,其核心也被稱為「Linux」。從嚴格意義上講,Linux這個詞僅僅指代Linux內核。但在實際應用中,人們習慣於用「Linux」來指代基於Linux內核並結合了GNU工程的各種工具和庫文件的操作系統。

Linux這個名稱來源於計算機愛好者Linus Torvalds。它不僅是開源軟體和自由軟體的一個典型例子,也是開放源代碼發展中的著名案例。

准確、快速地回答問題,是我的服務宗旨。希望您滿意並採納我的回答。

2. Linux內存泄漏調試利器-valgrind

valgrind是一個提供了一些debug和優化工具的工具箱,能夠有效減少程序中的內存泄漏或錯誤訪問。默認使用memcheck模塊來檢測內存問題。memcheck模塊檢測內存問題的關鍵在於建立兩個全局表,以此來跟蹤內存使用情況。



使用valgrind的命令選項需注意:基本命令格式為valgrind --leak-check=yes ./a.out arg1 arg2。為了能在源代碼中准確定位問題,建議在編譯時添加-g選項並選擇O0優化。



接下來,我們通過一個示例代碼展示valgrind的使用方法和結果解析。執行valgrind檢測後,輸出結果如下:



==393==:此為執行程序的進程ID


Invalid write of size 4:表示程序在源代碼第6行出現了錯誤,顯然這里存在越界訪問的情況,因此報出invalid write錯誤。


40 bytes in 1 blocks are definitely lost in loss record 1 of 1:說明程序存在內存泄露問題,泄露的大小為10個int類型的40位元組。


LEAK summary也會展示內存泄露的總體情況。



若想深入學習Linux內核源碼分析,可以參考以下鏈接:ke.qq.com/course/403254...



對於內存問題的分析,valgrind能夠提供如下幾種常見類型:



4.1 寫入非法內存地址



當訪問分配的內存區域之外的空間時,valgrind會報出類似以下錯誤信息:


Invalid write of size x


後接調用棧信息



4.2 讀取非法內存地址



與寫入非法內存地址類似,但此時是讀取而不是寫入,錯誤信息格式為:


Invalid read of size x


後接調用棧信息



4.3 讀取未初始化內存區域



訪問未初始化的內存區域時,valgrind會顯示以下錯誤:



4.4 內存雙重釋放



當程序嘗試釋放已經被釋放的內存時,valgrind會報出如下錯誤,顯示兩次free的位置:



轉載於:https://mp.weixin.qq.com/s/DPeQk7n2ZyMWXDJ0zYrVjg

3. workqueue(linux kernel 工作隊列)

工作隊列允許我們把工作推遲完成,或是把高耗時的任務放在另一個線程執行。簡單說就是我們定義一個「工作函數」,然後在任意位置,可以觸發一次這個函數的運行。並且這個「工作函數」是在其它線程執行的,不會阻塞觸發者。例如在中斷函數里,不宜執行太復雜的邏輯,那麼就可以把相關的邏輯交給工作隊列來做,在中斷函數中只做一個「觸發工作函數運行」的動作,然後就可以退出中斷了。這就是linux的「中斷下半部」。linux官方是不提倡內核開發者使用線程(kethread)的,所以一些需要線程來處理的邏輯,我們也可以用工作隊列來實現。

每個工作隊列都對應一條或多條工作者線程,由這些工作者線程將隊列中等待執行的工作逐一出隊、執行。而觸發一次工作,則是把這個工作任務加入到隊列中,排隊等待執行。由於其本質是線程,所以隊列中的工作函數是允許睡眠的。這是「中斷下半部」選擇workqueue還是tasklet(不可睡眠)的重要依據。另外,工作隊列不僅支持非同步執行,還支持延遲執行,即讓指定的工作任務在特定的延時後再執行。

CMWQ全稱叫「並發管理工作隊列」。要理解這個名稱,我們首先要理清除幾個概念:當管理者只有一名工人的時候,所有工作任務就只能一件一件的按順序完成了。但如果給這個管理者配置一個人才儲備庫,那麼當第一名工人的工作任務遇到阻塞不能馬上完成時,管理者就可以從人才儲備庫抽調第二名工人,讓其馬上開始做第二份工作任務。依次類推,這樣就能在更短的時間內完成多份工作。當一名工人完成一份工作任務後,若是沒有新工作任務可分配,就可以把這名工人還回給人才儲備庫,讓其他的管理者可以調用,不會浪費資源。工作任務自然就是我們指定的「工作函數」,而「工作任務遇到阻塞」就是「工作函數中遇到睡眠」。以下為一個例子,分別使用兩種模式運行兩個「執行1秒-睡眠1秒後結束」的任務(w0、w1)。

使用workqueue的步驟如下:①包含頭文件 #include;②聲明一個工作變數 struct work_struct(如果要有延時功能,則是延時工作變數 struct delayed_work);③實現一個工作函數 void *work_fun(structwork_struct*work);④初始化工作(綁定work函數);⑤激活一次工作(work函數將被調用)。以下是使用系統共用隊列來運行work的例子。運行結果是:所以 demo_work 和 demo_init 是並行運行的,其中的延時不會阻塞 schele_work 調用者,相當於在另外一條線程執行。但是,這個demo_work是會佔用系統工作隊列的資源的,如果工作池(線程池)已耗盡,那麼這個1秒延時就會阻塞別的任務。如果不想阻塞其它的系統work,則可以使用私有隊列。

所謂私有隊列就是模塊自行申請一個工作隊列workqueue_struct。以下是使用私有隊列來運行work的例子。這樣做的好處是,本模塊work不會影響系統其它work的運行,同樣的,本模塊work也不會被系統其它work所阻塞。壞處就是多了一份開銷。如果希望一個工作在某個時間之後再運行(而不是馬上就緒),那麼可以使用延時工作。這個例子的列印結果是:在 demo_work 運行前,還可以通過 cancel_delayed_work(&dm->dwk) 來取消。上面的「工作函數」回調,系統會傳入work_struct的指針,這樣我們就可以通過container_of獲取到宿主結構體的數據(例如dm->name)。

如果想要快速使用workqueue,可以參考以下步驟:包含頭文件 #include;聲明一個工作變數 struct work_struct;實現一個工作函數 void *work_fun(structwork_struct*work);初始化工作(綁定work函數);激活一次工作(work函數將被調用)。

以下為使用系統共用隊列來運行work的例子:運行結果是:所以 demo_work 和 demo_init 是並行運行的,其中的延時不會阻塞 schele_work 調用者,相當於在另外一條線程執行。但是,這個demo_work是會佔用系統工作隊列的資源的,如果工作池(線程池)已耗盡,那麼這個1秒延時就會阻塞別的任務。如果不想阻塞其它的系統work,則可以使用私有隊列。

使用私有隊列來運行work的例子:這樣做的好處是,本模塊work不會影響系統其它work的運行,同樣的,本模塊work也不會被系統其它work所阻塞。壞處就是多了一份開銷。

如果希望一個工作在某個時間之後再運行(而不是馬上就緒),那麼可以使用延時工作。這個例子的列印結果是:在 demo_work 運行前,還可以通過 cancel_delayed_work(&dm->dwk) 來取消。上面的「工作函數」回調,系統會傳入work_struct的指針,這樣我們就可以通過container_of獲取到宿主結構體的數據(例如dm->name)。

工作隊列模塊在源碼中的相對路徑是:kernel/workqueue.c 和 include/linux/workqueue.h。官網地址(5.16.5版本):git.kernel.org/pub/scm/...。以下為幾個核心步驟的代碼分析:初始化工作任務、創建工作隊列、觸發工作任務。

工作隊列的主要流程分析完成,更多的大量細節和精髓,就需要我們自己對比著閱讀源碼來領悟。以下為工作隊列模塊關鍵函數的代碼流程。

閱讀全文

與ke哪些編程軟體Linux相關的資料

熱點內容
在哪裡看電商銷售數據 瀏覽:135
win10覆蓋txt文件找回 瀏覽:556
哪個網站可以聽高中的課 瀏覽:381
iphone5s查看文件夾 瀏覽:844
類似創客貼的app工具有哪些 瀏覽:81
蘋果7手機型號怎麼看 瀏覽:135
高通手機升級找不到那個文件 瀏覽:593
工程造價工資和軟體編程哪個累 瀏覽:669
公考報名文件路徑 瀏覽:988
人臉識別系統招標文件 瀏覽:260
閱讀app20聽書怎麼設置 瀏覽:996
axure70教程視頻下載 瀏覽:446
linux如何開啟埠 瀏覽:474
盜版廣聯達能不能升級 瀏覽:368
qsb是什麼文件格式 瀏覽:268
遍歷ftp目錄文件內容 瀏覽:612
求生之路22001升級2121 瀏覽:646
按鍵精靈如何檢測沒有網路後休眠 瀏覽:915
招標文件的內容應當符合標准 瀏覽:465
外推內插法c語言程序 瀏覽:146

友情鏈接