Time of Update: 2018-07-26
如果你覺得比核心的進程調度器更瞭解你的進程,不想過多的佔用CPU0,更高的快取命中,那麼可以設定進程運行在某個或某些CPU上。 redis是單進程模型,為了充分利用多核伺服器效能,可以指定不同的redis執行個體運行在不同CPU上,這樣也可以減少進程環境切換。 方法有兩種: 一、使用命令taskset
Time of Update: 2018-07-26
/******************** * 字元裝置驅動 ********************/ (1)字元裝置驅動介紹 字元裝置是指那些按位元組流訪問的裝置,針對字元裝置的驅動稱為字元裝置驅動。 此類驅動適合於大多數簡單的硬體裝置。比如並口印表機,我們通過在/dev下建立一個裝置檔案(如/dev/printer)來訪問它。
Time of Update: 2018-07-26
不同的作業系統需要使用不同類型的檔案系統,為了與其他動作系統相容,以相互交換資料,通常作業系統都能支援多種類型的檔案系統,比如Windows 2000 Server,系統預設或推薦採用的檔案系統是NTFS,但同時也支援FAT32或FAT16檔案系統;DOS和Windows 9x一般採用FAT16或FAT32,不支援NTFS檔案系統。 Linux核心支援十多種不同類型的檔案系統,對於Red Hat
Time of Update: 2018-07-26
Linux 網路初始化流程 1. 系統初始化 (1) X86 PC初始化過程 1) CPU自身初始化 2) BIOS加電自檢POST 完成系統硬體的檢測,包括記憶體檢測、系統匯流排檢測等 3) BIOS載入核心主引導程式
Time of Update: 2018-07-26
嵌入式系統產品開發經常會遇到效能瓶頸,這時需要藉助外力,即各種工具,來找出問題點並及時解決。以下列出一些系統提供的工具: 1. top 個人最常用工具之一。top命令用於顯示實際的進程活動狀態,預設在5秒內收集CPU最密集的進程資訊,並輸出。預設的重新整理時間可以通過-d參數改變,如 top -d1 則每1秒重新整理list一次。top執行後有多個快速鍵,重要的有以下幾個: h:顯示線程狀態 r:執行renice命令,用於調整進程優先順序
Time of Update: 2018-07-26
核心中的記憶體配置通常通過kmalloc/kfree來進行,但是也有其它的方式來擷取記憶體,所有這些方式共同提供了核心中分配、釋放記憶體的介面。 一、kmalloc/kfree 類似於標準C中的malloc/free,kmalloc/kfree是核心中的用於常規記憶體配置的介面。
Time of Update: 2018-07-26
有時我們希望驅動可以在Linux編譯的時候通過make menuconfig添加和移除,可通過下面方法實現: 1.LED驅動為例 (1)在kernel\drivers\char\目錄下建立一個led目錄,之後編寫的led驅動代碼將放在這個目錄中。 (2)修改kernel\drivers\char\目錄中的Makefile將led目錄包含進去。 即:在Makefile中添加 obj-y += led/ 即可。 obj-y:表示由xx.c 或者 foo.
Time of Update: 2018-07-26
頁緩衝在《linux核心情景分析》一書的第5.6節檔案的寫與讀一章中說明的很詳細,這裡摘抄下來; 在檔案系統層中有三隔主要的資料結構,file結構、dentry結構和inode結構; file結構:代表目標檔案的一個上下文,不同進程可以在同一檔案上建立不同的上下文,而且同一進程也可以通過開啟一個檔案多次而建立起多個上下文。因此不能在file結構上設定緩衝區隊列,因為這些file結構體之間都不共用。
Time of Update: 2018-07-26
此貼為了記錄Linux下那些經常考到的指令。 1、chmod chmod命令用來變更檔案或目錄的許可權。常用文法如下: chmod [who] [+ | - | =] [mode] 檔案名稱 命令中各選項的含義為: u 表示“使用者(user)”,即檔案或目錄的所有者。g 表示“同組(group)使用者”,即與檔案屬主有相同組ID的所有使用者。o 表示“其他(others)使用者”。a 表示“所有(all)使用者”。它是系統預設值。
Time of Update: 2018-07-26
linux核心中的裝置 對於掛接在具體匯流排上外部裝置都有一個struct device與之對應,比如平台裝置有platform_device與之對應,其中platform_device結構體如下: struct platform_device {const char * name; //裝置名稱,要與driver的名字進行匹配,如果成功則進入驅動的探測函數int id;struct device dev;u32
Time of Update: 2018-07-26
linux系統的啟動,指的是從系統加電到系統控制台顯示“login:”登入提示符為止的系統運行階段,與這部分動作密切相關的代碼主要是: 四個組譯工具:bootsect.S setup.S head.S entry.S init目錄下的main.c檔案 主要查看init/main.c中的start_kernel函數: 在系統啟動過程中,主要關注一下幾個方面: 中斷系統及調度系統 檔案系統的初始化 裝置管理系統的初始化
Time of Update: 2018-07-26
1.ethtool ethtool 提供了強大的網卡及網卡驅動管理能力,其具體的實現架構和網路驅動程式及網路硬體關係緊密,容易修改和擴充,能夠為 Linux 網路開發人員和管理員提供對網卡硬體,驅動程式和網路通訊協定棧的設定,查看以及及調試等功能。 2.命令使用格式 ethtool [option] interface常用的選項有: -s
Time of Update: 2018-07-26
Linux中,cron被用來調度重複的任務,linux at命令被用來在指定時間內調度一次性的任務。 要使用linux at命令,你必須安裝了at RPM軟體包,並且 atd服務必須在運行。 可以使用一下命令啟動atd服務: [root@sso_4 sbin]# /sbin/service atd start 要判定該軟體包是否被安裝了,使用命令: [root@sso_4 logs]# rpm -
Time of Update: 2018-07-26
linux第一彈 1.基本指令的學習 ls -all 列出所有隱藏檔以及相關的檔案屬性 date 顯示當前系統時間 格式化輸出: date +%Y/%m/%d 2018/04/13 date +%H:%M 11:17 echo $LANG 查看當前的語系以及字元編碼格式 若我們需修改語係為英文語系 則:LANG=en_US 4 顯示日曆的指令cal cal [month][year] cal 2018 顯示整年的日曆情況 cal 04 201
Time of Update: 2018-07-26
from: http://www.kerneltravel.net/jiaoliu/kern-rbtree.html Linux 核心中的紅/黑樹狀結構 作者:西郵 王聰
Time of Update: 2018-07-26
217 static DEFINE_PER_CPU(struct runqueue, runqueues); 11 #define DEFINE_PER_CPU(type, name) 12 __attribute__((__section__(".data.percpu"))) __typeof__(type) per_cpu__##name 13 首先,在arch/i386/kernel/vmlinux.lds中有 /* will be
Time of Update: 2018-07-26
一. 互斥鎖 儘管在Posix Thread中同樣可以使用IPC的訊號量機制來實現互斥鎖mutex功能,但顯然semphore的功能過於強大了,在Posix Thread中定義了另外一套專門用於線程同步的mutex函數。 1. 建立和銷毀 有兩種方法建立互斥鎖,靜態方式和動態方式。POSIX定義了一個宏PTHREAD_MUTEX_INITIALIZER來靜態初始化互斥鎖,方法如下: pthread_mutex_t
Time of Update: 2018-07-26
per-CPU變數時linux核心中一個非常有趣的特性,他為系統中每個處理器都分配了變數的一個副本。這樣做的好處是,在多處理器的系統中,當處理器操作屬於他的變數副本時,不需要考慮與其他處理器競爭的問題,同時該副本還可以充分利用處理器本地的硬體以提高訪問速度。
Time of Update: 2018-07-26
摘要 茲博文探討四個重點:1、簡單介紹紅/黑樹狀結構;2、紅/黑樹狀結構節點資料結構;3、紅/黑樹狀結構節點中父節點指標域和自身節點顏色有機結合;4、定義紅/黑樹狀結構和操作樹節點父節點指標和節點顏色的介面,包括一系列宏和兩個函數。 註:所有代碼源自kernel 3.10 前言
Time of Update: 2018-07-26
1.python-dev或python-devel python-dev或python-devel稱為是python的開發包,其中包括了一些用C/Java/C#等編寫的python擴充在編譯的時候依賴的標頭檔等資訊。比如我們在編譯一個用C語言編寫的python擴充模組時,因為裡面會有#include<Python.h>等這樣的語句,因此我們就需要先安裝python-devel開發包。 2.各種*.devel開發包