2019年12月9日

摘要:鏈接 學習 CS:APP 鏈接 的記錄 在實際操作的過程中,測試的數據和書里面的內容有一些出入了,如重定位的方式,現在默認都使用 GOT+PLT 的方式進行重定位,與此帶來的是 被干掉,使用 GOT 的方式訪問。 "編譯過程" "靜態鏈接" "目標文件" "可重定位目標文件" "符號解析" "鏈接靜 閱讀全文
posted @ 2019-12-09 19:12 小胖西瓜 閱讀 (56) 評論 (0) 編輯

2019年11月20日

摘要:"Graphviz" Graphviz 是一個自動排版的作圖軟件,可以生成 png pdf 等格式。 一切以官方文檔為準,博客只是參考。這里做一個自己學習的記錄。 "dot 語法介紹" "部分圖形屬性介紹" "示例" "使用VSCode進行預覽生成" "參考" dot 語言 Graphviz 構建組 閱讀全文
posted @ 2019-11-20 13:52 小胖西瓜 閱讀 (412) 評論 (0) 編輯

2019年11月13日

摘要:C 表達式中的匯編指令 asm 為 gcc 中的關鍵字,asm 表達式為在 C代碼中嵌套匯編指令,該表達式只是單純的替換出匯編代碼,并不對匯編代碼的含義進行解析。 asm 表達式有兩種形式,第二種 包含了 語句。 第一種形式為常見的用法,AssemblerTemplate 和 OutputOpera 閱讀全文
posted @ 2019-11-13 17:25 小胖西瓜 閱讀 (119) 評論 (0) 編輯

2019年10月31日

摘要:epoll(2) 源碼分析 文本內核代碼取自 5.0.18 版本,和上一篇文章中的版本不同是因為另一個電腦出了問題,但是總體差異不大。 "引子留下的問題" "關鍵數據結構" "提供的系統調用" "就緒事件相關邏輯" "epoll 間的相互影響及處理" "問題的解答" 引子留下的問題 在 "上一篇文章 閱讀全文
posted @ 2019-10-31 17:36 小胖西瓜 閱讀 (160) 評論 (0) 編輯

2019年10月26日

摘要:epoll(2) 使用及源碼分析的引子 本文代碼取自內核版本 4.17 epoll(2) I/O 事件通知設施。 epoll 是內核在2.6版本后實現的,是對 select(2)/poll(2) 更高效的改進,同時它自身也是一種文件,不恰當的比方可以看作 eventfd + poll。 多路復用也是 閱讀全文
posted @ 2019-10-26 16:18 小胖西瓜 閱讀 (120) 評論 (0) 編輯

2019年10月18日

摘要:eventfd(2) 結合 select(2) 源碼分析 本文代碼選自內核 4.17 eventfd(2) 創建一個文件描述符用于事件通知。 "使用" "源碼分析" "參考" eventfd 作為一個非常簡單的抽象文件,每個文件描述符都對應一個在內核空間維護的 , 一個無符號64位整形的計數器,而e 閱讀全文
posted @ 2019-10-18 20:44 小胖西瓜 閱讀 (123) 評論 (0) 編輯

2019年10月12日

摘要:poll(2) poll(2) 系統調用的功能和 select(2) 類似:等待一個文件集合中的文件描述符就緒進行I/O操作。 "使用" "實現" select(2) 的局限性: 關注的文件描述符集合大小最大只有 1024 文件描述符集合為順序的,不能任意指定 fd,浪費占用的fd poll(2) 閱讀全文
posted @ 2019-10-12 17:01 小胖西瓜 閱讀 (101) 評論 (0) 編輯

2019年9月25日

摘要:select(2),同步的 I/O 復用 直接看 epoll 的源碼把自己繞暈了,先整個簡單點的下手。 "使用" "源碼分析" select(2) 提供的用戶接口 1. 第 1 個參數為最大的文件描述符加 1 2. 第 2 3 4 個參數依次為讀寫異常需要檢查的結構體 3. 第 5 個參數為超時時間 閱讀全文
posted @ 2019-09-25 20:22 小胖西瓜 閱讀 (87) 評論 (0) 編輯

2019年8月21日

摘要:kfifo 的一些偽代碼 kfifo_in 只修改 fifo->in 的值,含一個 STORE 指令,及若干 fifo->out fifo->in 的 LOAD 指令kfifo_out 相反,只修改 kfifo->out 的值,同樣含一個 STORE 指令及若干 LOAD 指令把代碼中的內存屏障去掉 閱讀全文
posted @ 2019-08-21 22:05 小胖西瓜 閱讀 (37) 評論 (0) 編輯

2019年6月10日

摘要:程序的機器級表示 時隔一年把 "CS:APP" 再看一遍,尤其針對棧的運行機制加深理解。 訪問信息 16個通用寄存器 一個 x86 64 CPU 包含一組16個存儲64位值的 。雖然是通用寄存器,但也有一些約定成俗的用法。r8 r9 ... 為80386之后擴展的8個寄存器 $rax$, 返回值 $ 閱讀全文
posted @ 2019-06-10 21:22 小胖西瓜 閱讀 (247) 評論 (1) 編輯

導航

統計

11选5走势图