IO核心知识
预备知识
1、内核空间与用户空间
操作系统采用虚拟存储器,虚拟存储空间(提示:x位系统的存储空间大小为2^x byte,)可分为内核空间和用户空间。内核空间管理硬件设备,并提供系统调用。
于是有如下步骤:
用户空间通过系统调用访问内核空间,内核空间通过驱动访问硬件。
2、系统调用需要等待哪些操作?
①等待内核空间通过驱动发送指令,将读的数据传输到文件描述符(File Descriptor)指向的结构体指针的缓冲区中,并将文件描述符返回给用户区。
②等待用户区通过文件描述符将内核空间的缓冲区数据传输到用户区。
5种IO模型
1、阻塞式IO
系统调用后,便进入阻塞状态,等待上面的①、②操作完成。
2、非阻塞式IO
系统调用后,立即返回文件描述符,此时需要状态码来判断操作发生错误、操作未完成还是操作已完成。由于可能操作未完成,则需要不断的轮询。
3、复用式IO
由于非阻塞式IO需要不断进行用户空间的轮询,而复用式IO使用内核空间的轮询,提升效率。
4、信号驱动式IO
系统调用后,将不用等待上面的①操作完成,内核空间数据准备好后,将会通知用户空间。