1.6.1 Linux 文件操作基本原理
标准C库与Linux系统文件IO对比
-
I0
:Input / Output
,输入输出,通常指文件在存储介质之间的传输。 -
标准C库
IO函数与Linux
IO函数是调用与被调用的关系,标准C库
函数调用Linux
函数进行文件IO,应用程序
没有直接操作文件的权限,必须由操作系统
代理完成。标准C库
IO函数比Linux
IO函数更高级。但是,需要注意的是,标准C库
IO函数效率高于Linux
函数,标准C库
为IO实现了缓冲区
的功能,减少了效率低下的外部设备访问开销。
-
由于缓存区的存在,
标准C库
IO是非即时的,LinuxIO
是即时的,例如在网络交互中需要使用后者,一般场景使用前者更优。
虚拟地址空间
-
在操作文件与内存中得到的所有地址都是
虚拟地址
,真实地址
对于用户是不可见的,也是无需关心的。 -
MMU
:Memory Management Unit
,用于实现虚拟地址
与真实地址
之间的映射,从而完成CPU
的内存管理请求。虚拟地址映射表存储在PCB
中。
-
栈空间从高地址向低地址占用,堆空间从低地址向高地址占用。
文件描述符
文件描述符
用于描述一个打开的文件,存储于进程PCB
(Processing Control Block
)中。- 进程通过
文件描述符
访问一个打开的文件。 PCB
中文件描述符列表的尺寸为1024
,也就是说,一个进程最多同时打开1024
个文件,关闭文件后可复用。- 多次打开相同文件将占用多个
文件描述符
。