nginx 緩衝區構造
nginx 緩衝區構造
和緩衝區有關的最基本的是三個結構:ngx_buf_t、ngx_chain_t、ngx_bufs_t
分別代表 緩衝區、連結串列、緩衝區尺寸。
一塊快取區可以存放多段資料,因此在nginx中快取結構被這樣定義:
struct ngx_buf_s {
u_char *start; //緩衝區首部
u_char *end; //緩衝區尾部
u_char *pos; //當前指標所在位置
u_char *last; //有效資料的尾部
...
}
按照這種道理end永遠不小於last,例如快取區一共申請了10個單元,而目前只填充了6個單元,那麼last為6,end為10。
為了區分是那種型別的緩衝,在這個結構中還有一些標識,例如:
ngx_file_t *file; //檔案結構指標
unsigned memory:1; //是否在記憶體中
unsigned mmap:1; //記憶體中的檔案對映
unsigned recycled:1; //被回收
unsigned in_file:1; //檔案緩衝
unsigned flush:1; //被清除
unsigned sync:1; //非同步
unsigned last_in_chain:1; //連結串列的尾部
unsigned temp_file:1; //是否是臨時檔案中的緩衝
通過一個8位儲存了一個緩衝區的8種狀態,在C語言裡這種方式比較經濟節省。在高階語言裡,是嘗不到這種便宜的。
連結串列結構ngx_chain_t是單向連結串列結構。
相關文章
- MS15-002 telnet服務緩衝區溢位漏洞分析與POC構造
- Java NIO:緩衝區Java
- stdio流緩衝區
- Nginx代理緩衝 proxy_buffering 配置Nginx
- Linux 命令 管道 緩衝區Linux
- Java NIO 之緩衝區Java
- Java整數緩衝區Java
- Unity深度緩衝區指令Unity
- PHP的輸出緩衝區PHP
- Node.js Buffer(緩衝區)Node.js
- Java NIO 之 Buffer(緩衝區)Java
- 緩衝區溢位實驗
- JavaScript WebGL 幀緩衝區物件JavaScriptWeb物件
- 緩衝區溢位攻擊
- PHP 輸出緩衝區應用PHP
- 8、Node.js Buffer(緩衝區)Node.js
- 緩衝區溢位小程式分析
- Java-NIO之Buffer(緩衝區)Java
- 《Lua-in-ConTeXt》10:緩衝區魔法Context
- Redis效能篇(五)Redis緩衝區Redis
- C語言清空輸入緩衝區C語言
- 初識Netty原理 (二)——ByteBuf緩衝區Netty
- MySQL中讀頁緩衝區buffer poolMySql
- 緩衝管理
- Wgpu圖文詳解(03)緩衝區BufferGPU
- Redis緩衝區溢位及解決方案Redis
- oscp-緩衝區溢位(持續更新)
- 我竟然意外的懂了什麼是“緩衝區”
- stm32+djyos下串列埠緩衝區配置串列埠
- IO流上:概述、字元流、緩衝區(java基礎)字元Java
- Nio再學習之NIO的buffer緩衝區
- pwntools緩衝區溢位與棧沒對齊
- 輸出緩衝
- 使用Golang泛型構建的無鎖環形緩衝區開源專案Golang泛型
- 做個試驗:簡單的緩衝區溢位
- arcgis10之緩衝區轉化成四邊形
- 緩衝區溢位漏洞的原理及其利用實戰
- 面試官:Redis中的緩衝區瞭解嗎面試Redis
- 緩衝區溢位漏洞那些事:C -gets函式函式