四 内存管理、设备管理、文件系统
地址转换(装入内存的三种方式)
装入模块 装入 内存
绝对装入
只适用于单道程序环境,编译链接后得到的装入模块的指令直接使用了绝对地址
静态重定位
一个作业装入内存时,必须分配其要求的全部内存空间,如果没有足够的内存,就不能装入该作业。作业一旦进入内存运行期间就不能移动也不能申请内存空间
动态重定位
重定位寄存器:存放装入模块存放的起始位置
链接的三种方式
进程的内存映像
内存中的一个进程
虚拟内存请求分页
文件
文件是以计算机硬盘为载体的存储在计算机上的信息集合,它的形式多样。
文件的逻辑结构是用户可见的结构,即从用户角度看到的文件的全貌。文件的物理结构是文 件在存储器上的组织结构。
1. 文件的逻辑结构(用户视角)
逻辑结构探讨的是文件内部的数据是如何组织起来呈现给用户的。它主要分为两大类:
无结构文件(流式文件)
概念:文件内部就是一连串毫无规则的、毫无结构的字节流。
特点:操作系统根本不管你里面存的是什么,它只看到一堆 0 和 1。你想读取哪里的数据,只能通过读写指针的偏移量来定位。
典型应用:这是 Linux/Unix 系统的核心哲学。你日常接触的 .txt 文本文件、.cpp 源代码文件、甚至 .mp4 视频,在 OS 眼里统统都是无结构文件。
有结构文件(记录式文件)
概念:文件由一条条具有相同格式的** 记录(Record)**组成,每条记录包含多个数据项。
分类:
顺序文件:记录按顺序一条条紧挨着排列(又分定长和可变长)。
索引文件:为文件建立一张“索引表”,通过关键字快速找到对应记录的指针。
直接/哈希文件:通过哈希函数,直接把记录的键值映射到逻辑地址。
典型应用:数据库表(如 MySQL 的 .ibd 数据文件)、早期的员工考勤记录表。
2. 文件的物理结构(硬盘/OS 视角)
物理结构(又称文件分配方式)探讨的是逻辑上连续的文件,在物理磁盘上到底是怎么摆放的。
它主要有三种经典的分配方式:
① 连续分配 (Contiguous Allocation)
原理:要求为每一个文件分配一段连续的物理磁盘块。。
优点:**速度极快,**支持顺序访问和直接(随机)访问。磁头在读取时不需要频繁寻道,是所有分配方式中读取性能最高的。
缺点:极其僵硬。文件如果想动态增加内容,后面要是没有连续的空闲块就完蛋了;并且会产生大量的磁盘外部碎片。
适用场景:只读的光盘(CD-ROM),或者对读取速度要求极高的某些早期的实时系统。
② 链接分配 (Linked Allocation)
原理:文件可以被打散存放在离散的物理块中,块与块之间通过指针连接。
隐式链接:指针藏在每个数据块的末尾。致命缺点是只能顺序访问(想看第 100 块的数据,必须把前 99 块全读一遍),且如果某个块坏了,后面的数据就全丢了。
显式链接:把所有物理块的指针提取出来,集中存放在内存的一张表里。这张表就是的 FAT(File Allocation Table,文件分配表)。有了 FAT,OS 就可以在内存中顺藤摸瓜,极大地提高了检索速度,并支持了逻辑上的随机访问。
③ 索引分配 (Indexed Allocation)
原理:系统为每个文件单独分配一个**“索引块”**,这个块里不存具体数据,而是存一个“目录(索引表)”,记录了该文件所有数据块的物理块号。
优点:既支持随机访问(直接查索引表),又极易扩展文件大小(分配新的物理块,把块号填进索引表即可),而且不会产生外部碎片。
缺点:索引块本身会消耗额外的存储空间。如果文件很小,为了存几个字节还要专门浪费一个索引块,很不划算。如果文件极大,一个索引块装不下所有指针,还需要搞“多级索引”。
IO接口
I/O接口(又称设备控制器)是CPU 与设备之间的接口,以实现设备和计算机之间的数据交换。













