码迷,mamicode.com
首页 > 系统相关 > 详细

Linux内存体系及文件系统

时间:2018-03-08 17:24:02      阅读:203      评论:0      收藏:0      [点我收藏+]

标签:活性   系统数据   img   能力   问题   rup   direct   两种   有序   

一.linux内存体系

  1. 物理和虚拟内存
    技术分享图片
    • Linux内核只能直接映射第一个GB的的物理内存(896M,因为还要考虑到保留的空间)。在此上的内存被称作ZONE_NORMAL,这部分空间必须映射到最下面的1GB。
    • 虚拟内存寻址布局
      32位和64位架构Linux系统的虚拟寻址布局:
      技术分享图片
      在32位架构上,单个进程可以利用的最大地址空间是4GB,这是受到了32位虚拟内存映射的限制;64位架构,因为没有内存限制存在,每个进程能够都有可能使用巨大的地址空间。
  2. 虚拟内存管理器
    • 页帧分配:页是物理内存或虚拟内存中一组连续的线性地址,Linux内核以页为单位处理内存,页的大小通常是4KB。
    • 伙伴系统:Linux内核使用名为伙伴系统(Buddy system)的机制维护空闲页,伙伴系统维护空闲页面,并且尝试给发来页面申请的进程分配页面
    • 伙伴系统分配内存页:
      技术分享图片
    • 页帧回收:当进程请求指定数量的内存页没有可用的内存页时,内核会尝试释放特定的内存页给新的请求使用,这个过程叫内存回收.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)。
      技术分享图片
      内核首先搜索文件的i-node,在接到进程打开/var/log/messages文件的请求时,内核分析文件路径,然后搜索/(根目录)的条目,内核会找到/var目录的i-node,然后再来看看/var目录,直到找到/var/log/messages文件的i-node。一旦内核找到了文件的i-node,然后就试着访问真正的用户数据块。
      技术分享图片
    • Ext3
      ext3拥有:可用性,数据完整性,速度,灵活性
    • 日志模式
      日志(journal) 通过记录文件数据和元数据
      有序(ordered) 该模式下只记录元数据
      回写(writeback) 这个日志选项提供最快的数据访问能力
    • ReiserFS
      ReiserFS是一个快速的日志文件系统,具备优化磁盘空间利用率和快速的崩溃恢复功能
    • 日志文件系统
      日志文件系统(Journal File System,JFS)是一个全64位文件系统,能支持超大文件和分区。
    • XFS
      支持超大文件和分区

Linux内存体系及文件系统

标签:活性   系统数据   img   能力   问题   rup   direct   两种   有序   

原文地址:https://www.cnblogs.com/magicianyin/p/8529102.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!