
Linux内核
文章平均质量分 87
_cdcupt
cs大法好
展开
-
内存寻址(中)
分页机制分页(paging)内存管理方案允许进程的物理地址空间可以是非连续的。分页避免了将不同大小的内存块匹配到交换空间上这样的麻烦,许多内存管理方案都有这个问题。各种形式的分页由于其优越性,因此常为绝大多数操作系统所采用。 传统上,分页支持一直是由硬件来处理的。然而,最近的设计是通过将硬件和操作系统相配合来实现分页。基本原理分页方法将物理内存分为固定大小的帧(frame);将逻辑内存分为对应大小原创 2016-09-26 15:06:32 · 385 阅读 · 0 评论 -
内存寻址(上)
在操作系统中,一般会引用三种地址描述方式:逻辑地址(logical address)每一个逻辑地址由一个段地址和偏移地址组成。在有地址变换功能的计算机中,访问指令给出的地址 (操作数) 叫逻辑地址,也叫相对地址。线性地址(linear address)由一块连续的虚拟内存空间组成。在80x86微处理器中是一个32位无符号整数,可以用来表示4GB的地址,也就是4294967个内存单元。物理地址(p原创 2016-09-26 08:59:01 · 470 阅读 · 0 评论 -
内存寻址(下)
物理内存布局在初始化阶段,内核必须建立一个物理地址映射来指定哪些物理地址范围对内核可用而哪些不可用。内核将下列页框记为保留: 在不可用的物理地址范围内的页框 含有内核代码和已初始化数据结构的页框一般来说,Linux内核安装在RAM中从物理地址0x00100000开始的地方,也就是说,从第二个MB开始。所需页框总数依赖于内核的配置方案,典型的配置所得到的内核可以被安原创 2016-09-28 16:35:20 · 407 阅读 · 0 评论 -
Linux内存管理slab分配器
slab出现的缘由在Solaris 2.4以前,linux内核采用基于伙伴算法实现的分区页框分配器适合大块内存的请求。伙伴将空闲页面分为m个组,第1组存储2^0个单位的内存块,,第2组存储2^1个单位的内存块,第3组存储2^2个单位的内存块,第4组存储2^3个单位的内存块,以此类推.直到m组.但是伙伴算法是以页为单位分配的,即会产生内部碎片,slab算法的出现就是为了解决这个小粒度内存分配的问题出现原创 2017-07-30 00:26:25 · 545 阅读 · 0 评论 -
高效epoll原理
epoll简介epoll是什么?按照man手册的说法:是为处理大批量句柄而作了改进的poll。当然,这不是2.6内核才有的,它是在2.5.44内核中被引进的(epoll(4) is a new API introduced in Linux kernel 2.5.44),它几乎具备了之前所说的一切优点,被公认为Linux2.6下性能最好的多路I/O就绪通知方法。epoll常规用法epoll相关的系统原创 2017-04-17 21:59:24 · 274 阅读 · 0 评论 -
epoll模型讲解/源码分析
epoll模型在select/poll出现之前我们只能通过read/write的IO操作来从流中读取数据,当然在少量IO操作的时候完全是可靠的,但是当IO操作快速增长时甚至到了大规模并发阶段,这样的IO就显得捉襟见肘了。 首先我们来理解一个内核缓冲区的概念,假设A,B两个分别作为写入方与读出方,假设一开始内核缓冲区是空的,B作为读出方,被阻塞着。然后首先A往管道写入,这时候内核缓冲区由空的状态变到原创 2017-08-03 16:57:08 · 483 阅读 · 0 评论 -
CAS原理
转自:http://leexuehan.github.io/2015/09/03/CAS-%E5%8E%9F%E7%90%86/CASCAS有3个操作数,内存值V,旧的预期值A,要修改的新值B。当且仅当预期值A和内存值V相同时,将内存值V修改为B,否则什么都不做。下面请先看一个简单的计数器的例子:class Counter { private int value; public sync转载 2017-09-26 14:25:51 · 386 阅读 · 0 评论 -
Linux信号处理机制
信号本质上是在软件层次上对中断机制的一种模拟,其主要有以下几种来源:程序错误:除零,非法内存访问;外部信号:终端Ctrl-C产生SGINT信号,定时器到期产生SIGALRM;显式请求:kill函数允许进程发送任何信号给其他进程或进程组。目前Linux支持64种信号。信号分为非实时信号(不可靠信号)和实时信号(可靠信号)两种类型,对应于 Linux 的信号值为 1-31 和 34-64。信号是转载 2017-09-03 15:26:21 · 596 阅读 · 0 评论