• 二十六、文件系统API(设备在应用间的共享;目录和文件API)


    一、设备咱应用程序之间的共享

    终端

    1、多个进程并行打印,如何保证不混乱

    2、多个进程并行读,就会发生竞争

    GPU(CUDA)

    1、每个CUDA应用程序都是一系列CUDA的API调用

    2、全部有驱动实现调度(隔离)

    磁盘需要支持数据的持久化

    1、应用程序的数据

    (1)可执行文件和动态链接库

    2、用户数据

    3、系统数据

    (1)manpage

    (2)系统配置

    二、文件系统:虚拟磁盘

    目标:

    1、提供合理的API使得多个应用程序能共享数据

    2、提供一定的隔离,使得恶意/错误不会大量奔溃

    存储设备(字节序列)的虚拟化

    1、磁盘(I/O设备)=一个可以读写的字节序列

    2、虚拟磁盘(文件)=一个可以读写动态字节序列

    (1)命名管理

            虚拟磁盘的名称,检索和便利

    (2)数归管理

            随机访问(读写)

    三、虚拟磁盘:命令管理

    信息的局部性:将虚拟磁盘(文件)组织成层次结构

    1、目录树

    目录的根

    1、Windows

    C:\Program Files\

    D:\User

    2、Unix/Linux

    (1)只有一个根目录

    /home/xxx

    3、目录树的拼接

    Unix:允许任意目录”挂载“一个设备代表的目录树

    (1)可以将把设备挂载在任何位置

    1. mount系统调用
    2. int mount(const char *source, const char *target,
    3. const char *filesystemtype, unsigned long mountflags,
    4. const void *data);

    mount /dev/sdb /mnt

    umount mnt

    四、Linux的启动流程

    Linux-minimal运行在‘initramfs’模式

    1、Linux-minimal启动流程

    1. export PATH=/bin
    2. busybox mknod /dev/sda b 8 0
    3. busybox mkdir -p /newroot
    4. busybox mount -t ext2 /dev/sda /newroot #将/dev/sda设备挂载在/newroot
    5. exec busybox switch_root /newroot/ /etc/init

    2、文件的挂载

    文件 = 磁盘上的虚拟磁盘

    挂载文件 = 在虚拟磁盘上虚拟出的虚拟磁盘

    (1)Linux的处理方式

            创建一个loopback(回环)设备

            设备驱动把设备的read/write翻译成文件的read/write

            使用lsblk查看系统中的block devices(strace)

            strace查看挂载的流程

    1. ioctl(3, LOOP_CTL_GET_FREE)
    2. ioctl(4, LOOP_SET_FD, 3)

    五、目录管理

    1、mkdir

    (1)创建一个目录

    (2)可以设置权限

    2、rmdir

    (1)删除一个空目录

    (2)没有”递归删除“的系统调用

            rm -rf 遍历删除

    六、硬链接

    需求:同一个运行库有多个版本

    使用一个链接可以避免一份拷贝

    七、软链接

    软链接:在文件里存储一个跳转提示

    1、软链接也是一个文件

    (1)当引用这文件时,去找另一个文件

    (2)可以跨文件系统,可以链接目录

  • 相关阅读:
    解决No Feign Client for loadBalancing defined,修改Maven依赖
    fusion cube
    JAVA毕业设计高校考务管理计算机源码+lw文档+系统+调试部署+数据库
    CF785C (1600)
    洛谷 P1106 删数问题
    List<Object>集合对象属性拷贝工具类
    Vscode GDB 查看内存的值
    【网络安全-sql注入(5)】sqlmap以及几款自动化sql注入工具的详细使用过程(提供工具)
    【python】swjtu西南交大互联网搜索引擎 项目一 报告:搜索引擎文本预处理
    动手学深度学习—— 1.引言
  • 原文地址:https://blog.csdn.net/liutit/article/details/125570702