当前位置:网站首页>二十六、文件系统API(设备在应用间的共享;目录和文件API)

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

2022-07-05 05:21:00 [T]

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

终端

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)可以将把设备挂载在任何位置

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

mount /dev/sdb /mnt

umount mnt

四、Linux的启动流程

Linux-minimal运行在‘initramfs’模式

1、Linux-minimal启动流程

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

2、文件的挂载

文件 = 磁盘上的虚拟磁盘

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

(1)Linux的处理方式

        创建一个loopback(回环)设备

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

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

        strace查看挂载的流程

ioctl(3, LOOP_CTL_GET_FREE)
ioctl(4, LOOP_SET_FD, 3)

五、目录管理

1、mkdir

(1)创建一个目录

(2)可以设置权限

2、rmdir

(1)删除一个空目录

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

        rm -rf 遍历删除

六、硬链接

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

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

七、软链接

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

1、软链接也是一个文件

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

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

原网站

版权声明
本文为[[T]]所创,转载请带上原文链接,感谢
https://blog.csdn.net/liutit/article/details/125570702