比较弱的问题——关于CPU在执行【printf/fprintf】时候的物理机理

来源:百度知道 编辑:UC知道 时间:2024/06/15 19:27:21
调试一个大程序的时候,如果把一些debug开关打开,即:允许许多printf()、fprintf()产生效果,这时候将会有好多log信息,被玩命的打印到屏幕上,这时候,整个linux PC机就会显得很慢,有时候连鼠标响应也变得极其迟钝了
而关掉那些打印开关,禁止log打印到屏幕上,整个程序还是一样的跑,但PC机的linux系统却显得很从容,很安静,就像没有运行这个任务一样,
请问,这是什么原因??
我粗浅的猜测是这样的:printf, fprintf被执行的时候,打印出trace内容到屏幕上,可以看成是一种I/O操作,I/O速度明显慢于CPU的速度,CPU需要等待,因此,占用率比较高,所以,在print比较多的时候,整个系统的响应速度都变慢了。
但是我,还要一个小疑问:现代的CPU已经非常高档了,为了节省等待时间,提高利用率,连超线程都能做到,那么,怎么可能:会耗费时间一味地去等待I/O完成呢??
在I/O向屏幕上吐东西的时候,CPU完全可以转去做别的事情。~~!

i/o执行就要占据cpu,除非是DMA形式才有可能在i/o的情况下还去做别的事情。
所以i/o的效率很低

大量的IO也许不占CPU,但是会占用系统正常的IO啊。。。。