缓冲文件系统和非缓冲文件系统

  在码代码的时候我们经常会遇到文件系统类型的操作,比如打开一个文件,写文件,读文件之类的操作。涉及这些操作的函数有open(),write(),read()以及fopen(),fwrite(),fread()等函数。那么这些f开头的文件系统操作函数和非f开头的文件系统操作函数有什么区别?这就要介绍一下缓冲文件操作系统和非缓冲文件操作系统,这两类系统都是C语言使用的磁盘文件系统。

  缓冲文件操作系统:系统会自动的在内存区为每一个正在使用的文件开辟一块缓冲区,缓冲区的大小一般由各个C的版本规定,一般的为512Byte即0.5K大小。从此盘向内存读数据时,则一次将一些数据从磁盘文件送内存缓冲区(充满缓冲区),然后再从缓冲区逐个将数送给接收变量(文件描述符);从内存写数据到磁盘文件时,现将数据塞满缓冲区,在一次性将数据从缓冲区送到磁盘文件。用缓冲区可以一次读入一批数据,或输出一批数据,而不是执行一次输入或输出函数就去访问一次磁盘,这样做的目的是减少对磁盘的实际读写次数,因为每一次读写都要移动磁头并寻找磁道扇区,花费一定的时间。缓冲文件系统是借助文件结构体指针来对文件进行管理,通过文件指针来对文件进行访问,既可以读写字符、字符串、格式化数据,也可以读写二进制数据,缓冲文件系统函数一般是由f开头的函数,如fopen(),fwrite(),fread()。

  非缓冲文件系统:非缓冲文件系统不会自动地设置缓冲区,需要用户根据自己的需要去设置,在传统的UNIX下,用缓冲文件系统来处理文本文件,用非缓冲文件系统来处理二进制文件。非缓冲文件系统依赖于操作系统,通过操作系统的功能对文件进行读写,是系统级的输入输出,它不设文件结构体指针,只能读写二进制文件,但效率高、速度快。

posted @ 2017-04-09 22:13  WenboGeng  阅读(2154)  评论(0编辑  收藏  举报