操作系统③ —— 文件管理

前言

  • 操作系统对文件管理中需要对磁盘块进行管理。这其中包含对空闲磁盘块非空闲磁盘块的管理
    • 对空闲磁盘块的管理涉及文件存储空间的管理。
    • 对非空闲磁盘块的管理涉及文件的物理结构/文件的分配方式。

1. 文件存储空间管理

1.1 存储空间的划分与初始化

  • 存储空间的划分:将物理磁盘划分为一个个文件卷(逻辑卷、逻辑盘)
  • 存储空间的初始化:将各个文件卷划分为目录区、文件区。
    在这里插入图片描述

1.2 空闲磁盘块的空间管理方法

  • 为了提高为文件分配空闲空间的效率,我们需要通过空闲空间管理来维护好现有的空闲空间,避免每次为文件分配空间时去扫描整个磁盘。

1.2.1 空闲表法

  • 空闲表法就是为所有的空闲空间建立一张表,表中的内容包括空闲区的第一个块号和该空闲区的个数。
  • 请求分配磁盘空间时,需要扫描空闲表里的内容,直到找到一个合适的空闲区域为止。当用户删除一个文件时,系统也需要回收空间,也需要扫描空闲表,寻找一个空闲表条目并将第一个物理块号和它占用的块数填到这个条目中。
  • 该方法不适合管理有着大量小空闲区的磁盘,因为这样整个表会很大,扫描效率会很低。
    在这里插入图片描述

1.2.2 空闲链表法

  • 每一个空闲块里有一个指针指向下一个空闲块,这样只需要在系统中维护一个指针(令他指向第一个空闲块),便可以找到所有的空闲块,结构简单,但是不能随机访问,工作效率低,同时数据块的指针消耗了一定的存储空间。
    在这里插入图片描述

1.2.3 位图法

  • 位图就是利用二进制的每一位来表示磁盘中一个块的使用情况,磁盘上所有的块都有一个二进制位与之对应。
  • 当值为0时,表示块空闲,值为1时,块已分配
  • Linux操作系统中就采用了位图的方式来管理空闲空间

2. 磁盘调度

2.1 影响读写磁盘的时间因素

  • 寻道时间:磁头移动到指定磁道所需时间。
  • 旋转延迟时间:等待指定扇区到达磁头下的旋转时间。
  • 数据传输时间:数据在磁盘与内存之间的传输时间。

2.2 什么是磁盘调度?

  • 当多个磁盘I/O请求到来时,磁盘驱动程序需要安排I/O请求的处理顺序,这称为磁盘调度或移臂调度。

2.3 磁盘调度算法

  • 例:假如系统先后到来对柱面12,80,5,60,95,20,86,35,72,55的访问请求
    在这里插入图片描述

2.3.1 先来先服务算法(FCFS)

  • 先来先服务算法根据磁道访问请求到来的先后顺序完成请求。

在这里插入图片描述

  • 分析:
    • 柱面访问序列:12,80,5,60,95,20,86,35,72,55
    • 磁头总共移动:80-12+80-5+95-5+95-20+86-20+86-35+72-35+72-55=479个磁道距离
    • 响应一个请求平均需要移动:479/10=47.9个磁道(平均寻找长度)
  • 优点:
    • 公平,简单;
    • 如果请求访问的磁道比较集中的话,算法性能很好;
  • 缺点:
    • 很难优化寻道时间;
    • 如果有大量进程竞争使用磁盘,请求访问的磁道很分散,则FCFS在性能上很差,寻道时间很长。

2.3.2 最短寻道时间优先算法(SSTF)

  • 最短寻道时间优先算法总是优先满足距离磁头当前位置最近的访问请求。

在这里插入图片描述

  • 分析:
    • 柱面访问序列:60,55,72,80,86,95,35,20,12,5
    • 磁头总共移动:60-55+95-55+95-5=135个磁道距离
    • 响应一个请求平均需要移动:135/10=13.5个磁道(平均寻找长度)
  • 优点:
    • 性能较好,平均寻道时间短;
  • 缺点:
    • 可能产生“饥饿”现象。

2.3.3 电梯调度算法(扫描算法SCAN)

  • SSTF算法会产生饥饿的原因在于:磁头有可能在一个小区域内来回来去地移动。
  • 为了防止这个问题,可以规定,只有磁头移动到最外侧磁道的时候才能往内移动,移动到最内侧磁道的时候才能往外移动。这就是扫描算法(SCAN)的思想。由于磁头移动的方式很像电梯,因此也叫电梯算法。

在这里插入图片描述

  • 分析:
    • 柱面访问序列:60,72,80,86,95,55,35,20,12,5
    • 磁头总共移动:95-60+95-5=125个磁道距离
    • 响应一个请求平均需要移动:125/10=12.5个磁道(平均寻找长度)
  • 优点:
    • 性能较好,平均寻道时间较短,不会产生饥饿现象。
  • 缺点:
    • 只有到达最边上的磁道时才能改变磁头移动方向;
    • SCAN算法对于各个位置磁道的响应频率不平均
      • 如:假设此时磁头正在往右移动,且刚处理过55号磁道,那么下次处理55号磁道的请求就需要等磁头移动很长一段距离;而响应了95号磁道的请求之后,很快又可以再次响应95号磁道的请求了

2.3.4 循环扫描算法(C-SCAN)

  • 磁头仅在一个移动方向上提供访问服务
  • 磁臂从磁盘开始端柱面至结束端柱面移动的过程中依次处理途经请求,然后,直接返回开始端柱面重复进行,归途中并不响应请求。开始端与结束端柱面构成了一个循环。

在这里插入图片描述

  • 分析:
    • 柱面访问序列:60,72,80,86,95,100,0,5,12,20,35,55
    • 磁头总共移动:100-60+55-0=95个磁道距离
    • 响应一个请求平均需要移动:95/10=9.5个磁道(平均寻找长度)
  • 优点:
    • 比起SCAN来,对于各个位置磁道的响应频率很平均。
  • 缺点:
    • 只有到达最边上的磁道时才能改变磁头移动方向;并且,磁头返回时其实只需要返回到5号磁道即可,不需要返回到最边缘的磁道。

3. 硬链接和软链接

  • 硬链接:
    • 以⽂件副本的形式存在,指向同⼀个索引节点
    • 索引节点中有链接计数 count,count=0时真正删除⽂件和索引节点
    • 不能跨文件系统
  • 软链接(快捷方式):
    • 数据块中存放的内容是另⼀⽂件的路径名的指向
    • 根据路径查找共享⽂件,即使源⽂件已经被删除,还是会去查找但结果会显示查找失败
    • 查询多级⽬录,多次I/O操作,软链接更慢
    • 可以跨文件系统
  • 共同点:都不会将原本的档案复制⼀份,只会占⽤⾮常少量的磁盘空间

4. 一次I/O在什么量级

  • 毫秒量级
<think>好的,用户想知道如何检查电脑是否支持GPU,特别是NVIDIA GPU和CUDA。他们提供了一段关于使用nvidia-smi命令的说明。我需要一步步引导他们操作,并确保解释清晰易懂。 首先,用户可能需要确认他们的电脑是否有NVIDIA显卡。我应该先建议他们检查设备管理器或者系统信息,这样即使没有安装驱动也能初步判断硬件是否存在。如果设备管理器里有NVIDIA的显卡,但驱动没装,可能无法运行nvidia-smi,这时候需要指导他们安装驱动。 接下来,使用nvidia-smi命令是关键步骤。需要详细说明如何打开命令提示符,输入命令,并解释输出结果中的CUDA版本信息。如果用户运行命令后看到CUDA版本,说明支持;如果没有,可能需要检查驱动安装情况或者硬件是否支持CUDA。 还要考虑到用户可能遇到的常见问题,比如命令无法识别,这可能意味着驱动未安装或者路径问题。这时候需要给出解决方法,比如下载驱动或者添加系统路径。 另外,可能需要补充其他方法,比如通过NVIDIA控制面板查看信息,或者使用第方软件如GPU-Z,这样用户有更多选项来确认他们的GPU情况。 最后,确保语言简洁,避免使用技术术语过多,用中文口语化表达,让用户容易理解。检查步骤是否有遗漏,比如是否需要管理员权限运行命令提示符,或者提醒用户更新驱动到最新版本以获得准确的CUDA支持信息。</think>检查电脑是否支持GPU加速及CUDA的详细步骤如下: 1. 确认硬件配置 - 打开Windows设备管理器(Win+X > 设备管理器) - 展开"显示适配器"分支 - 若看到"NVIDIA"开头的设备(如NVIDIA GeForce RTX 3060),则存在NVIDIA GPU 2. 使用nvidia-smi命令验证 ① 打开命令提示符: - Win+R输入"cmd"回车 - 或右键开始菜单选择"Windows终端" ② 输入命令: ```bash nvidia-smi ``` (注意不需要任何参数) ③ 查看输出示例: ``` +---------------------------------------------------------------------------------------+ | NVIDIA-SMI 535.98.01 Driver Version: 535.98.01 CUDA Version: 12.2 | |-----------------------------------------+----------------------+----------------------+ | GPU Name TCC/WDDM | Bus-Id Disp.A | Volatile Uncorr. ECC | | Fan Temp Perf Pwr:Usage/Cap | Memory-Usage | GPU-Util Compute M. | |=========================================+======================+======================| | 0 NVIDIA GeForce RTX 4060 L... WDDM | 00000000:01:00.0 On | N/A | | 0% 45C P8 18W / 115W | 495MiB / 8192MiB | 0% Default | +-----------------------------------------+----------------------+----------------------+ ``` 3. 关键判断点: ✓ 出现表格信息:说明已安装NVIDIA驱动 ✓ CUDA Version显示具体版本(如12.2):表明支持GPU加速 ❌ 若提示"不是内部或外部命令":可能未安装驱动或未添加系统路径 4. 常见问题处理: ① 驱动未安装: - 访问NVIDIA官网(https://www.nvidia.cn/Download/index.aspx) - 自动检测显卡型号下载驱动 - 安装时选择"自定义安装"并勾选"CUDA Toolkit" ② 命令无法识别: - 检查驱动安装路径(默认:C:\Program Files\NVIDIA Corporation\NVSMI) - 将该路径添加到系统环境变量PATH中 5. 补充验证方法: ① 通过NVIDIA控制面板: - 右键桌面空白处选择"NVIDIA 控制面板" - 点击左下角"系统信息" > 查看"CUDA 核心"数量 ② 使用GPU-Z工具: - 下载安装GPU-Z(https://www.techpowerup.com/gpuz/) - 查看"Technologies"栏是否包含CUDA支持标识 注:CUDA版本显示的是驱动支持的最高版本,实际开发需安装对应版本的CUDA Toolkit。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值