单核CPU
,目前有3个想要执行的线程,这3个线程在执行过程中先执行1,在下一个时间片cpu让渡出来执行线程2,在下一个时间片cpu让渡出来执行线程3,以此类推,最终将3个线程执行完毕。前者(CPU切片)
和后者(顺序执行)
使用的时间貌似是一样的,并且后者(顺序执行)
只切换了2次上下文,这样是不是执行的效率更高呢?那多线程存在的意义有体现在哪里呢?I/O
(磁盘的读写、网络的数据传输、音视频的输入输出等),那么我们在编程的中的I/O主要是磁盘I/O
和网络I/O
,I/O
是非常耗时间的。前者(CPU切片)
和后者(顺序执行)
执行效率差不多的。DMA控制器
。在读取文件的过程中,其实CPU不会直接操作硬盘,而是给DMA控制器
下达命令来完成文件的读取。首先,CPU 对DMA下达指令(这个指令中包含有磁盘设备信息和要读取的文件位置信息),然后DMA告知硬盘进行文件读取并将读取的文件内容加载到内存变量中,读取完毕之后硬盘会返回反馈一个读取结果完成的信息给到DMA,DMA之后以终端的形式通知CPU,然后CPU去内存中拉取数据,最终拿到数据。