Linux内核
rock_joker
这个作者很懒,什么都没留下…
展开
-
Linux内存管理slab分配器
slab出现的缘由在Solaris 2.4以前,Linux内核采用基于伙伴算法实现的分区页框分配器适合大块内存的请求。伙伴将空闲页面分为m个组,第1组存储2^0个单位的内存块,,第2组存储2^1个单位的内存块,第3组存储2^2个单位的内存块,第4组存储2^3个单位的内存块,以此类推.直到m组.但是伙伴算法是以页为单位分配的,即会产生内部碎片,slab算法的出现就是为了解决这个小粒度内存分配转载 2017-08-03 17:42:56 · 225 阅读 · 0 评论 -
mmap的实现原理和应用
很多文章分析了mmap的实现原理。从代码的逻辑来分析,总是觉没有把mmap后读写映射区域和普通的read/write联系起来。不得不产生疑问:1,普通的read/write和mmap后的映射区域的读写到底有什么区别。2, 为什么有时候会选择mmap而放弃普通的read/write。3,如果文章中的内容有不对是或者是不妥的地方,欢迎大家指正。 围绕着这两个问题分析一下,其实在考虑转载 2017-04-02 21:08:20 · 539 阅读 · 0 评论 -
Linux中虚拟内存和物理内存的关系
首先,让我们看下虚拟内存:第一层理解1. 每个进程都有自己独立的4G内存空间,各个进程的内存空间具有类似的结构2. 一个新进程建立的时候,将会建立起自己的内存空间,此进程的数据,代码等从磁盘拷贝到自己的进程空间,哪些数据在哪里,都由进程控制表中的task_struct记录,task_struct中记录中一条链表,记录中内存空间的分转载 2017-08-07 15:15:23 · 1113 阅读 · 0 评论 -
存储管理之页式、段式、段页式存储
首先看一下“基本的存储分配方式”种类: 1. 离散分配方式的出现 由于连续分配方式会形成许多内存碎片,虽可通过“紧凑”功能将碎片合并,但会付出很大开销。于是出现离散分配方式:将一个进程直接分散地装入到许多不相邻的内存分区中。 下面主要介绍“离散分配”三种方式的基本原理以及步骤:2.转载 2017-03-27 20:25:00 · 3239 阅读 · 0 评论 -
linux内核--段页式管理内存的方法
一、概念物理地址(physical address)用于内存芯片级的单元寻址,与处理器和CPU连接的地址总线相对应。——这个概念应该是这几个概念中最好理解的一个,但是值得一提的是,虽然可以直接把物理地址理解成插在机器上那根内存本身,把内存看成一个从0字节一直到最大空量逐字节的编号的大数组,然后把这个数组叫做物理地址,但是事实上,这只是一个硬件提供给软件的抽像,内存的寻址方式并不转载 2017-08-06 14:49:46 · 1047 阅读 · 0 评论 -
epoll使用方法&简单原理介绍&详细的select/poll/epoll对比
一、 介绍 Epoll 是一种高效的管理socket的模型,相对于select和poll来说具有更高的效率和易用性。传统的select以及poll的效率会因为 socket数量的线形递增而导致呈二次乃至三次方的下降,而epoll的性能不会随socket数量增加而下降。标准的linux-2.4.20内核不支持epoll,需要打patch。本文主要从linux-2.4.32和linux-2.转载 2017-08-04 17:24:13 · 2017 阅读 · 0 评论 -
epoll大致结构
设想一个场景:有100万用户同时与一个进程保持着TCP连接,而每一个时刻只有几十个或几百个TCP连接时活跃的(接收到TCP包),也就是说,在每一时刻,进程值需要处理这100万连接中的一小部分连接。那么,如何才能高效地处理这种场景呢?进程是否在每次询问操作系统收集有事件发生的TCP连接时,把这100万个连接告诉操作系统,然后由操作系统找出其中有事件发生的几百个连接呢?实际上,在Linux内核2.4版转载 2017-08-04 16:58:16 · 711 阅读 · 0 评论 -
Linux虚拟地址空间布局以及进程栈和线程栈总结
一:Linux虚拟地址空间布局(转自:Linux虚拟地址空间布局) 在多任务操作系统中,每个进程都运行在属于自己的内存沙盘中。这个沙盘就是虚拟地址空间(Virtual Address Space),在32位模式下它是一个4GB的内存地址块。在Linux系统中, 内核进程和用户进程所占的虚拟内存比例是1:3,而Windows系统为2:2(通过设置Large-Addres转载 2017-08-18 21:10:34 · 399 阅读 · 0 评论 -
epoll模型讲解/源码分析
epoll模型在select/poll出现之前我们只能通过read/write的IO操作来从流中读取数据,当然在少量IO操作的时候完全是可靠的,但是当IO操作快速增长时甚至到了大规模并发阶段,这样的IO就显得捉襟见肘了。 首先我们来理解一个内核缓冲区的概念,假设A,B两个分别作为写入方与读出方,假设一开始内核缓冲区是空的,B作为读出方,被阻塞着。然后首先A往管道写入,这时候内核缓冲区由转载 2017-08-03 18:23:06 · 528 阅读 · 0 评论 -
结合内核实现源码分析 select poll epoll区别
在博客中以前的文章有介绍epoll的使用方法,但是并没有详细介绍之间的区别http://blog.csdn.net/yusiguyuan/article/details/15027821http://blog.csdn.net/yusiguyuan/article/details/15029465http://blog.csdn.net/yusiguyuan/article转载 2017-08-04 17:03:07 · 320 阅读 · 0 评论