缓冲区操作
缓冲区以及缓冲区是如何工作,是所有I/O的基础。“输入/输出”就是把数据移进或移出缓冲区。
进程执行I/O操作,就是向操作系统发出请求,让它要么把缓冲区的数据排干(写),要么用数据把缓冲区填满(读)。进程使用这一机制处理所有数据进出操作。
从磁盘读数据到进程内存区:
缓冲区以及缓冲区是如何工作,是所有I/O的基础。“输入/输出”就是把数据移进或移出缓冲区。
进程执行I/O操作,就是向操作系统发出请求,让它要么把缓冲区的数据排干(写),要么用数据把缓冲区填满(读)。进程使用这一机制处理所有数据进出操作。
从磁盘读数据到进程内存区:
read()
系统调用,要求其缓冲区被填满。内核随即向磁盘控制硬件发出命令,要求其从磁盘读取数据。
read()
调用时指定的缓冲区。
内核空间:内核空间是操作系统所在区域,有特别的权利:能与设备控制器通讯,控制用户区域进程的运行状态等等。
所有I/O都直接或间接通过内核空间,通过请求页面调度完成。
当进程请求I/O操作的时候,它执行一个系统调用将控制权移交给内核。内核随即采取必要步骤,找到进程所需数据,并把数据传送到用户空间内指定的缓冲区。如果数据已在内核空间,直接拷贝即可;如果不在内核空间,则进程被挂起,内核着手把数据读进内存