《现代操作系统》阅读笔记二

三、文件系统

文件

  1. 文件命名,文件结构,文件类型
  2. 文件存取:顺序存取,随机存取
  3. 文件属性:如权限,创建修改时间等
  4. 文件操作:常用系统调用如创建,打开等;open:文件属性和磁盘地址装入内存

目录

  1. 层次目录系统,路径名
  2. 目录操作:常用系统调用如创建,打开等;硬连接:文件的节点技术器增加,修改同一份文件。软连接只是符号连接,快捷方式,可以跨越磁盘界限

文件系统的实现

  1. 主引导记录MBR:磁盘的0号扇区,引导计算机
  2. 分区表:MBR后面,记录每个分区的起始结束地址
  3. 分区结构:引导块,超级块,空闲管理,i节点,根目录,文件和目录
  4. 过程:计算机被引导,BIOS读入并执行MBR,确定活动分区,读入并执行第一个块引导快boot block,引导块中的程序将装载该分区中的操作系统
  5. 每个分区都从一个启动块开始
  6. 超级块:启动块之后,包括文件系统类型用的魔数,文件系统中数据块的数量等
  7. 空闲管理:超级块之后,位图或链表形式

文件的实现

  1. 连续分配:删除时会产生磁盘空洞,写入时需要先挑选合适大小的磁盘空洞,常见于CD-ROM
  2. 链表分配:不利于随机存取,指针占了一些字节,致使存储数据不再是2的整数幂
  3. 文件分配表FAT:把磁盘块的指针放在内存的一个表中,目录项中记录起始块号即可。缺点是需要将整个表放在内存中,不适用于大磁盘
  4. i节点:每个文件一个i节点数据结构,列出文件属性和文件块的磁盘地址,具有指针可以指向包含磁盘块地址的块的地址

日志文件系统

  1. 如NTFS和Linux ext3
  2. 基本思想:保存一个用于记录系统下一步将要做什么的日志,当系统崩溃重启时可以查看日志,完成未完成任务
  3. 先写日志项列出要完成的动作,写入磁盘,完成动作后擦除日志项

虚拟文件系统

  1. 和文件相关的系统调用POSIX接口指向虚拟文件系统,由虚拟文件系统调用底层实际的文件系统

文件系统管理和优化

  1. 选定块大小:性能和空间利用率不可兼得
  2. 记录空闲块:位图,空闲列表
  3. 磁盘配额:通过打开文件表中的配额指针,找到配额表中用户的配额表项。
  4. 文件系统的一致性:块检查检查使用表和空闲表并进行校正,目录检查检查文件使用表和文件i节点的计数。rm操作只修改i节点,没有把磁盘块返回空闲表

文件系统性能

如果只需要读一个字,内存比磁盘方位快百万数量级

高速缓存

  1. 逻辑上属于磁盘,实际保存在内存中。与分页类似,置换算法类似
  2. 系统调用SYNC强制性把全部修改过的块写回磁盘,若没有SYNC就移动磁盘,则数据丢失

块提前读

  1. 在需要用到块时,试图提前将其写入高速缓存,提高命中率,如完成k块操作时,预读k+1块到高速缓存
  2. 不适用于随机存取文件

减少磁盘臂运动

  1. 把有可能顺序存取的块放在一起,最好是同一个柱面,减少磁盘臂运动
  2. 使用i节点的文件系统中,需要两次磁盘访问,访问i节点和访问块。所以将i节点存放在磁盘中部,可以减少寻道时间

磁盘碎片整理

  1. 通过移动或复制,使空闲空间连成一片

四、输入/输出

IO硬件原理

IO设备

  1. 块设备:硬盘,CD-ROM,USB
  2. 字符设备:不可寻址没有寻道操作,打印机,网路接口,鼠标等
  3. 时钟,内存映射显示器等

设备控制器

  1. 有寄存器用来与CPU通信
  2. 数据缓冲区
  3. 内存映射IO:每个控制寄存器映射到内存空间中被分配唯一的内存地址
  4. 避免对设备控制器进行高速缓存,操作系统必须管理选择性高速缓存
  5. DMA:直接存储器存取,调控多个设备的数据传送
  6. 中断:设备中断发出信号,由中断控制器检测

IO软件原理

  1. 设备独立性
  2. 统一命名
  3. 错误处理
  4. 同步阻塞,异步中断驱动:大部分物理IO是异步的,CPU启动传输便去做别的
  5. 缓冲
  6. 共享设备和独占设备
  7. 程序控制IO:轮询设备寄存器是否就绪,直到全部IO完成,一直占用CPU
  8. 中断驱动IO:中断发生在每个字符上
  9. DMA控制IO:将中断的次数从每个字符减少的每个缓冲区
  10. 设备驱动程序:为了访问设备的硬件,通常必须是操作系统内核的一部分

磁盘组织成柱面,每个柱面包含若干磁道,磁道数与垂直堆叠的磁头个数相同,磁道分成若干扇区

  1. SATA:磁盘驱动器包含微控制器,负责高速缓存,重叠寻道,坏块重映等
  2. RAID:将一个装满磁盘的盒子安装到计算机,用RAID控制器替换磁盘控制器

磁盘臂调度算法

  1. 磁盘读写时间因素:寻道占主导,旋转延迟,实际数据传输
  2. 磁盘驱动程序维护一张表,按柱面号索引,每个柱面未完成的请求组成一个链表
  3. SSF:最短寻道优先算法,获得最小响应时间与公平性有冲突
  4. 电梯算法:上下移动完成未完成的请求
  5. 磁盘控制器高速缓存:每次将邻近的扇区也读取

时钟

  1. 时钟负责维护时间,根据已知的时间间隔产生中断。防止进程垄断CPU等
  2. 大多数计算机具有一个由电池供电的备份时钟

时钟软件

  1. 维护日时间,防止进程超时,记录CPU使用,处理alarm系统调用,监视定时器,统计信息收集