栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

2022-05-12 linux文件系统分析思路

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

2022-05-12 linux文件系统分析思路

摘要:

以架构师的要求, 肢解linux文件系统的设计, 并进一步采取自己的文件系统

文件系统:
  1. 文件系统基本概念
    1. 什么是文件系统
      1. 文件系统的标准POXIS接口有哪些
        1. open/read/write/close
        2. 如何做出一个抽象的文件系统以支持多种不同的文件系统的实现
        3. VFS与具体的文件系统的实现的交互接口是什么
      2. 文件系统所处理事情的范围的边界是什么
        1. unix哲学里一切皆是文件
          1. 保持了操作逻辑统一
            1. 打开, 读写, 关闭
            2. 最上层的接口统一, 可便于移植
          2. 必须虚拟化出一个抽象的文件系统来兼容各个具体的文件系统
            1. 统一的接口那么就必须是抽象的, 将实现剥离
            2. 由具体的文件系统或者设备驱动做具体的操作
              1. 例如socket后边的vfs是和磁盘文件系统完全不同
        2. 只要包含一定的数据序列, 都是文件
          1. 本地磁盘文件
          2. socket网络通道
          3. io设备, 也被抽象成了文件
      3. 文件系统与数据库系统的区别有哪些
        1. 数据库增加了事务支持
          1. 事务是什么? 有哪些特性? ACID
          2. 如何实现事务?
            1. 锁可以分为哪几类
              1. 表锁,行锁, 页锁
              2. 乐观锁, 悲观锁, 读写锁
            2. 隔离性会存在哪些不同的问题?
              1. 幻读
              2. 脏读
              3. 不可重复读
        2. 数据库为了优化写/读绕开了文件系统亲自处理磁盘分页管理
        3. 内存型数据库redis如何使用文件系统的
          1. 如何将内存中的数据刷入linux页缓存 flush
          2. 如何将页缓存数据刷入磁盘 sync
        4. 关系型数据库如何使用文件系统的
          1. postgres的数据文件是如何组织的
          2. postgres的数据文件的格式是什么样的
          3. postgres的数据文件如何管理页缓存
          4. postgres的数据文件如何实现B+树
            1. 常规的b树实现方式是怎样的
              1. b树如何做到重平衡的
              2. b树的查询复杂度是多少
              3. b树的写最多需要读几次数据页
            2. b树与b+树有哪些区别
    2. 文件系统在linux内核中处于哪种层次
      1. linux内核可以分为哪些大的模块
        1. 内存管理
        2. 进程管理
        3. 设备管理
        4. 文件系统
      2. linux的vfs有哪些抽象出的概念
        1. super, inode, dentry, file
        2. 页缓存层
          1. 常规io: 磁盘->(DMA)内核页缓存->(cpu数据拷贝)用户空间
          2. mmap:  磁盘->(DMA)内核页缓存->(cpu地址映射)用户空间
        3. 通用块bio层
      3. 文件系统处于内核, 如何与用户空间的进程交互
        1. 内核与用户空间的区别是什么?
          1. 内存地址空间不同, 用户进程的地址空间都是虚拟的,存在隔离
          2. 指令执行权限不同, 内核具有cpu的所有权限
        2. 用户空间的进程如何与内核交互
          1. 系统调用
            1. 不同的体系结构如何实现系统调用
              1. x86
                1. 软中断int
            2. 用户进程使用了系统调用之后发生了什么
              1. 内存地址空间的切换
              2. 代码段的执行权限的切换
          2. 有哪些用户态库大量使用了系统调用
            1. glibc
              1. malloc申请大内存时使用了内核的mmap
                1. 使用匿名内存映射, 将进程虚拟地址空间映射到页缓存
              2. malloc申请小内存时候使用brk堆空间
            2. poxis线程
              1. 内核没有线程的概念, 只有task
              2. poxis使用了内核提供的clone创造了一个新的task, 但是和父task共享堆地址空间, 设置一些特殊的标识, 模拟出线程的概念
              3. poxis中的锁的概念, 是在用户态实现的
                1. 原子锁
                2. 读写锁
                3. 互斥锁
    3. 文件系统模块与linux内核的其他模块如何交互的
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/880767.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号