
后端
文章平均质量分 83
z_ryan
这个作者很懒,什么都没留下…
展开
-
剖析linux下的零拷贝技术(zero-copy)
背景 大多数的网络服务器是基于server-client模式的。在这当中,下载是一个很常见的功能。此时服务器端需要将主机磁盘上的文件发送到客户端上去。传统的 Linux 操作系统的标准 I/O 接口是基于数据拷贝操作的,即 I/O 操作会导致数据在操作系统内核地址空间的缓冲区和应用程序地址空间定义的缓冲区之间进行传输。那么传统的I/O操作过程是咋样的呢?(下面是具体说明,以read和writ...原创 2018-03-18 20:47:52 · 9676 阅读 · 1 评论 -
线程与进程的简单比较
本篇文章主要对线程与进程之间的区别作一简单总结,从内核实现的区别,双方的地址空间、共享的数据、操作原语的比较和多线程与多进程的区别这几方面,做一简单说明。1、Linux内核线程实现原理 Unix系统中,早期是没有“线程”概念的,80年代才引入,借助进程机制实现出了线程的概念。因此在这类系统中,进程和线程关系密切。 1. 轻量级进程(light-weight process),也...原创 2018-03-20 20:32:03 · 1509 阅读 · 0 评论 -
线程控制原语小结
在本篇博客中主要总结一下linux下,线程的一些控制原语。 在Linux环境下,所有线程特点,失败均直接返回错误号。所以我们可以利用strerror()将错误信号所代表的具体错误打印出来。参数为发生错误所返回的错误信号。例如: ret = pthread_create(&tid ,NULL ,thrd_func ,NULL);if(ret != 0){ fpri...原创 2018-03-20 21:39:53 · 1315 阅读 · 0 评论 -
简单剖析B树(B-Tree)与B+树
注意:首先需要说明的一点是:B-树就是B树,没有所谓的B减树引言 我们都知道二叉查找树的查找的时间复杂度是O(log N),其查找效率已经足够高了,那为什么还有B树和B+树的出现呢?难道它两的时间复杂度比二叉查找树还小吗? 答案当然不是,B树和B+树的出现是因为另外一个问题,那就是磁盘IO;众所周知,IO操作的效率很低,那么,当在大量数据存储中,查询时我们不能一下子将所有数据加载到...原创 2018-03-25 11:30:09 · 71500 阅读 · 27 评论 -
malloc的底层实现(ptmalloc)
前言 本文主要介绍了ptmalloc对于内存分配的管理。结合网上的一些文章和个人的理解,对ptmalloc的实现原理做一些总结。内存布局 介绍ptmalloc之前,我们先了解一下内存布局,以x86的32位系统为例: 从上图可以看到,栈至顶向下扩展,堆至底向上扩展, mmap 映射区域至顶向下扩展。 mmap 映射区域和堆相对扩展,直至耗尽虚拟地址空间中的剩余区域,...原创 2018-04-15 16:54:44 · 30264 阅读 · 5 评论 -
深度剖析c语言main函数---main函数的参数传递
在上文中,我们主要讲了c语言main函数的返回值问题,本文主要将main函数的参数传递。main函数传参 首先说明的是,可能有些人认为main函数是不可传入参数的,但是实际上这是错误的。main函数可以从命令行获取参数,从而提高代码的复用性。函数原形 为main函数传参时,可选的main函数原形为:int main(int argc , char* argv[],cha...原创 2018-07-10 00:20:38 · 18937 阅读 · 4 评论 -
深度剖析c语言main函数---main函数的执行顺序
在之前的文章中,介绍了main函数的返回值 和 main函数的传参,本文主要介绍一下main函数的执行顺序。可能有的人会说,这还用说,main函数肯定是程序执行的第一个函数。那么,事实果然如此吗?相信在看了本文之后,会有不一样的认识。为什么说main()是程序的入口 linux系统下程序的入口是”_start”,这个函数是linux系统库(Glibc)的一部分,当我们的程序和Gl...原创 2018-07-10 14:09:37 · 9388 阅读 · 1 评论 -
C函数的调用过程原理和栈分析
在编程中,相信每个人对函数都不陌生,那么你真正理解函数的调用过程吗?当一个c函数被调用时,一个栈帧(stack frame)是如何被建立,又如何被消除的。本文主要就是来解决这些问题的,不同的操作系统和编译器可能有所不同,本文主要介绍在linux下的gcc编译器。栈帧 我们先来看一下,一个典型的栈帧的样子: 首先介绍一下这里面非两个重要的指针:ebp和esp; ...原创 2018-07-13 12:01:57 · 5474 阅读 · 0 评论