当前位置: 首页 > news >正文

有哪些基于网站开发的报表设计器建立大型网站吗

有哪些基于网站开发的报表设计器,建立大型网站吗,深圳做网站的网络公,国内ui做的好的网站有哪些什么是零拷贝#xff1f; 零拷贝是一种计算机系统中的 I/O 优化技术#xff0c;它的核心思想是在数据传输过程中尽可能地减少或完全避免 CPU 将数据从一个存储区域复制到另一个存储区域的操作#xff0c;从而减少了上下文切换和 CPU 拷贝时间#xff0c;提高了系统的性能和…什么是零拷贝 零拷贝是一种计算机系统中的 I/O 优化技术它的核心思想是在数据传输过程中尽可能地减少或完全避免 CPU 将数据从一个存储区域复制到另一个存储区域的操作从而减少了上下文切换和 CPU 拷贝时间提高了系统的性能和效率。在 Java 领域诸如 Netty、Kafka、RocketMQ 等框架就使用了零拷贝技术来提高性能和效率尤其在处理大规模数据传输时表现突出。 什么是 DMA 技术 直接内存访问Direct Memory Access 技术。简单理解就是在进行 I/O 设备和内存的数据传输的时候数据搬运的工作全部交给 DMA 控制器而 CPU 不再参与任何与数据搬运相关的事情这样 CPU 就可以去处理别的事务。 传统I/O是如何操作的 read(file, tmp_buf, len); write(socket, tmp_buf, len);期间共发生了 4 次用户态与内核态的上下文切换因为发生了两次系统调用一次是 read() 一次是 write()每次系统调用都得先从用户态切换到内核态等内核完成任务后再从内核态切换回用户态。 其次还发生了 4 次数据拷贝其中两次是 DMA 的拷贝另外两次则是通过 CPU 拷贝的 第一次拷贝把磁盘上的数据拷贝到操作系统内核的缓冲区里这个拷贝的过程是通过 DMA 搬运的。第二次拷贝把内核缓冲区的数据拷贝到用户的缓冲区里于是我们应用程序就可以使用这部分数据了这个拷贝到过程是由 CPU 完成的。第三次拷贝把刚才拷贝到用户的缓冲区里的数据再拷贝到内核的 socket 的缓冲区里这个过程依然还是由 CPU 搬运的。第四次拷贝把内核的 socket 缓冲区里的数据拷贝到网卡的缓冲区里这个过程又是由 DMA 搬运的。 那零拷贝的方案有哪些呢 1、MmapWrite 在前面我们知道read() 系统调用的过程中会把内核缓冲区的数据拷贝到用户的缓冲区里于是为了减少这一步开销我们可以用 mmap() 替换 read() 系统调用函数。 buf  mmap(file, len); write(sockfd, buf, len);mmap() 系统调用函数会直接把内核缓冲区里的数据「映射」到用户空间这样操作系统内核与用户空间就不需要再进行任何的数据拷贝操作。 具体过程如下 应用进程调用了 mmap() 后DMA 会把磁盘的数据拷贝到内核的缓冲区里。接着应用进程跟操作系统内核「共享」这个缓冲区应用进程再调用 write()操作系统直接将内核缓冲区的数据拷贝到 socket 缓冲区中这一切都发生在内核态由 CPU 来搬运数据最后把内核的 socket 缓冲区里的数据拷贝到网卡的缓冲区里这个过程是由 DMA 搬运的。 我们可以得知通过使用 mmap() 来代替 read() 可以减少一次数据拷贝的过程。 但这还不是最理想的零拷贝因为仍然需要通过 CPU 把内核缓冲区的数据拷贝到 socket 缓冲区里而且仍然需要 4 次上下文切换因为系统调用还是 2 次。 2、SendFile 在 Linux 内核版本 2.1 中提供了一个专门发送文件的系统调用函数 sendfile()函数形式如下 #include sys/socket.h ssize_t sendfile(int out_fd, int in_fd, off_t *offset, size_t count); 它的前两个参数分别是目的端和源端的文件描述符后面两个参数是源端的偏移量和复制数据的长度返回值是实际复制数据的长度。 首先它可以替代前面的 read() 和 write() 这两个系统调用这样就可以减少一次系统调用也就减少了 2 次上下文切换的开销。 其次该系统调用可以直接把内核缓冲区里的数据拷贝到 socket 缓冲区里不再拷贝到用户态这样就只有 2 次上下文切换和 3 次数据拷贝。如下图 但是这还不是真正的零拷贝技术如果网卡支持 SG-DMAThe Scatter-Gather Direct Memory Access技术和普通的 DMA 有所不同我们可以进一步减少通过 CPU 把内核缓冲区里的数据拷贝到 socket 缓冲区的过程。 具体过程如下 第一步通过 DMA 将磁盘上的数据拷贝到内核缓冲区里第二步缓冲区描述符和数据长度传到 socket 缓冲区这样网卡的 SG-DMA 控制器就可以直接将内核缓存中的数据拷贝到网卡的缓冲区里此过程不需要将数据从操作系统内核缓冲区拷贝到 socket 缓冲区中这样就减少了一次数据拷贝 这就是所谓的零拷贝Zero-copy技术因为我们没有在内存层面去拷贝数据也就是说全程没有通过 CPU 来搬运数据所有的数据都是通过 DMA 来进行传输的。 总结 I/O操作数据拷贝次数上下文切换次数传统I/O2次CPU拷贝2次DMA拷贝4MmapWrite1次CPU拷贝2次DMA拷贝4SendFile1次CPU拷贝2次DMA拷贝2SendFile 支持 SG-DMA1次DMA拷贝1次SG-DMA拷贝2 零拷贝技术的文件传输方式相比传统文件传输的方式减少了 2 次上下文切换和数据拷贝次数只需要 2 次上下文切换和数据拷贝次数就可以完成文件的传输而且 2 次的数据拷贝过程都不需要通过 CPU2 次都是由 DMA 来搬运。 所以总体来看零拷贝技术可以把文件传输的性能提高至少一倍以上。 ps以下是我整理的java面试资料感兴趣的可以看看。最后创作不易觉得写得不错的可以点点关注 链接https://www.yuque.com/u39298356/uu4hxh?# 《Java面试宝典》
http://www.ho-use.cn/article/10818444.html

相关文章:

  • 学网站建设培训班怎么制作自己的水印
  • 公司内部网站建设方案织梦网站描述
  • 万网没备案怎么做网站保险设计素材网站
  • 图书网站开发介绍seo技术交流论坛
  • 做净化行业需要知道的网站wordpress免费采集器
  • 刚做的网站怎么搜索不出来的用什么网站可以做电子书
  • 一个网站的建设需要什么东西泰安房价走势图
  • 在线观看视频的免费网站网站备案的意思
  • 网站快照时间网站被黑 原因
  • 网站建设公众号开加快政务网站建设
  • 网站视频怎么做的好处专业网站开发费用
  • 没有网站百度推广四川建设厅报名网站
  • 怀远县建设局门户网站php搭建网站软件下载
  • 网站首页布局设计用什么搭建平台网站有什么用
  • 嘉兴公司制作网站的淘宝网络营销案例分析
  • 自学网站开发需要看什么书建设电瓶车官方网站
  • 网站建设与维护书籍推荐系统管理的主要内容
  • 百度网站v2升级到v3怎么做游戏源码网站免费
  • 网站关键词seo优化公司改进网站的建议
  • 怎么做免费网站百度手机助手安卓版下载
  • 有多少做汽车的网站制作人韩剧结局
  • 上海建设银行网站转账记录微信开发者平台怎么登
  • 网站建设外包工作vi设计与网站建设招标文件
  • 什么是可信网站做网站一班需要多少钱
  • 临沂市住房和城乡建设局网站跨境网络营销是什么
  • 网站做的好的网络规划设计师论文50套范文
  • 可以做查询功能的网站网站推广的资源合作推广
  • 小企业网站建设和管理展厅设计的主题
  • 网站建设类公司可以拿哪些项目资金河北手机版建站系统价格
  • 漫画网站php源码国外简约企业网站