操作系统基础--现代操作系统学习笔记

文件系统

文件是操作系统对磁盘的一种抽象,是进程创建的信息逻辑单元,由操作系统管理,这部分称为文件系统。

文件

文件是一种抽象机制,它提供了一种在磁盘上保留信息而且方便以后读取的方法。这种方法可以使用户不用了解存储信息的方法、位置和实际磁盘工作方式等有关细节
文件命名
Linux区分大小写,MS-DOS不区分
FAT文件系统和NTFS
文件扩展名
Windows对扩展名赋予含义,用户或进程可以在操作系统中注册扩展名,并且规定哪个程序“拥有“拥有”该文件,双击则程序启动并运行该文件
文件结构
字节序列
记录序列
树:按“键”排序存储,索引键来查找
文件类型
普通文件
字符特殊文件:用于串行I/O类设备
块特殊文件:磁盘设备
普通文件
ASCII文件和二进制文件
二进制文件
非文本文件,有一定的内部结构,如可执行文件和存档文件
文件存取
顺序存取
随机存取文件
实现:read给出文件开始读的位置;seek操作设置当前位置
文件属性
文件创建的日期和时间、文件大小等称为文件属性
文件操作
create、delete、open、close、read、write、append、seek、get attribute、set attribute、rename
文件系统调用的示例
文件描述符file descriptor: 当程序打开一个现有文件或者创建一个新文件时,内核向进程返回一个文件描述符,类似于进程ID--PID
in_fd=open(argv[1],O_RDONALY);//打开源文件
if(in_fd<0) exit(2);//如果文件不能打开,退出
out_fd=create(argv[2],OUTPUT_MODE);//创建目标文件

目录

目录或文件夹用于记录文件
一级目录系统
根目录
层次目录系统
路径名
绝对路径名
相对路径名(当前目录)
库过程?
目录操作
create、delete、opendir、closedir、readdir、rename、link(硬链接)、unlink
符号链接

文件系统的实现

文件系统布局
磁盘分为多个分区,每个分区操作系统独立。磁盘的0号扇区称为主引导记录(Master Boot Record,MBR),用来引导计算机,在其结尾为分区表,该表给出每个分区的起始和结束的地址。表中的一个分区被标记为活动分区。在计算机被引导时,BIOS读入并执行MBR,确定活动分区后读入第一个块,称为引导块(boot block),并执行,引导分区将装载分区中的操作系统。每个分区都从启动块开始,即使没有装操作系统。
超级块包含文件系统所有关键参数,启动计算机后,读入超级块,接着是空闲块的信息
文件的实现
连续分配
在CD-ROM文件系统中可行,文件大小事先知道且不再改变extents
链表分配
在内存中采用表的链表分配
文件分配表file allocate table(FAT方案)表在内存中过大
i节点
目录的实现
目录项中提供了查找文件磁盘块所需要的信息,目录系统主要功能是把ASCII文件名映射为定位文件数据所需的信息
如何存放文件属性?将文件属性存放在i节点中而不是目录中
将文件放在目录后面的堆中
共享文件
目录C的一个文件出现在目录B的目录下,成为link(连接),文件系统变成无向有环图
解决一个用户改变共享文件,使其他用户得知的问题:1.将一个与文件本身相关联的小型数据结构(i节点)硬链接;2.让系统建立一个类型为lINK的新文件,包含它所连接的文件的路径名(符号链接)。
日志结构文件系统
日志文件系统
保存一个用于记录系统下一步将要做什么的日志
虚拟文件系统
将多种文件系统整合到一个统一的结构中,但这对用户和进程不可见
UNIX用虚拟文件系统(Virtual File System,VFS)概念来将多种文件系统统一成一个有序的框架
POSIX接口,虚拟文件系统对用户进程的更高层的接口,对实际文件系统的更低层接口

文件系统的管理和优化

磁盘空间管理
文件系统把文件分割成固定大小的块来存储,各块不一定相邻
块设计为64KB
记录空闲块:1.磁盘块链表2.位图法
记录分块而不是单个块
磁盘配额:用户文件数目和磁盘块数目限制
文件系统备份
只备份特定目录及其下的全部文件,而不是整个文件系统
增量转储
在写入磁带前进行压缩
对活动文件系统作备份容易出问题
安全问题
转储磁盘到磁带方案:物理转储和逻辑转储
物理转储:坏块的转储,无法增量转储,不能跳过选定的目录
逻辑转储从一个或几个指定的目录开始,递归地转储其给定基准日期后有所更改的全部文件和目录
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值