网站信息报送制度建设,做图片网站用什么程序,网站建设课件,网站建设公司哪家好 尖端磐石网络redis为什么这么快#xff1f; 比较容易答出的答案 1)纯粹的内存操作 2)单线程操作,不用考虑线程切换 其他优势 3)I/O 多路复用,使用epoll 4)Reactor 设计模式
I/O 多路复用有三种 select、poll、epoll select#xff1a;使用数组存储轮询 poll#xff1a;使用链表轮询 epo…redis为什么这么快 比较容易答出的答案 1)纯粹的内存操作 2)单线程操作,不用考虑线程切换 其他优势 3)I/O 多路复用,使用epoll 4)Reactor 设计模式
I/O 多路复用有三种 select、poll、epoll select使用数组存储轮询 poll使用链表轮询 epoll使用回调数据保留至map中 epoll还有一个优势使用了mmap文件映射内存加速与内核空间的消息传递
利用 mmap() 替换 read()配合 write() 调用的整个流程如下 用户进程调用 mmap()从用户态陷入内核态将内核缓冲区映射到用户缓存区 DMA 控制器将数据从硬盘拷贝到内核缓冲区可见其使用了 Page Cache 机制 mmap() 返回上下文从内核态切换回用户态 用户进程调用 write()尝试把文件数据写到内核里的套接字缓冲区再次陷入内核态 CPU 将内核缓冲区中的数据拷贝到的套接字缓冲区 DMA 控制器将数据从套接字缓冲区拷贝到网卡完成数据传输 write() 返回上下文从内核态切换回用户态。
MDA具体过程 用户进程调用 read 方法向操作系统发出 I/O 请求请求读取数据到自己的内存缓冲区中进程进入阻塞状态 操作系统收到请求后进一步将 I/O 请求发送 DMA然后让 CPU 执行其他任务 DMA 进一步将 I/O 请求发送给磁盘 磁盘收到 DMA 的 I/O 请求把数据从磁盘读取到磁盘控制器的缓冲区中当磁盘控制器的缓冲区被读满后向 DMA 发起中断信号告知自己缓冲区已满 DMA 收到磁盘的信号将磁盘控制器缓冲区中的数据拷贝到内核缓冲区中此时不占用 CPUCPU 可以执行其他任务 当 DMA 读取了足够多的数据就会发送中断信号给 CPU CPU 收到 DMA 的信号知道数据已经准备好于是将数据从内核拷贝到用户空间系统调用返回
Reactor 模式一般翻译成反应器模式也有人称为分发者模式。是基于事件驱动的设计模式拥有一个或多个并发输入源有一个服务处理器和多个请求处理器服务处理器会同步的将输入的请求事件以多路复用的方式分发给相应的请求处理器。简单来说就是 由一个线程来接收所有的请求然后派发这些请求到相关的工作线程中 1、单Reactor单线程 2、单Reactor多线程 3、多Reactor多线程 https://juejin.cn/post/7128732976216539167