操作系统实验二 文件管理(2)
时间:2026-01-22
时间:2026-01-22
2、2.利用标准I/O库函数fopen( ),fgetc( ),fputc( ),编程实现将文件file.in
的内容拷贝到文件file.out。
3、思考题:比较文件管理系统调用和标准I/O库函数的性能。
文件I/o函数文件I/O又称为无缓冲的I/0,是指用户需要自行管理读写操作所需要的用户空间缓冲区及其大小。在Linux平台上的文件I/O中与读写效率有直接关系的就是read和write两个函数。例如,当用户调用read函数时,操作系统进入内核执行对应读取文件的系统调用函数,从其文件所在磁盘上读取与buf大小相同的数据到内核态中,并复制到位于用户空间的buf 变量当中。当调用read时,其处理流程:I/O read 函数的处理流程由于磁盘和CPU之间速度的不匹配。Linux 使用文件预读算法(read—ahead)有效的改进磁盘读I/0性能。文件预读的基本方法是,当CPU处理当前数据时,预读机制在后台异步加载下一批数据,当程序发出下一个读请求时,被请求的数据可直接从内核中复制到用户空间。当顺序读取磁盘文件时,文件预读对I/O性能有很大的提高。
系统调用会降低计算机的执行性能。因为用户空间和内核空间处于不同的空间,系统调用会在用户程序与内核代码之间来加切换,因此系统调用开销很大
带有缓冲的操作实现,用户可以高效果地写任意长度的数据块,当数据块满足一定长度要求时,就调用一次底层系统调用来完成相关操作。因此,Unix/Linux提供了一系列的标准函数库来对设备进行相关操作
上一篇:马克思著作读后感