深入理解Linux網路技術內幕-關鍵資料結構(一)

 Linux網路子系統中存在一些很重要的資料結構,貫穿整個子系統,主要有以下兩個:    struct sk_buff:資料封包結構。所有的網路分層都會使用這個結構來儲存其前序、有關使用者資料,以及協調其他工作的其他內部資訊。    struct net_device:在Linux核心中,每種網路裝置都用這個資料結構表示,包括軟硬體的配置資訊。一、通訊端緩衝區:sk_buff結構    這可能是Linux網路代碼中最重要的資料結構,表示資料報文。這個結構定義在<include/linux/

深入理解Linux網路技術內幕-網路裝置初始化(三)

虛擬設備虛擬設備是建立在一個或多個真實裝置之上的抽象,虛擬設備與真實裝置之間的對應關係可以是一對一、一對多、多對一的,有可能在其他虛擬設備之上建立虛擬設備。但並非所有組合都有意義,也並非所有組合都有核心支援。虛擬設備的使用情形有如下幾種:綁定(Bonding):一組真實裝置虛擬為一個虛擬設備,使其如同單一裝置來提高效能;802.1Q:這是一種VLAN標準,用VLAN前序擴充802.3/Ethernet幀頭,建立VLAN;橋接(Bridding):橋接介面就是橋接器的虛擬設備別名介面(aliasi

Linux啟動時執行命令

如何在啟動時執行命令如何在啟動時執行某命令或運行某程式,試了幾次每每不成功,於是參考一些資料才搞定。有人建議在.login中執行相應命令,或在.bashrc(用tcshshell,在.tcshrc)裡寫命令。這是不行的,.login是在使用者登入時執行,使用者可能在本地無需登入,或者在遠程多個使用者登入,多次登入;而.tcshrc是在shell啟動時執行,登入後使用者一般會多次開啟shell,這樣該命令或程式就會被多次執行。Linux 啟動順序:1、  BIOS自檢2、 

Linux系統啟動引導程式設定檔解析

啟動引導程式設定檔 LILO /etc/lilo.conf GRUB /boot/grub/menu.lst 系統開機檔案核指令碼 主啟動控制檔案 /etc/inittab SysV啟動指令碼的位置 /etc/init.d、/etc/rc.d/init.d或/etc/rc.d SysV啟動指令碼連結的位置 /etc/init.d/rc?.d、/etc/rc.d/rc?.d或/etc/rc?.d 本地啟動指令碼 /etc/rc.d/rc.local、/etc/init.d/boot.local或/

SVN在linux下安裝時遇到的問題和解決方案

安裝環境:RedHat EL5.4  i386  虛擬機器中測試安裝手冊:SVN_for_RedHat_安裝手冊.pdf系統安裝時選擇安裝了:全球資訊網伺服器(apache相關),所以有些模組可以不裝了。O(∩_∩)O~1 安裝包部分注意內容    1.) mod_dav_svn 預設不會安裝    2.) mod_dav_svn 的版本要和subversion 相同,或者同一系列的。    3.)預設安裝的軟體可能版本沒有手冊上高,但是保證第2條,svn一樣可以運行2 檢查與安裝    1.)

Linux 核心的版本曆史

到現在我們很多人已經熟悉了 Linux 核心的版本編號系統,不過 Andries Brouwer 提醒了我們 實際上它是如何不規則的。Linux 的第一個公開版本是 1991 年 10 月的 0.02 版本。兩個月以後,在 1991 年 12 月,Linus 發布了 0.11 版本,這是第一個可以不依賴於 Minix 就可以使用的獨立核心。0.12 版本發布一個月以後,在 3 月,版本號碼跳到了 0.95,反映出系統正變得成熟。不僅如此,直到兩年後,也就是 1994 年 3

linux 核心模組調試錯誤

 各位,我在編譯核心模組時有一個錯誤調了很久也沒解決,請那位仁兄幫忙看看,666 static __init int  cbac_init(void)667 {668         struct cred *cred;669 670         if (!security_module_enable(&cbac_ops))671         return 0;672 673         printk(KERN_INFO "cbac:  InitializE ");674 /

linux 核心移植 c6x

在ccs5 下載入c6x 的linux C6x鏡像檔案, run ,在console 裡面顯示核心boot資訊如下: 到NET 那一行就停止了:IN ccsv5 we load program "vmlinux-2.6.34-evmc6474.el-20111121-1" and in the console result showed like this:[C64+_0] Linux version 2.6.34-evmc6474.el-20111121 (root@192.168.1.107

Linux的非同步傳輸模式及ACE的Proactor模式

  Reactor是工作在同步模式下,Proactor工作在非同步模式下。高效能伺服器一定是工作在非同步模式下的。所以,ACE中有Proactor這個類組。ACE的特點是跨平台和屏蔽技術細節,Proactor應該是編寫一份代碼,同時可以在Linux和Windows及其它作業系統上運行。實際開發中,我們發現,Proactor編寫的服務程式在Windows下工作非常正常,在核心為2.6.X的Linux上就工作不正常,比如,客戶的Connect操作就不能返回,經過檢查,write和read必須成對出現

linux多線程下載指令碼及其用法

1. 指令碼#!/bin/bash# by cnwesleywang@gmail.com# http://www.wesleywang.netGOOD=$'/e[32;01m'WARN=$'/e[33;01m'BAD=$'/e[31;01m'HILITE=$'/e[36;01m'BRACKET=$'/e[34;01m'NORMAL=$'/e[0m'Usage="${BAD}Try something like${NORMAL} /"$0 install stardict/""if [ "$#"

install flashplayer for linux 64 Iceweasel瀏覽器

1、源 http://download.macromedia.com/pub/labs/flashplayer10/libflashplayer-10.0.45.2.linux-x86_64.so.tar.gz2、解壓縮 libflashplayer.so 到一個檔案夾,cd 進入檔案夾中。3、root使用者執行以下命令:mkdir /usr/lib/mozilla/pluginsmkdir /home/$(username)/.mozilla/pluginsmkdir -p /usr/lib/

深入理解Linux網路技術內幕-通用編程模式和技巧(一)

一、記憶體緩衝    核心使用kmalloc和kfree函數來分配和釋放一個記憶體塊,與使用者空間libc庫中的malloc和free函數類似,但kmalloc具有不同的分配標誌來表示不同環境的分配記憶體的要求。    在核心子系統中,可能需要頻繁地分配和回收一定大小的記憶體,內惡化提供了相關的函數來預先分配一塊特殊的記憶體緩衝,作為記憶體池以作分配之用。子系統的記憶體塊分配和回收都對這個記憶體池中進行。    在核心網路子系統中維護有其專屬記憶體緩衝的有:   

深入理解Linux網路技術內幕-通用編程模式和技巧(二)

一、向量定義    在某些情況下,資料結構的末端定義一個可選的區塊,增加其靈活性:    struct abc{           int age;           char *name[20];           ……           char placeholder[0];     }   

深入理解Linux網路技術內幕-組件初始化的核心基礎架構(一)

引導期間的核心選項Linux運行使用者將核心配置選項傳遞給引導記錄,引導記錄再把選項傳給核心,進而通過引導配置參數微調核心。在系統引導期間,將調用parse_args兩次解析引導期間輸入的配置參數。parse_args函數解析的輸入字串參數是"變數名稱=值"的形式,根據解析出的關鍵字並啟用適當的處理函數。載入模組時,也會用到parse_args解析命令列參數。註冊關鍵字核心組件利用定義在include/linux/init.h中的__setup宏註冊關鍵字和相關聯的處理函數:__setup(st

深入理解Linux網路技術內幕-關鍵資料結構(四)

緩衝區的複製和拷貝當一個緩衝區需要被特別處理時,可能需要修改sk_buff描述符的內容,但核心不需要完全拷貝sk_buff結構和相關聯的資料緩衝區。為了提高效率,核心可以只複製原始值,也就是拷貝sk_buff結構,然後增加資料緩衝區的引用計數,防止被釋放。    當一個資料包需要被傳輸給多個接受者,如協議處理常式或多個網路分流器時,就需要使用資料包複製技術。    sk_buff的複製沒有連結到任何錶,而且也沒有引用通訊端的擁有者。skb->cloned欄位在複製的和原來的結構豬都設定為1

linux下的oracle9i啟動和停止服務

linux下的oracle9i啟動和停止服務   ## 停止服務流程Sql代碼 su - oracle  sqlplus /nolog  conn /as sysdba  shutdown immediate  su - oraclesqlplus /nologconn /as sysdbashutdown immediate ## 啟動服務流程Sql代碼 su - oracle  sqlplus /nolog  conn /as sysdba  startup  su -

linux 介紹的挺好

  檔案系統是linux的一個十分基礎的知識,同時也是學習linux的必備知識。    本文將站在一個較高的視圖來瞭解linux的檔案系統,主要包括了linux磁碟分割和目錄、掛載基本原理、檔案儲存體結構、軟連結永久連結、和常見目錄的介紹。相信有了這些知識對於深入的學習linux會有一定的協助。文章例子主要是基於ubuntu發行版。   

Linux下釋放記憶體的方法

釋放緩衝原因:有些單位自動檢測記憶體,當記憶體使用量率在90%以上時,會警示;               當記憶體被緩衝佔滿時,當處理一些新資訊時就會使用Swap,影響效能。 Linux的緩衝機制:Linux會針對dentry(用於VFS,加速檔案路徑名到inode的轉換)、Buffer Cache(針對磁碟塊的讀寫)和Page Cache(針對檔案inode的讀寫)進行快取作業。 操作步驟:1、查詢當前記憶體使用量情況和釋放緩衝的參數#free -m#cat

linux sudo 配置 不用密碼的配置

[tom@Agilysys:etc]$vi /etc/sudoers## Adding HOME to env_keep may enable a user to run unrestricted# commands via sudo.## Defaults   env_keep += "HOME"Defaults    secure_path = /sbin:/bin:/usr/sbin:/usr/bin## Next comes the main part: which users can

Linux中變數$#,$@,$0,$1,$2,$*,$$,$?的含義

我們先寫一個簡單的指令碼,執行以後再解釋各個變數的意義 # touch variable# vi variable 指令碼內容如下: #!/bin/shecho "number:$#"echo "scname:$0"echo "first :$1"echo "second:$2"echo "argume:$@"echo "show parm list:$*"echo "show process id:$$"echo "show precomm stat: $?"儲存退出 賦予指令碼執行許可權 #

總頁數: 3772 1 .... 263 264 265 266 267 .... 3772 Go to: 前往

Beyond APAC's No.1 Cloud

19.6% IaaS Market Share in Asia Pacific - Gartner IT Service report, 2018

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

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

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