一、概念说明
1、内核态(内核空间)和用户态(用户空间)的区别和联系?
用户空间是用户进程所在的内存区域,系统空间是操作系统所在的内存区域。
为了保证内核的安全,处于用户态的程序只能访问用户空间,而处于内核态的程序可以访问用户空间和内核空间。
2、文件描述符 fd
Linux 将所有设备都当做文件来处理,文件描述符来标识每个文件对象。
当程序打开一个现有文件或者创建一个新文件时,内核向进程返回一个文件描述符。
3、缓存 IO
Linux 的缓存 IO 机制中,操作系统会将 IO 的数据缓存在文件系统的页缓存中,也就是说,数据会先被拷贝到操作系统内核的缓冲区,然后才会从操作系统内核的缓冲区拷贝到应用程序的地址空间。
二、IO 模式
对于一次 IO 访问(以 read 为例),数据会先被拷贝到操作系统内核的缓冲区中,然后才会从操作系统内核的缓冲区拷贝到应用程序的地址空间。所以说,当一个 read 操作发生时,会经历两个阶段:
1、等待数据准备(Waiting for the data to be ready)
2、将数据从内核拷贝到进程中(Copy the data from kernel to the process)
linux 系统产生了下面五种网络模式的方案:
1、阻塞 I