原创 epoll機制代碼覈對
epoll工作機理 epoll_wait檢查epoll句柄中的rdllist不爲空退出循環 遍歷所有的epitem,把各種ready的fd收集起來返回 誰來影響rdllist不爲空,一般的說法是文件的fd的狀態
原创 內核中的機制的困惑
處理器總處於以下狀態中的一種 1、內核態,運行於進程上下文,內核代表進程運行於內核空間; 迴旋鎖是解決多個CPU可重入問題 2、內核態,運行於中斷上下文,內核代表硬件運行於內核空間; 迴旋鎖是解決多個CPU可重入問題
原创 網卡驅動中的疑惑
網卡發送和接收緩衝區是實際有空間,還是一個數字而已? 這個只是一個邏輯值,並不實際分配內存 這是網卡的級別的限制,超過了閥值,數據就不收發了 網卡的發送和接收緩衝區是所有連接共享? 是的,也有連接級別的發送和接
原创 linux socket收包錯誤碼
1、ENOTCONN ---當前狀態爲TCP_LISTEN 2、flags爲帶外數據tcp_recv_urg ENOTCONN ---當前狀態爲TCP_CLOSE EINVAL ---TCP_URG_READ EFA
原创 tcp_ip網絡中的名詞語義
選擇重傳與分片的概念 選擇重傳不是指分片中的某個部分丟了,選擇某個分片 選擇重傳的粒度不是分片而是滑動窗口中的單元 TCP協議中的seq表示的是字節數還是包序號? seq其實就是連接的字節數 TCP中發送數據後,基本
原创 linux 發數據包的錯誤碼
1、EBADF---找不到對應的文件對象 2、連接並未建立,等待直到進入TCPF_ESTABLISHED或者TCPF_CLOSE_WAIT 1
原创 信號機制一窺
if (signal_pending(current)) { ret = -ERESTARTSYS; return ret
原创 go遇到的問題
一、類型轉換 a = 100.0 //c/c++使用100.0f,100.0u,go用float32(100.0),uint(0)可以達到效果 fmt.Printf("%f\n"
原创 go的protobuf環境搭建
1、下載protobuf本身的安裝包 執行autogen.sh過程中如果遇到不能訪問外網的情況下,進入autogen.sh中註釋掉這些行 安裝protobuf的依賴的資源autoconf,a
原创 文件系統中數據讀取的詳細過程
一直在困惑文件系統sys_read、bio、io調度、硬中斷、軟中斷、io完成通知之間的過程是怎麼樣的,通過代碼的跟蹤大致明白過程了 內核態的系統調用與bio的交界處的函數mpage_bio_submit(fs/mpage.c) bio與
原创 go的html模板替換
1、模版注入函數 t.Funcs() 2、字符串作爲模版 Template.Must 3、模版的Map或者Struct替換 t := template.New(
原创 文件系統中的io請求的傳遞
塊設備的io請求類型在不同層次有不同的表示 page cache=>buffer head=>bio=>request IO請求在內核的傳遞過程中,並未發生實際的拷貝,而是引用部分數據 在request對象中還是有bio對象
原创 go的反射機制和interface
interface與其他語言的對比 1、interface{}作爲形式參數使用 類似c/c++中的void*,萬能的指針 2、本身的含義類似java中的interface
原创 redis日常學習
1、查看redis的內存等資源使用情況 登陸進去之後,使用info查看 2、清空redis 登陸進去之後,使用flushall清空 3、查看redis中的記錄數
原创 Qdisc數據發送
Qdisc中的實現方式大致如下 struct Qdisc { int (*enqueue)(struct sk_buff *skb, struct Qdisc *dev); struct sk_buff * (*dequeue