zoukankan      html  css  js  c++  java
  • Linux内存体系及文件系统

    一.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
        支持超大文件和分区
  • 相关阅读:
    装饰器函数
    二分查找
    jmter 二次开发 IDEA 项目5.1
    python 测试框架nose
    pycharm 参数、快捷键、调试模式
    IDea 工具debug模式详细使用说明
    MySQL zip安装
    adb 设备命令
    兰亭集序 王羲之
    adb 命令实用
  • 原文地址:https://www.cnblogs.com/magicianyin/p/8529102.html
Copyright © 2011-2022 走看看