原创 Linux驅動4_NETFILTER

#include <linux/module.h> #include <linux/kernel.h> #include <linux/init.h> #include <linux/types.h> #include <

原创 網絡子系統79_inet協議族

// inet協議族默認支持的協議類型 // 在inet_init中,通過inet_register_protosw註冊到inetsw鄰接表 1.1 static struct inet_protosw inetsw_array[] =

原创 調度子系統7_負載均衡(四)

// 尋找sched domain中最忙的group // 函數參數: // sd:待查找的sched domain // this_cpu:當前正在對其執行負載均衡的cpu // imbalance:爲達到平衡需要移動的權重 //

原创 調度子系統8_負載均衡(五)

// 計算group在給定domain中的imbalance // 調用路徑:find_busiest_group->calculate_imbalance // 函數參數: // sds:sched domain的統計信息 // t

原创 調度子系統6_負載均衡(三)

// 負載均衡 // 在sched_domain中進行負載均衡,檢查是否可以通過最繁忙的組中遷移一些進程到本cpu // 函數參數: // this_cpu, 其上執行負載均衡的cpu // this_rq, 其上執行負載均衡的rq

原创 調度子系統4_負載均衡(一)

// 參考:http://blog.csdn.net/dog250/article/details/5303561 // 負載均衡 // 當rq->next_balance到時,觸發負載均衡 // 調用路徑:scheduler_ti

原创 網絡子系統75_套接字創建

// 創建套接字,系統調用sys_socket // 步驟: // 1.分配套接字描述符 // 2.創建套接字對應的文件描述符 // 參數: // 協議族: 對於TCP/IP協議族,該參數爲AF_INET // 套接字類型:

原创 調度子系統5_負載均衡(二)

一篇介紹Linux負載均衡的文章:          Linux Load Balancing Mechanism          CSDN資源地址

原创 內存子系統1_分配接口

1.頁 <linux/mm_types.h>    struct page; 內核把物理頁作爲內存管理的基本單位;內存管理單元(MMU)把虛擬地址轉換爲物理地址, 通常以頁爲單位進行處理。MMU以頁大小爲單位來管理系統中的也表。  

原创 網絡子系統76_套接字綁定

// 綁定套接字到地址 // 步驟: // 1.根據用戶空間的文件描述符查找socket描述符 // 2.複製地址信息到內核空間 // 3.由具體的協議族完成綁定 1.1 SYSCALL_DEFINE3(bind, int, fd,

原创 調度子系統1_調度子系統初始化

unsigned int sysctl_sched_rt_period = 1000000; int sysctl_sched_rt_runtime = 950000; // 參考: // SMP負載均衡 // http://sof

原创 調度子系統2_核心調度器

// 核心調度器 // 當進程決定讓出cpu時調用 // 函數任務: // 1.禁止內核搶佔 // 2.獲取本cpu的rq // 3.取消爲當前進程運行的hrtimer // 4.獲取隊列鎖 // 5.更新隊列時鐘 // 6

原创 調度子系統3_週期調度器

// 週期調度器 // 調用路徑:update_process_times->scheduler_tick // 函數任務: // 1.更新rq的clock // 2.更新隊列負載 // 3.通知調度器類更新進程運行時間 // 4

原创 Linux驅動3_總線設備(二)

#include <linux/init.h> #include <linux/module.h> #include "simple.h" // 在虛擬總線simple bus上邊添加一個設備,並添加其驅動 int probe (stru

原创 網絡子系統80_inet協議族-SOCK_RAW(一)

// SOCK_RAW 1.1 static struct inet_protosw inetsw_array[] = { ... { .type = SOCK_RAW, .protocol