在输入输出操作中,直接使用底层系统调用的问题是他们的效率很低,为什么呢?
系统调用会影响系统的性能。执行系统调用时,Linux必须从用户代码切换到内核代码运行,然后再返回用户代码。减小这种开销的好方法是,在程序中尽量减少系统调用的次数,并且让每次系统调用完成尽可能多的工作。例如每次读写大量的数据而不是每次仅读写一个字符。
硬件会对底层系统调用一次能读写的数据块做出一定的限制。例如,磁带机通常的写操作数据块长度是10K,所以如果所写的数据量不是10K的整数倍,磁带机还是会以10K为单位绕转磁带,这就在磁带上留下间隙。
系统调用会影响系统的性能。执行系统调用时,Linux必须从用户代码切换到内核代码运行,然后再返回用户代码。减小这种开销的好方法是,在程序中尽量减少系统调用的次数,并且让每次系统调用完成尽可能多的工作。例如每次读写大量的数据而不是每次仅读写一个字符。
硬件会对底层系统调用一次能读写的数据块做出一定的限制。例如,磁带机通常的写操作数据块长度是10K,所以如果所写的数据量不是10K的整数倍,磁带机还是会以10K为单位绕转磁带,这就在磁带上留下间隙。