计算机组成结构(概念模型)
CPU(ALU +CU),MEMORY,IO设备三大抽象组件。计算机可以简单抽象为取指执行自动模型机,指令位置存于内存中,而指令一般由操作符和操作数构成,而操作符可以理解为何种操作(比如加法操作 add),操作数一般为立即数,寄存器,内存地址。从CPU的指令,可以看出IO设备要能够被CPU所访问,必须要有自己的内存地址,IO设备要进行编址。
IO设备如何与CPU设备进行交换,最先想到就是CPU主动去每个IO设备的内存中看看是否有相关数据,有没有数据其实IO设备是最清楚。于是,主动轮询演化成了被动通知到CPU,通知的方式统称为Interrupt(中断)。
操作系统
编程模型
编写程序,说白了就是操作计算机,计算机这么多硬件,如何最方便且安全的操作,那我们需要一个统一管理者,那它就是操作系统,它给我们一个编程的基本环境。基本环境:逻辑代码和系统调用组成。IO操作为最为频繁操作,如何进行IO操作?那就是通过系统调用。一般的IO操作,都是阻塞的系统调用,操作系统这个时候会进行进程的切换,便于对计算资源的最大利用。
IO模型
- 同步IO和异步IO
这是用户线程和操作系统内核交互来讲:
对于同步IO:当用户发出IO请求操作后,如果数据没有就绪,需要通过用户线程或者内核不断地去轮询数据是否就绪,当数据就绪时,再将数据从内核拷贝到用户线程;
而异步IO:只有IO请求操作的发出是由用户线程来进行的,IO操作的两个阶段都是由内核自动完成,然后发送通知告知用户线程IO操作已经完成。也就是说在异步IO中,不会对用户线程产生任何阻塞。 - 阻塞与非阻塞