讀Kernel感悟-Linux核心啟動-核心的產生

這段時間在看《Linux核心原始碼情景分析》,順便寫了一些感悟。讀核心原始碼是一件很有意思的事。它像一條線,把作業系統,編譯原理,C語言,資料結構與演算法,電腦體繫結構等等電腦的基礎課程串起來。       

linux 核心中得到 當前進程 對應的可執行檔的 絕對路徑

 標題很拗口。這兩天在折騰這個事,把折騰的結果記錄一下。 先說在應用程式層怎麼搞這個事,很簡單:#include <stdio.h>#include <unistd.h>int main() { char link[100], path[100]; sprintf(link, "/proc/%d/exe", getpid()); readlink(link, path, sizeof(path)); printf("

開啟linux 核心線程

函數說明: kthread_create:建立線程。struct task_struct *kthread_create(int (*threadfn)(void *data),void *data,const char *namefmt, ...); 線程建立後,不會馬上運行,而是需要將kthread_create() 返回的task_struct指標傳給wake_up_process(),然後通過此函數運行線程。  kthread_run :建立並啟動線程的函數:struct

關於linux kernel的死法

最近在調試linux核心驅動,宕機無數次。關於linux的死法也有些心得。 1、嘎嘣兒脆型。     特點:啥提示也沒有,說宕就宕,/var/log/messagesXXX,裡邊啥提示資訊也沒有。     原因:八成是你自己沒玩兒好,在kernel裡邊記憶體越界了。還有兩成是超過了linux核心棧8K的限制。2、半死不活型。     特點:ssh不上,但是ping是能ping通的。     原因:一定是在什麼地方加鎖了,然後return的時候忘瞭解鎖了。3、自我救贖型。    

linux 系統調用劫持

如果一個木馬要隱藏起來,不被系統管理員發現。截獲系統調用似乎是必須的。大部分情況下,通過修改系統調用表來實現系統調用的劫持。下面是一個典型的截獲系統調用的模組:模組一:#include <linux/module.h>#include <linux/kernel.h>#include <asm/unistd.h>#include <sys/syscall.h>#include <linux/types.h>#include

linux 2.6.X 檔案相關結構體總結

Linux2.6X核心中檔案相關結構體總結一、 常見檔案相關結構體以2.6.22為例,其他的2.6.X版本可能調整,但是變化不大。1.1 struct filestruct file結構體定義在include/linux/fs.h中定義。檔案結構體代表一個開啟的檔案,系統中的每個開啟的檔案在核心空間都有一個關聯的struct file。它由核心在開啟檔案時建立,並傳遞給在檔案上進行操作的任何函數。在檔案的所有執行個體都關閉後,核心釋放這個資料結構。在核心建立和驅動源碼中,struct

Linux核心的記憶體管理:分段和分頁的區別

分段和分頁其實都是一種對地址的劃分或者映射的方式。兩者的區別主要有以下幾點:a)      頁是資訊的物理單位,分頁是為實現離散分配方式,以消減記憶體的外零頭,提高記憶體的利用率;或者說,分頁僅僅是由於系統管理的需要,而不是使用者的需要(也是對使用者透明的)。段是資訊的邏輯單位,它含有一組其意義相對完整的資訊(比如資料區段、程式碼片段和堆棧段等)。分段的目的是為了能更好的滿足使用者的需要(使用者也是可以使用的)。b)    

Linux下字元裝置驅動程式的結構

首先,希望可以明確一下概念:1、 要說的是,驅動,必然是與核心緊密相連的底層程式;並且介面對使用者是不可見的。所以你要想到的是如何把驅動和核心聯絡起來,第一個就想到了模組(modules),模組就像一個載體,一個容器,通過它,會把你寫好的程式插入(裝載)到核心可見的地區,從而使核心感知到你的驅動的存在,然後使用者空間才能通過系統調用的形式聯絡到驅動,從而完成它的任務,所以你首要瞭解模組。2、 驅動位於OS之下,為OS提供硬體操作(當然驅動也有可能不是針對硬體的)的邏輯和底層抽象的封裝,所以他要上

基於ARM嵌入式Linux學習開始到入門

騰出手來,認認真真寫一篇嵌入式的文章,談談我的學習曆程。希望對你有所協助。介紹一下背景,我是學電腦的,還是專升本的。大一大二上的是軟體學院,然後專升本考了個二本,也就是說大一大二的時候學的是純面嚮應用的開發,學了一年半的Java,都是高層開發,對底層是毫無瞭解的。當時也沒有系統的學習過作業系統、組成原理的知識,好在我還算是上進,主要還是興趣所致,對電腦認識比較到位,所以平時也積累了不少作業系統的知識和編程思想。到了本科,有了作業系統和組成原理的相關課程,因為之前自己的積累,學起來還是比較輕鬆的吧

linux的實體記憶體空間與線性地址空間的的對應關係

在支援MMU的32位處理器平台上,Linux系統中的實體儲存體空間和虛擬儲存空間的位址範圍分別都是從0x00000000到0xFFFFFFFF,共4GB,但實體儲存體空間與虛擬儲存空間布局完全不同。Linux運行在虛擬儲存空間,並負責把系統中實際存在的遠小於4GB的實體記憶體根據不同需求映射到整個4GB的虛擬儲存空間中。 實體儲存體空間布局Linux的實體儲存體空間布局與處理器相關,詳細情況可以從處理器使用者手冊的儲存空間分布表(memory

Linux系統中IPtables設定基礎知識

IPtable是linux的內建防火牆, 很多網路服務者要用到, vpn,web,ftp都要開啟相應連接埠才能正確串連.如:在CentOS中安裝lnmp防火牆要開啟80連接埠 ,Linux系統中IPtables設定基礎知識.IPTABLES的基礎知識1、查看本機關於IPTABLES的設定情況[root@tp ~]# iptables -L -nChain INPUT (policy ACCEPT)target prot opt source destinationChain FORWARD

從一道面試題談linux下fork的運行機制

感謝http://kb.cnblogs.com/page/76622/的文章!!!今天一位朋友去一個不錯的外企面試linux開發職位,面試官出了一個如下的題目:      給出如下C程式,在linux下使用gcc編譯:#include "stdio.h"#include "sys/types.h"#include "unistd.h" int main() { pid_t pid1; pid_t pid2; pid1 = fork();

Linux tun/tap驅動

tun/tap是純軟體實現的一套虛擬網路裝置。tap表示虛擬乙太網路裝置,工作在二層網路上,具有直接處理以太幀的能力。tun表示虛擬點對點裝置,工作在三層網路上,具有處理IP包的能力。其實現原理相對簡單。它在核心空間添加一個雜項裝置(msicdevice)/dev/net/tun,實質上就是一個主裝置號為10的字元裝置,作為使用者空間與核心空間資訊互動的介面。tun/tap驅動程式套件括兩個部分,一部分是字元裝置驅動,另一部分是虛擬網卡驅動。利用網卡驅動部分,接收來自核心協議棧的網路資料包並發送

《深入理解Linux核心》筆記4:非強制中斷/tasklet/工作隊列

非強制中斷、tasklet和工作隊列並不是Linux核心中一直存在的機制,而是由更早版本的核心中的“下半部”(bottom

Linux下cut命令用法詳解(原創:frozen_sucker(冰棍))

有時我們經常會遇到這樣一些問題:有一頁電話號碼薄,上面按順序規則地寫著人名、家庭住址、電話、備忘等,此時我們只想取出所有人的名字和其對應的電話號碼,你有幾種方法可以實現呢 確實這種縱向定位的方式用常規辦法難以實現,這時,cut就可以大顯身手了。What’s cut?子曰:cut命令可以從一個文字檔或者文字資料流中提取文本列。 命令用法:       cut -b list [-n]        cut -c list        cut -f list [-d delim][-s]

關於linux記憶體管理

 Linux的記憶體管理主要分為兩部分:物理地址到虛擬位址的映射,核心記憶體配置管理(主要基於slab)。物理地址到虛擬位址之間的映射1、概念  物理地址(physical

在Linux下使用DNW給開發板下載

Created 星期四 17 十一月 2011介紹:DNW是通過USB燒寫軟體到ARM板的工具, 由三星公司開發, 可是這個軟體只有Window版本. 在ARM9之家論壇上發現有人重寫了個簡單的命令列版本, 原始碼可以從Google Code上下載:dnw2_linux_latest.tgz

UNIX/Linux specific links

UNIX/Linux specific linksAssemly HOWTO: http://docsrv.caldera.com:8457/en/Howto/Assembly/index.htmlBASH programming - introduction HOWTO: http://docsrv.caldera.com:8457/en/Howto/Bash-Prog-Intro/Bash-Prog-Intro-HOWTO.htmlConsole programming HOWTO:

linux,windows如何避免競爭,同步控制的幾點經驗

 linux,windows如何避免競爭,同步控制的幾點經驗1)

linux fedora 14(核心2.6.35.6) PF_RING+libpcap 極速捕獲千兆網資料包,不丟包

       前面講到了libpcap 捕獲資料包,尤其在千兆網的條件下,大量的丟包,網上搜尋好久,大概都是PF_PACKET +MMAP,NAPI,PF_RING之類的方法,我對PF_RING+libpcap進行實驗,發現千兆網條件下,捕獲資料包的效能很好,幾乎不丟包,實驗環境搭配流程如下:     1)下載PF_RING:svn co https://svn.ntop.org/svn/ntop/trunk/PF_RING/     

總頁數: 3662 1 .... 885 886 887 888 889 .... 3662 Go to: 前往

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.