美文网首页操作系统学习笔记
文件系统(三)文件操作、文件缓存/共享/保护/恢复

文件系统(三)文件操作、文件缓存/共享/保护/恢复

作者: minlover | 来源:发表于2017-06-10 01:01 被阅读12次

    (一)文件操作

    VFS 在读写操作之外提供了文件打开和关闭操作。

    1、打开操作(open)——负责文件路径名解析和权限检查

    打开操作创建file结构,一个 file 结构描述一个进程对一个文件或一种 I/O 操作方式,成为打开文件对象。ucore 的 file 结构:

    ucore 为每个进程准备了一个 file 结构数组,称为文件描述符表:

    idleproc 进程的 files_struct 是单独建立的,其余进程是从父进程复制的。

    文件打开操作 open 。(具体过程见 ppt)

    获得文件描述符后可对其进程行I/O 操作。在所有的文件I/O操作中,用文集爱你描述符代替文件名,避免路径名的重复解析。读写操作后会自动调整读写头的位置。

    2、关闭操作(close)——释放打开文件对象

    具体过程见 ppt。

    3、文件读操作(read)

    具体过程见 ppt。

    4、文件写操作(write)

    具体过程见 ppt。

    文件读写两种方式:①直接读写(read、write);②间接读写(mmap 类系统调用--> 将文件映射到进程,读写时缺页,将工作交给虚拟内存管理)

    5、

    6、Linux 的 open、close、read、write、seek (具体见 ppt)

    关闭操作不会删除文件,不能再用描述符使用,还在系统中还可以再次打开。问阿金一旦被删除,就永远从系统消失了。write 返回的是真正写入的字节数,可能少于 count 参数。seek 将文件fd的读写头重定位到参数 offset 处。


    (二)文件缓存/共享

    1、文件缓存

    暂存文件内容的内存称为文件缓存。

    建立缓存的方法——链表、Hash 表、基数树(类似于多级页表)

    2、文件共享

    共享 --> 一个文件能被多个用户或进程使用 -->可以实现进程间通信。

    文件属主(owner)——文件拥有者;文件组(group)——一组用户,可共享该文件;其他用户(others)——既不是属主也不是同组用户

    文件的共享权限:

    多个用户同时存取一个共享文件 --> 保持文件的一致性(完整性) --> 与进程的同步密切相关

    3、文件保护

    保护 -->文件存取控制,限制用户对文件的存取操作。

    对文件的操作通常包括:读、写、执行、执行、追加、删除、列表、拷贝、换名等。

    (1)直接保护方法

    为每个文件或者目录定义一个存取控制表ACL(Access Control List),规定各用户可执行的操作。

    浓缩 ACL——把用户分为三类(文件属主、同组用户、其他用户),值规定每类用户的存取权限。将文件的存取权限浓缩为三种(读、写、执行)。

    若觉得9位太粗,可以加 ACL,Linux 对两种均支持。--> 位图 + ACL

    Windows --> DACL(自主存取控制表)

    (2)其他保护方法

    4、文件恢复

    保证文件系统可靠性 --> eg:RAID、备份与恢复

    备份方法:全量备份、增量备份 --> 异地备份、灾难恢复

    由于缓存,文件系统的数据同时存在于内存和外存,需要保证一致性 --> 事务和日志。

    (1)事务:完成一个特定任务所需的一组操作称为一个事务

    为保证文件系统的一致性,事务应具有原子性。 --> 需在外存增加一个日志

    (2)日志:记录各种事务

    EXT4上增加了日志,EXT3还没有。

    日志与事务能够保证系统的一致性。

    相关文章

      网友评论

        本文标题:文件系统(三)文件操作、文件缓存/共享/保护/恢复

        本文链接:https://www.haomeiwen.com/subject/vgrxqxtx.html