底层
qq_35429629
这个作者很懒,什么都没留下…
展开
-
selcet、epoll的实现机制以及epoll为什么高效?
IO多路复用模型通常有三种:poll、select、epollselect一次事件处理的过程 : 需要两次拷贝和两次轮询(1次内核轮询、一次用户轮询)从用户态拷贝 文件描述符数组 到内核态。(用户态->内核态的拷贝)内核态需要遍历这个数组(轮询查看是否有事件准备就绪),如果有的话,会修改 拷贝到内核态的这个数组。(内核轮询)。内核将就绪好的数组拷贝给用户。(内核态->用户态的...原创 2020-03-23 23:55:07 · 229 阅读 · 0 评论 -
gcc编译程序四个阶段 预处理、编译、汇编、链接
我们在windows下的时候大部分通过vs等编译器来编写我们的代码,这种编译器有一个统称的名字叫做IDE(Integrated Development Environment)中文名字是集成开发环境,为什么叫它集成开发环境,是因为你只需要安装一个vs你就可以做到对代码的编辑、编译、调试等等,每次我们在vs环境下编写完代码之后拿一下f5程序自动开始执行,我们就能得到程序的执行结果,实际上在你编写完代...转载 2020-03-16 12:23:05 · 419 阅读 · 0 评论 -
malloc和free底层实现原理
前言从操作系统角度来看,进程分配内存有2种方式,分别由2个系统调用完成:brk和mmap(不考虑共享内存)。brk是将数据段(.data)的最高地址指针_edata往高地址推mmap是在进程的虚拟地址空间中(堆和栈中间,称为文件映射区域的地方)找一块空闲的虚拟内存。这两种方式分配的都是虚拟内存,没有分配物理内存。在第一次访问已分配的虚拟地址空间的时候,发生缺页中断,操作系统负责分配物理内...原创 2020-03-08 18:00:06 · 2162 阅读 · 0 评论 -
【动画】当我们在读写Socket时,我们究竟在读写什么?
【动画】当我们在读写Socket时,我们究竟在读写什么?套接字socket是大多数程序员都非常熟悉的概念,它是计算机网络编程的基础,TCP/UDP收发消息都靠它。我们熟悉的web服务器底层依赖它,我们用到的MySQL关系数据库、Redis内存数据库底层依赖它。我们用微信和别人聊天也依赖它,我们玩网络游戏时依赖它,读者们能够阅读这篇文章也是因为有它在背后默默地支持着网络通信。简单过程当客户端和...转载 2019-06-15 11:38:50 · 238 阅读 · 0 评论