2022年
王道考研/cskaoyan.com 1
本节内容
逻辑结构
Vs
物理结构
!"#$%&'()*+),-&*.
1
!"#$%&'()*+),-&*.
傻傻分不清楚?
2
2022年
王道考研/cskaoyan.com 2
!"#$%&'()*+),-&*.
例:
C
语言创建无结构文件
3
!"#$%&'()*+),-&*.
逻辑结构(从用户视角看)
H
e
l
l
o
w
o
r
l
d
!
H
e
l
l
o
w
o
r
l
d
!
H
e
l
l
o
w
o
r
l
d
!
每个字符1B。在用户看来,整个文
件占用一片连续的逻辑地址空间
······
Eg:你要找到第16个字符(编号从0开始)
用户用逻辑地
址访问文件
4
2022年
王道考研/cskaoyan.com 3
!"#$%&'()*+),-&*.
物理结构(从操作系统视角看)
1KB
#0
1KB
#1
1KB
#2
1KB
#3
1KB
#4
1KB
#5
······
H
e
l
l
o
w
o
r
l
d
!
H
e
l
l
o
w
o
r
l
d
!
H
e
l
l
o
w
o
r
l
d
!
······
被操作系统拆分为若干个块,逻辑块号相邻
连续分配:逻辑上相邻的块物理上也相邻
#0 #1
#2 #3
#4 #5
……
用户:
使用 C语言库函数 fseek,将文件读写指针指向位置 n
使用 C语言库函数 fgetc,从读写指针所指位置读出 1B 内容
fgetc 底层使用了 Read 系统调用,
操作系统将(逻辑块号,块内偏移量)
转换为(物理块号,块内偏移量)
操作系统视角:反正就是一堆二进制数
据,每个磁盘块可存储1KB,拆就完了!
指明逻
辑地址
5
!"#$%&'()*+),-&*.
物理结构(从操作系统视角看)
1KB
#0
1KB
#1
1KB
#2
1KB
#3
1KB
#4
1KB
#5
······
H
e
l
l
o
w
o
r
l
d
!
H
e
l
l
o
w
o
r
l
d
!
H
e
l
l
o
w
o
r
l
d
!
······
链接分配:逻辑上相邻的块在物理上用链接
指针表示先后关系
#0
#1
#2
#3
#4
#5
……
用户:
使用 C语言库函数 fseek,将文件读写指针指向位置 n
使用 C语言库函数 fgetc,从读写指针所指位置读出 1B 内容
被操作系统拆分为若干个块,逻辑块号相邻
操作系统视角:反正就是一堆二进制数
据,每个磁盘块可存储1KB,拆就完了!
指明逻
辑地址
fgetc 底层使用了 Read 系统调用,
操作系统将(逻辑块号,块内偏移量)
转换为(物理块号,块内偏移量)
6