标签:参数 内核空间 特定 根据 取出 java 初始 tom redis
概念理解
Linux虚拟内存被操作系统分成了两部分,一个是用户空间,一个是用户空间
当进程运行在内核空间时就处于内核态,当进程处于用户空间时就处于用户态
在Linux 中,执行命令:
ps - 查看系统资源
在%CPU(s)一行,可以看到两个参数:
xxx us -用户空间
xxx sy -内核空间
慢速IO设备和内存之间的数据传输方式
我们读取磁盘文件到内存中,如果数据要经过cpu转发,这种方式成为PIO
不经过cpu,直接进行磁盘和内存的数据交换,cpu将指令下达给dma控制器,有dma控制器处理数据的传输,此种方式大大减小了cpu的占有率,节省了系统资源
数据->DMA->内核空间->CPU->用户空间
应用:nginx\redis\tomcat应用等(应用比较广泛)
数据->DMA->用户空间
应用:mysql
网路七层结构:
磁盘IO和网络IO都会发生延时,但是网络IO延时大于磁盘IO
传统socket问题:高并发情况下下存在阻塞问题,大大降低了系统性能。
同步和异步都会存在堵塞和非堵塞;
同步堵塞:发出请求之后,一直傻等
同步非堵塞:发出请求之后,如果数据没有及时返回,会继续连续请求,进行轮询,直到返回数据
? 反应器设计模式时一种为处理并发服务请求,并将请求提交到一个或者多个服务处理程序的事件设计模式,当客户端请求抵达后,服务处理程序使用多路分配策略,由一个非阻塞的线程来接收所有的请求,然后派发这些请求至i相关的工作线程进行处理。
主要包含内容:
运用于异步IO操作,Proactor模式中,应用程序不需要进行实际的读写过程,它只需要从缓存区读取或者写入即可,操作系统会读取缓存区或者写入缓存区到真正的IO设备。
传统的IO模型
默认创建的socket都是阻塞的,非阻塞IO要求socket被设置为noblock,注意这里所说的NIO并非java的NIO库
即经典的Reactor设计模式,有时也称为异步阻塞IO,Java中的Selector和Linux中的epoll都是这种模型。
有三种模式机制
以下几种方式都时IO多路复用的机制,IO多路复用就是通过一种机制,可以监视多个描述符,一旦某个描述符就绪,能够通知程序进行相应的操作。
redis的IO模型主要是基于epoll实现的,不过它也提供了select和kqueue的实现,默认采用epoll。
即经典的Proactor设计模式,也称为异步非阻塞IO
不常用
标签:参数 内核空间 特定 根据 取出 java 初始 tom redis
原文地址:https://www.cnblogs.com/xujie09/p/11626591.html