深入理解Linux内核-回收页框】的更多相关文章

页高速缓存:1.磁盘高速缓存的一种 2.一种对完整的数据页进行操作的磁盘高速缓存.3.将一页数据写到块设备的时候,内核首先检查对应的页是否已经在高速缓存中,不在就添加并填充数据.4.I\O数据的传送并不是马上开始,而是要延迟几秒,从而让进程有机会对要写入的数据进行修改. 高速缓存中可能的内容:1.含有普通文件数据的页2.含有目录的页3.含有直接从块设备文件读出的页.(跳过了文件系统层)4.含有用户态进程数据的页5.属于特殊文件系统文件的页.例如共享内存的进程间通信(IPC)所使用的特殊文件系统s…
Linux 系统在为用户态进程和内核分配动态内存的时候,所作的检查是马马虎虎的对内核使用的许多磁盘高速缓存和内存高速缓存大小也同样不作限制. 页框回收算法(PFRA):1.在所有内存使用完之前,就必须执行页框回收算法2.选择目标页,它获取页框,并且使之空闲3.候选回收页:任何属于磁盘和内存高速缓存的页,以及属于进程用户态地址空间的页4.首先释放‘无害’页:先释放没有被任何进程使用的磁盘与内存高速缓存中的页5.将用户态进程的所有页定为可回收页.6.同时取消引用一个共享页框的所有页表项的映射,就可以…
内核如果给自己分配动态内存 动态内存:RAM的某些部分被永久打分配给内核,用来存放内核代码以及静态内核数据结构:剩余的部分被称为动态内存 连续物理内存区管理: 页框管理:1.页大小的选择,通常情况下主存和磁盘之间传输小数据块更高效,所以Linux选择4kb点页框2.页描述符:page结构,32字节:存放在mem_map数组中:占整个RAM的大概1%空间,即每页框(4kB)一个描述符(32B),1/128.3.非一致内存访问(NUMA):CPU对不同内存单元的访问时间不相同:因为CPU和内存的相对…
前言 本人再看深入理解Linux内核的时候发现比较难懂,看了Linux系统编程一说后,觉得Linux系统编程还是简单易懂些,并且两本书都是讲Linux比较底层的东西,只不过侧重点不同,本文就以Linux系统编程为例并且会穿插一些深入理解Linux内核的内容来写. 1 入门与基本概念 本书的背景 Linux内核3.9,gcc编译器4.8,C库2.17 文件和文件系统 文件必须打开才能访问 同一个文件可以由多个进程或者同一个进程多次打开.系统会为每个打开的文件实例提供唯一描述符.进程可以共享文件描述…
转自:http://www.cnblogs.com/likeyiyy/p/3837272.html 我对linux高端内存的错误理解都是从这篇文章得来的,这篇文章里讲的 物理地址 = 逻辑地址 – 0xC0000000:这是内核地址空间的地址转换关系. 这句话瞬间让我惊呆了,根据我的CPU的知识,开启分页之后,任何寻址都要经过mmu的转换,也就是一个二级查表的过程(386) 难道内核很特殊,当mmu看到某个逻辑地址是内核传来的之后,就不查表了,直接减去0xC0000000,然后就传递给内存控制器…
我对linux高端内存的错误理解都是从这篇文章得来的,这篇文章里讲的 物理地址 = 逻辑地址 – 0xC0000000:这是内核地址空间的地址转换关系. 这句话瞬间让我惊呆了,根据我的CPU的知识,开启分页之后,任何寻址都要经过mmu的转换,也就是一个二级查表的过程(386) 难道内核很特殊,当mmu看到某个逻辑地址是内核传来的之后,就不查表了,直接减去0xC0000000,然后就传递给内存控制器了??? 我发现网上也有人和我问了同样的问题,看这个问题 这句话太让人费解了,让人费解到以至于要怀疑…
深入理解Linux内核 读书笔记 一.概论 操作系统基本概念 多用户系统 允许多个用户登录系统,不同用户之间的有私有的空间 用户和组 每个用于属于一个组,组的权限和其他人的权限,和拥有者的权限不一样.对应的是Linux的文件权限系统 进程 和程序的区别.几个进程能并发执行同一个程序,一个进程能顺序执行几个程序 程序更像是代码片段,进程是执行代码的容器 linux是抢占式操作系统,也就是一个进程只能占用CPU一段时间.非抢占式系统中,进程如果不释放CPU,可以一直占用 内核体系结构 Linux是单…
第三章 进程 可以看到很多熟悉的结构体 进程状态: 可运行状态(TASK_ RUNNING) 进程要么在CPU上执行,要么准备执行. 可巾断的等待状态(TASK_ INTERRUPTIBLE) 进程被挂起(睡眠),直到一些条件变为真,这些条件包括:产生-个硬件巾断,释放进程正等待的系统资源,或传递一个信号,它们都能唤醒进程,即让进程的状态回到TASK RUNNING. 不可中断的等待状态(TASK_ _UNINTERRUPTIBLE) 与前一一个状态类似,但有一个例外,把信号传递到睡眼的进程不能…
1.用户和用户组 每个用户是一个或多个用户组的一名成员,组由唯一的用户组标识符(user group ID)标识.每个文件的相关权限也恰好与一个组相对应. root为超级用户, 2.模块 为了达到微内核理论上的很多优点而又不影响性能, Linux内核提供了模块(module).模块是一个目标文件,其代码可以在运行时链接到内核或从内核解除链接.这种目标代码通常由一~组函数组成,用来实现文件系统.驱动程序或其他内核上层功能.与微内核操作系统的外层不同,模块不是作为一个特殊的进程执行的.就向是一个静态…
Linux的内存管理,实际上是借助80x86的硬件分段和分页电路,将逻辑地址转化为物理地址的. 物理内存中,有一部分是一直(Permanently)映射给内核使用的,这部分主要用于保存内核的代码,以及内核中静态的数据结构体.之所以要一直将这些物理内存映射给内核,是因为这些内容(代码,静态数据结构)是在整个操作系统运行过程中都一直需要不断地引用的,如果是通过动态分配和翻译的方式来维护它们在物理内存中的位置的话,就会耗费太多的CPU时间. 这种方式可以理解为以空间换时间的策略. 物理内存中的其余部分…