一.linux内存体系

  1. 物理和虚拟内存
    ALT
    • Linux内核只能直接映射第一个GB的的物理内存(896M,因为还要考虑到保留的空间)。在此上的内存被称作ZONE_NORMAL,这部分空间必须映射到最下面的1GB。
    • 虚拟内存寻址布局
      32位和64位架构Linux系统的虚拟寻址布局:
      ALT
      在32位架构上,单个进程可以利用的最大地址空间是4GB,这是受到了32位虚拟内存映射的限制;64位架构,因为没有内存限制存在,每个进程能够都有可能使用巨大的地址空间。
  2. 虚拟内存管理器
    • 页帧分配:页是物理内存或虚拟内存中一组连续的线性地址,Linux内核以页为单位处理内存,页的大小通常是4KB。
    • 伙伴系统:Linux内核使用名为伙伴系统(Buddy system)的机制维护空闲页,伙伴系统维护空闲页面,并且尝试给发来页面申请的进程分配页面
    • 伙伴系统分配内存页:
      ALT
    • 页帧回收:当进程请求指定数量的内存页没有可用的内存页时,内核会尝试释放特定的内存页给新的请求使用,这个过程叫内存回收.kswapd内核线程和try_to_free_page()内核函数负责页面回收.
      kswapd通常在task interruptible状态下休眠,当一个区域中的空闲页低于阈值的时候,它就会被伙伴系统唤醒。页面主要有两种用途:页面缓存(page cahe)和进程地址空间(process address space)。
    • swap:是保证操作系统可以分配超出物理内存大小的空间,但是Linux使用swap的空间的办法更加高效。

二.linux文件系统

  1. 虚拟文件系统
    虚拟文件系统(VFS)是一个处于用户进程和各类文件系统之间的抽象接口层,VFS提供访问文件系统对象的通用对象模型(例如,i-node、文件对象、页缓存、)和方法
    • 日志
      日志系统解决了fsck工作完才能使用文件系统的问题,他先把要修改的数据写入一个叫做日志区域(journal area)的地方。
    • Ext2
      Ext2是一个简单和快速的文件系统,没有日志功能。
      Ext2的文件系统数据结构,文件系统由一个引导扇区(boot sector)开始,后面跟着块组(block groups)。
      ALT
      内核首先搜索文件的i-node,在接到进程打开/var/log/messages文件的请求时,内核分析文件路径,然后搜索/(根目录)的条目,内核会找到/var目录的i-node,然后再来看看/var目录,直到找到/var/log/messages文件的i-node。一旦内核找到了文件的i-node,然后就试着访问真正的用户数据块。
      ALT
    • Ext3
      ext3拥有:可用性,数据完整性,速度,灵活性
    • 日志模式
      日志(journal) 通过记录文件数据和元数据
      有序(ordered) 该模式下只记录元数据
      回写(writeback) 这个日志选项提供最快的数据访问能力
    • ReiserFS
      ReiserFS是一个快速的日志文件系统,具备优化磁盘空间利用率和快速的崩溃恢复功能
    • 日志文件系统
      日志文件系统(Journal File System,JFS)是一个全64位文件系统,能支持超大文件和分区。
    • XFS
      支持超大文件和分区
posted on 2018-03-08 16:16  magicianyin  阅读(692)  评论(0编辑  收藏  举报