操作系统入门:位示图、主存分配、页面置换与磁盘管理

理中的主存分配与回收、页式虚拟存储管理中的页面置换,以及磁盘空闲块的管理与回收。以下是完整内容:

操作系统入门:位示图、主存分配、页面置换与磁盘管理

操作系统听起来复杂,但其实就像一个超级管家,帮我们管理电脑的资源。如果你是个小白,看到"位示图法""页面置换"之类的高深词可能会懵。这篇博客会用最简单的语言,带你搞懂这些概念:位示图是什么,文件目录怎么找,分页式存储的主存怎么分配和回收,虚拟存储的页面怎么换,磁盘空闲块怎么管。一步步来,保证你能看懂!


1. 位示图法:资源管理的"点阵图"

什么是位示图法?

  • 定义: 位示图(Bitmap)是用一串0和1表示资源使用情况的方法。每个"位"(bit)代表一个资源块,0表示空闲,1表示已占用。
  • 生活比喻: 像电影院的座位表,每个座位一个格子,空着标0,有人标1。一眼就能看出哪有空位。

用在哪里?

  • 管理内存、磁盘等资源。比如磁盘空闲块的管理(后面会讲)就常用位示图。

怎么实现的?

  • 例子 : 假设有8块资源,位示图是01001100
    • 第1块(0):空闲。
    • 第2块(1):占用。
    • 第5、6块(1):占用。
  • 操作系统扫一遍位示图,找0就知道哪块空着。

小白Tips

  • 优点:简单、直观,占空间少。
  • 刷题可能问:"位示图怎么找空闲块?" 答案是:找第一个0。

2. 文件目录查找:找文件靠什么?

文件目录是啥?

  • 文件目录像电脑里的"通讯录",记录每个文件的位置(在磁盘上的地址)。

怎么查找?

  • 方法 : 常用树形结构 (目录树)+索引表
  • 生活比喻: 像找书,先看图书馆的分类(目录树),再查书的具体架号(索引)。
  • 步骤 :
    1. 从根目录开始(比如/)。
    2. 按路径一层一层找(比如/home/user/file.txt)。
    3. 每个目录下有个表,记录文件名和地址,找到目标文件的磁盘位置。

实现细节

  • FCB(文件控制块): 每个文件有个"身份证",存着文件名、大小、地址等。
  • 索引节点(inode): Unix/Linux常用,记录文件的具体位置,目录只存文件名和inode号。

小白Tips

  • 刷题可能问:"目录查找快吗?" 答案是:树形结构很快,但层级深了会慢。

3. 分页式存储管理:主存空闲块怎么分配和回收?

分页式存储是啥?

  • 内存分成固定大小的页面(比如4KB),程序也切成同样大小的页面,散开放进内存。

主存空闲块分配

  • 怎么做? : 用空闲页面表位示图 跟踪空闲页面。
    • 位示图法: 每个页面一个位,0是空,1是占。找空页面时扫0。
    • 空闲页面表: 像个清单,列出所有空闲页面的编号。
  • 生活比喻: 像旅馆登记空房间,管理员查表或图,找到空房给客人。
  • 分配过程: 程序需要3页,系统从空闲表挑3个页面,更新表或图。

主存空闲块回收

  • 怎么做? : 程序用完页面后,归还给系统。
    • 把页面编号加回空闲表,或把位示图对应位改成0。
  • 生活比喻: 客人退房,管理员把房间标为空,重新可分配。

小白Tips

  • 刷题可能问:"分配和回收区别?" 答案是:分配是找0给出去,回收是把1变0。

4. 页式虚拟存储管理:页面置换怎么实现?

虚拟存储是啥?

  • 程序觉得自己有"无限内存"(虚拟内存),其实真内存有限,用不到的页面放硬盘,需要时调进来。

页面置换是啥?

  • 定义: 内存满了,新页面要进来,得把老页面换出去。
  • 生活比喻: 桌子放满了书,想看新书,得拿走一本老书。

怎么实现?

  • 步骤 :
    1. 缺页中断: 程序要用的页面不在内存,触发中断。
    2. 选择牺牲者: 用算法决定换哪页出去。
    3. 换入换出: 把老页面存硬盘(如果改过),新页面从硬盘调内存。
  • 常见算法 :
    • FIFO(先入先出): 最早进来的先出去,像排队。
    • LRU(最近最少使用): 挑最久没用的换走,像清理不常用的东西。
    • OPT(最佳置换): 挑未来最晚用的(理论算法,实际没法预测)。

小白Tips

  • 刷题可能问:"LRU怎么选页面?" 答案是:找最久没访问的。

5. 磁盘空闲块管理与回收

磁盘空闲块是啥?

  • 磁盘分成小块(比如4KB),文件占一些,剩下的就是空闲块。

怎么管理?

  • 方法 : 常用位示图空闲块链表
    • 位示图 : 每个块一个位,0空1占。比如00110,第3、4块占用。
    • 空闲块链表: 把空闲块串成链表,像记账本列出空位。
  • 生活比喻: 像停车场,位示图是座位表,链表是空位清单。

分配与回收

  • 分配: 新文件要空间,从位示图找0或从链表取块,标记为1或移除。
  • 回收: 文件删除,归还块,把位改0或加回链表。
  • 例子 : 删除文件释放3块,位示图从1110000000

小白Tips

  • 刷题可能问:"位示图和链表区别?" 答案是:位示图直观但固定,链表灵活但复杂。

小结:从位示图到磁盘管理

  • 位示图法: 用0和1管理资源,简单高效。
  • 文件目录查找: 树形结构+索引,像找书的地图。
  • 分页主存分配回收: 位示图或表跟踪空闲页面,分配找0,回收变0。
  • 页面置换: 内存满时换页面,LRU、FIFO常见。
  • 磁盘空闲块: 位示图或链表管空位,分配占位,回收释放。
相关推荐
神奇侠202416 分钟前
快速入手-基于Django-rest-framework的serializers序列化器(二)
后端·python·django
Asthenia041216 分钟前
基于Segment-Mybatis的:分布式系统中主键自增拦截器的逻辑分析与实现
后端
Asthenia041218 分钟前
Seata:为微服务项目的XID传播设计全局的RequestInterceptor-将XID传播与具体FeignClient行为解耦
后端
无奈何杨26 分钟前
Docker/Compose常用命令整理总结
后端
搬砖的阿wei33 分钟前
从零开始学 Flask:构建你的第一个 Web 应用
前端·后端·python·flask
草巾冒小子43 分钟前
查看pip3 是否安装了Flask
后端·python·flask
放肆的驴1 小时前
EasyDBF Java读写DBF工具类(支持:深交所D-COM、上交所PROP)
java·后端
shuair2 小时前
01 - spring security自定义登录页面
java·后端·spring
失乐园2 小时前
解密万亿级消息背后:RocketMQ高吞吐量核心机制解剖
java·后端·面试
在下木子生2 小时前
SpringBoot条件装配注解
java·spring boot·后端