1 / 17
文档名称:

Nginx源码分析.doc

格式:doc   大小:249KB   页数:17页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

Nginx源码分析.doc

上传人:xunlai783 2019/5/25 文件大小:249 KB

下载得到文件列表

Nginx源码分析.doc

文档介绍

文档介绍:l00117893Nginx代码的目录和结构nginx的源码目录结构层次明确,从自动编译脚本到各级的源码,层次都很清晰,是一个大型服务端软件构建的一个范例。以下是源码目录结构说明:├─auto自动编译安装相关目录│├─cc针对各种编译器进行相应的编译配置目录,c等│├─lib程序依赖的各种库,包括md5,openssl,pcre等│├─os针对不同操作系统所做的编译配置目录│└─types├─conf相关配置文件等目录,包括nginx的配置文件、fcgi相关的配置等├─contrib├─└─src源码目录├─core核心源码目录,包括定义常用数据结构、体系结构实现等├─event封装的事件系统源码目录├─httphttp服务器实现目录├─mail邮件代码服务器实现目录├─misc该目录当前版本只包含googleperftools包└─osnginx对各操作系统下的函数进行封装以及实现核心调用的目录。基本数据结构简单的数据类型在core/,大部分都映射到c语言自身的数据类型。typedefintptr_t    ngx_int_t;typedefuintptr_t   ngx_uint_t;typedefintptr_t    ngx_flag_t;其中ngx_int_t,nginx_flag_t,都映射为intptr_t;ngx_uint_t映射为uintptr_t。这两个类型在/usr/include/:/*Typesfor`void*'pointers. */#if__WORDSIZE==64#ifndef__intptr_t_definedtypedeflongint        intptr_t;# define__intptr_t_defined#endiftypedefunsignedlongint   uintptr_t;#else#ifndef__intptr_t_definedtypedefint          intptr_t;# define__intptr_t_defined#endiftypedefunsignedint      uintptr_t;#endif所以基本的操作和整形/指针类型的操作类似。字符串的数据类型nginx对c语言的字符串类型进行了简单的封装, core/ 里面包含这些封装的内容。其中定义了ngx_str_t,ngx_keyval_t,ngx_variable_value_t这几个基础类型的定义如下:typedefstruct{  size_t   len;  u_char  *data;}ngx_str_t;typedefstruct{  ngx_str_t key;  ngx_str_t value;}ngx_keyval_t;typedefstruct{  unsigned  len:28;  unsigned  valid:1;  unsigned  no_cacheable:1;  unsigned  not_found:1;  unsigned  escape:1;  u_char  *data;}ngx_variable_value_t;可以看出ngx_str_t在原有的uchar* 的基础上加入的字符串长度的附加信息,初始化使用ngx_string宏进行,他的定义为:#definengx_string(str)  {sizeof(str)-1,(u_char*)str}内存分配相关系统功能封装内存相关的操作主要在os/unix/ngx_alloc.{h,c}和core/ngx_palloc.{h,c}下。其中os/unix/ngx_alloc.{h,c}封装了最基本的内存分配函数,是对c原有的malloc/free/memalign等原有的函数的封装,对应的函数为:ngx_alloc使用malloc分配内存空间ngx_calloc使用malloc分配内存空间,并且将空间内容初始化为0ngx_memalign返回基于一个指定的alignment大小的数值为对齐基数的空间ngx_free对内存的释放操作Nginx的内存池为了方便系统模块对内存的使用,方便内存的管理,nginx自己实现了进程池的机制来进行内存的分配和释放,首先nginx会在特定的生命周期帮你统一建立内存池,当需要进行内存分配的时候统一通过内存池中的内存进行分配,最后nginx会在适当的时候释放内存池的资源,开发者只要在需要的时候对内存进行申请即可,不用过多考虑内存的释放等问题,大大提高了开发的效率。内存池的主要结构为://

最近更新

2024年台秤项目项目投资需求报告代可行性研究.. 71页

2024年水及电解质平衡调节药项目项目投资筹措.. 62页

创业计划书休闲餐吧设计 37页

创新创业日料店计划书 33页

商业计划书核心部分PPT大纲 33页

区块链能源交易商业计划书 33页

城市环保创业项目计划书 33页

古风服装设计创业计划书 33页

大学生本学期运动计划书 30页

能源—经济—环境系统建模与新能源技术扩散研.. 2页

小饰品开网店店长计划书 32页

胰岛素泵强化治疗对2型糖尿病患者血糖及炎症因.. 2页

学校毕业生岗位计划书 33页

胆固醇基普鲁兰自组装纳米粒与肝癌细胞相互作.. 2页

幼儿园大蒜的种植计划书 31页

肾脏血液分配的耦合数学模型的开题报告 2页

康定温室大棚项目计划书 32页

新员工培训项目计划书模板 35页

肝前体细胞增殖和迁移的研究的开题报告 2页

肉制品中杂环胺富集材料的制备及应用研究中期.. 2页

托老所志愿活动计划书 31页

旅行社设计招聘计划书 39页

明优电动牙刷营销计划书 33页

聚变等离子体中波—粒相互作用的非线性模拟的.. 2页

智能灯光系统项目计划书 32页

聚丙烯纤维混凝土高温性能与高温后氯离子扩散.. 2页

2024年教师外出学习总结合集15篇 39页

联合穿刺针电解加工的关键技术研究的开题报告.. 2页

2024年教师培训总结优秀 46页

服务区煎饼品牌商业计划书 41页