操作系统-网络IO模型
用户空间及内核空间
我们知道现代操作系统都是采用虚拟存储器,那么对32位操作系统而言,它的寻址空间(虚拟存储空间)为4G(2的32次方)。操作系统的核心是内核,独立于普通的应用程序,可以访问受保护的内存空间,也有访问底层硬件设备的所有权限。为了保证用户进程不能直接访问内核,保证内核的安全,操作系统将虚拟存储空间划分为两部分——一部分为内核空间,一部分为用户空间。针对Linux操作系统而言,将最高的1G字节(从虚拟地址0xC0000000到0xFFFFFFFF)供内核使用,称为内核空间;而将较低的3G字节(从虚拟地址0x00000000到0xBFFFFFFF)供各个进程使用,称为用户空间。每个进程可以通过系统调用进入内核,因此,Linux内核由系统内的所有进程共享。于是从具体进程的角度来看,每个进程可以拥有4G字节的虚拟空间。
寻址空间是用来干嘛的?和内存空间有何差别?
Linux寻址空间分配如下图所示:
有了用户空间和内核空间,整个Linux内部结构可以分为三部分,从最底层到最上层依次是:硬件–>用户空间–>内核空间。如下图所示:
需要注意的细节问题,从上图可以看出内核的组成:
- 内核空间中存放的是内核代码和数据,而进程的用户空间中存放的是用户程序的代码和数据。不管是用户空间还是内核空间,他们都处于虚拟空间中。
- Linux使用两级保护机制,0级供内核使用,3级供用户程序使用。
Linux 网络 IO 模型
阻塞IO(Blocking IO)
非阻塞IO(Non-Blocking IO)
IO复用(IO Multiplexing)
信号驱动的IO(Singal Driven IO)
异步IO
5中IO模型的对比
参考文档
来源:CSDN
作者:4change
链接:https://blog.csdn.net/CSDN_FlyYoung/article/details/103715990