原创 誤用kfree()釋放skb導致內存泄露

前段時間寫的一個轉發模塊在現網應用後 幾臺設備出現了不同程度的內存泄露 大約4-15天設備內存耗盡 泄露速度因業務壓力和網絡丟包情況而不同 經歷了N次的代碼review和一個不眠之夜後 終於找到了原因 在一處釋放skb的地方 本應該使用

原创 深入理解磁盤文件訪問

Disk-file-io 讀寫磁盤數據是程序設計中最基本也是最重要的操作之一。實際系統爲磁盤 I/O 提供了多種接口,不同的接口不但語義有所不同,而且性能也有差異。理解這些接口對實現正確和高效的程序是很重要的,本文將結合內核的實現原理來比

原创 How software developers fix defects (bugs) - QA point

        This should hold us over.      It worked yesterday.     This is

原创 Linux內核中mktime()函數算法分析

  內核中的mktime()函數位於kernel/time.c內 該函數主要用於內核啓動時,將CMOS中的 年-月-日 時:分:秒 信息轉換爲距離1

原创 什麼是真正的實時操作系統

做嵌入式系統開發有一段時間了,做過用於手機平臺的嵌入式Linux,也接觸過用於交換機、媒體網關平臺的VxWorks,實際應用後回過頭來看理論,才發現

原创 修煉一名程序員的職業水準

作者:林慶忠,1990年畢業於昆明工學院計算機軟件專業,後又於1999年畢業在南京大學 完成軟件工程專業碩士的學習,現供職於CNPC旗下的一個行業軟件研發中心,因爲在網上看了許多有經驗的各路軟件開發人員寫的好帖,一時手癢興起,也湊一篇壯壯

原创 用GCC來跟蹤程序的函數調用關係

GCC就像一個巨大的寶藏,只要你願意花時間,總能淘到好東西。 在看一些大中型的軟件的源代碼時,你是不是非常希望有一個工具能夠方便的生成各個函數之間的調用關係圖呢?爲了實現這個目標,你可以通過對源代碼進行靜態掃描得到函數的調用關係,

原创 駭客們,起來創業吧

前一陣子「雲端」服務正紅的時候,很多熟悉技術的朋友(包括我在內)都有同一種反應:「這有什麼了不起?我十年前就有自己的Linux主機,在任何地方都可以

原创 關於單CPU,多CPU上的原子操作

所謂原子操作,就是"不可中斷的一個或一系列操作" 。 1.1.硬件級的原子操作: 在單處理器系統(UniProcessor)中,能夠在單條指令中完成的操作都可以認爲是"原子操作",因爲中斷只能發生於指令之間。這也是某些CPU指令系統中引

原创 Linux內核代碼風格摘要

第一章:縮進 製表符是8個字符 避免3級以上的縮進 在switch語句中switch與case對齊 不要把多個語句放在一行裏 除了註釋、文檔和Kconfig之外,不要使用空格縮進 不要在行尾留空格 第二章:把長的行和字符串打散 每一

原创 軟件人才成長鏈

軟件人才成長鏈 (1) 程序員程序員處於技術成長曆程的最下端。他們需要熟練掌握各種語言技巧,知道技巧適用性還要對資源做出最恰當安排。 (2) SA系統分析師系統分析師是抽象模型的建立者,他們需要專業的概念模型知識和基礎編程技巧。傑出的

原创 Typical start-up process for x86 Linux

  Figure 1. Typical start-up process for x86 Linux         原文:Migrating from x86 to PowerPC, Part 2: Anatomy of the Lin

原创 Linux內核加載過程

以32位x86,bzImge爲例   grub版本爲0.97   1、計算機上電 2、0xFFFFFFF0 當cpu檢測reset引腳上的信號後 便將指令指針寄存器的值設置爲0xfff0 ——INTEL 80386 PROGRAMMER

原创 bzImage是怎麼來的

  以x86架構32位機爲例,即i386   從經典的helloworld程序開始 理解程序的編輯、編譯、連接、運行的四個階段 內核也是使用gcc、

原创 一個簡單的通用Makefile模板

供寫小程序的時候使用 可以隨意的修改文件名稱 隨意的增刪文件、目錄 隨意的調整文件的目錄層次 不編譯某個.c文件時將其改個後綴名即可 不能有重複的文件名稱   # [email protected] AS = as