一,缓冲区
缓冲区其实就是一段内存空间,能够暂存数据,
1.1 理解缓冲区
这里我们用一个例子来进行讲解,假设我们要从北京把快递寄到深圳,如果没有快递时,我们就要亲自带着我们的包裹去到深圳,把包裹交给对方,这样既费时又费力。但是如果有了快递,那么我们直接将包裹交给快递,经过几天后,对方就可以收到快递,而我们就不用亲自去一趟,这样我们也就可以干我们自己的事情了。
缓冲区可以将我们要传送的数据暂存起来,当达到一定量时发送出去,那么就一定要有刷新策略:
- 无缓冲(立即刷新)
- 行缓冲(行刷新)
- 全缓冲(缓冲区满了再刷新)
一般对于显示器,都是行刷新,而对于磁盘文件,是全缓冲。
缓冲区也分为用户级缓冲区和内核级缓冲区
:
在我们的日常使用中,都是用户级缓冲区。从缓冲区写到OS的工作叫刷新。
其实在向文件写入时,我们先写进C语言提供的缓冲区中,然后再写入内核级别的缓冲区,因为访问外设的效率很低,当内核的文件缓冲区满了后再刷新进磁盘中。
二,理解文件系统
2.1 文件系统
要了解文件系统,那么我们就要知道数据是如何存储的。这里我们可以先看一下磁盘的结构。
一个盘面有很多同心磁道,一个磁道有很多的扇区,扇区就是磁盘的最小存储单元,一般是4KB。