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

新泰网站建设流程微站开发

新泰网站建设流程,微站开发,企业网站推广的方式有哪些,可以做点赞的网站赚钱软件工程是一个庞大且不断演化的领域#xff0c;涉及许多创新。虽然如此#xff0c;大多数技术 —— 如果不是全部 —— 在软件工程中往往最终汇聚为几个基本原则。工程师更好地掌握软件工程的方法是熟悉软件工程的基础知识#xff0c;而不是那些不断变化的框架、语言或平台… 软件工程是一个庞大且不断演化的领域涉及许多创新。虽然如此大多数技术 —— 如果不是全部 —— 在软件工程中往往最终汇聚为几个基本原则。工程师更好地掌握软件工程的方法是熟悉软件工程的基础知识而不是那些不断变化的框架、语言或平台。 即使熟悉基础知识也需要时间和努力。人们经常问我如何掌握软件工程起初我无法客观地回答这个问题。但最近我开始观察自己的熟悉过程我对这个过程有了更清晰的理解。 事实上我从不强迫自己掌握任何东西。如果你一直关注我的工作你会注意到我很少谈论新的潮流技术相反我经常谈论那些已经过时、没有人再讨论的软件工程主题。这不是因为新的东西不好而是因为我觉得还有更多我不了解的东西我宁愿追求那些东西。 在这篇文章中我将带你走过我最近的开发经历因为这些经历还新鲜在我的脑海中。 QQ — 问题和问题 对我来说熟悉始于问题。我提出真正的问题让自己进入探索的道路在这个过程中我会遇到一个又一个的障碍逐个克服。每个问题都会引发另一个问题直到我达到一个能够统一一切的基础知识。就像一个递归函数达到了其基本条件。 引发问题的原因各不相同可能是一个学生或者是工作中的一个随机 bug。不想陷入哲学讨论但我发现承认自己不知道某个东西对我在熟悉过程中帮助很大。当一个学生问一个老师不知道的问题时往往会让老师感到不安。我一直在努力克服这一点真诚地探索问题而不是向学生展示我有多么了解。 我还有很多不知道的东西。 接下来的文章将涉及一些技术细节。让我们深入了解。 我所不了解的内容 当后端应用程序监听一个地址和端口时它可以开始接收来自客户端的请求。请求无论是 HTTP 还是其他协议以数据包的形式传输。这就是应用程序如何接收网络数据包的方式。 为简单起见我在这里省略了用于连接创建 / 接受的其他队列。这假设连接已经创建好。 以下是流程 内核在内核内存中为应用程序创建接收缓冲区。内核将传入的网络数据包放入接收队列。应用程序从接收缓冲区读取数据包并将其复制到自己的进程内存中。应用程序处理数据解密、解析协议、触发事件。 然而我发现自己对以下两个问题还不太了解 网络接口控制器NIC是如何将数据传输到内核内存的为什么数据必须先经过内核而不是直接进入进程内存 接下来的段落中我将尝试回答这两个问题。 Q1 — NIC 如何将数据包传输到内核 为了回答第一个问题我必须了解 CPU 的工作原理在这个过程中我发现了很多东西这里与我们相关的是中断interrupt的概念。为了从任何外部设备鼠标、键盘、硬盘或 NIC读取数据CPU 必须被中断并告知在哪里读取或写入数据。 因此我将这个知识应用到我的问题上得出了以下结论 当 NIC 接收到电信号、光信号或无线电信号无论是以太网、光纤还是 WIFI/5G并将其转换为二进制数据存储在其本地缓冲区中时它会向 CPU 发送中断请求要求 CPU 停止当前工作并将数据传输到主存中。 CPU 从 NIC 中读取数据并将其放入缓存行中然后将缓存行刷新到内存中。但是数据确切地放在内存的哪个位置呢这就是 NIC 驱动程序在内核空间运行的软件告诉 CPU 地址位置的地方。CPU 最终将数据刷新到提供的内存地址中。这个循环一直重复直到 NIC 中没有数据。然后内核接管处理。 这里花费了很多时间来试图回答更具体的问题比如 CPU 如何将缓存行刷新到内存如果其他核心也在读取相同的内存位置会发生什么但是我暂时跳过这些问题。 这一切对我来说都是有道理的只有一件事让我感到困惑这听起来非常冗长。如果我在软件工程中了解了什么那就是我们尽量避免过度冗长。 虽然中断在小型 I/O如鼠标移动或键盘按键中有效但对于大数据传输如网络传输、磁盘读取或写入对 CPU 来说非常耗时。因此我认为不能仅仅这样处理肯定还有其他方式。将大量数据放入微小的 CPU 寄存器和缓存中并进行刷新将需要很长时间。于是我进行了更多的搜索发现了 DMA。 原来这正是为什么发明了 DMA直接内存访问的原因。DMA 允许 NIC 直接访问主内存以便设备可以自行读取和写入数据从而使 CPU 解放出来。CPU 通过在 DMA 上设置目标内存地址以及应从哪个设备即 NIC读取数据来启动传输所有这些都是根据设备驱动程序的指令。 在 NIC 开始将数据直接传输到内存之后内核 / 驱动程序就可以在内存中正常处理一次数据。 问题 2 — 为什么数据首先进入内核 但实际上为什么不直接将数据从 NIC 移动到进程内存呢从 NIC 直接复制数据到内核然后再从内核复制到应用程序这样做的成本肯定是累积的。我发现设备驱动程序在内核中运行而内核是与 NIC 进行通信的实体所以数据包的存在于内核中。此外内核目前还不知道将数据放在进程内存的哪个位置而且它也不知道进程是否准备好读取数据。老实说我不明白为什么不能通过重新设计 API 来实现这一点。我认为使用nbsp;io_uring 可能可以做到这一点但我还没有探索过。 即使使用 DMA每个数据包的传输对 DMA 控制器来说也是一种负担。因此我发现 Intel 提出了一种称为 DMA 合并的想法其中 NIC 在本地缓冲数据包然后延迟接收数据包的 DMA 传输。这样可以最小化传输次数以节省能源但代价是增加延迟。 在这个探索过程中我还学到了虚拟内存、转换后备缓冲区、NUMA 架构、上下文切换等等知识。 总结 我刚才所做的被称为 “附带知识”。在精通的过程中除了目标知识还发现了其他事物。 也许你会说真的吗你不知道中断是什么甚至不知道 DMA 是什么吗事实上我确实听说过这些概念但从来没有在能够真正理解或引起我的兴趣的上下文中接触过它们。 我不知道该如何形容但是自己发现事物与别人把事物放在盘子里递给你是不同的感觉。 如果你喜欢我的文章点赞关注转发
http://www.hkea.cn/news/14381896/

相关文章:

  • 广州 科技网站建设公司湖南宏泰美佳建设工程有限公司网站
  • 书店网站建设可行性分析公司网站模板最新
  • 深圳在哪些网站找什么好处域名服务器查询
  • 设计一个个人求职网站电商分销平台
  • 能免费建网站吗wordpress 获取表单数据
  • 第三方做公司网站制作h5的基本流程
  • 深圳微信分销网站设计郴州网站建设公司简介
  • 高端企业门户网站建设珠江摩尔网站建设
  • 河北建设网站首页响应式网站切图
  • 做收钱的网站要什么条件wordpress get_term_link
  • 如何做网站的百科网站功能建设中页面
  • 郑州教育网站建设网络营销推广的优劣势
  • 网站qq访客统计泊头网站建设服务
  • 海宏集团网站建设方案qq官网登录入口手机版
  • 做网站字体用什么格式华润集团网站建设商
  • 网站建设建站网易互客个人网站建设详细教程
  • 杭州网站建站模板优质外贸网站
  • 做问卷调查的网站海淘网站入口
  • 服务器创建多个网站吗wordpress免费搭建个人博客
  • 官方网站建设要点wordpress微信注册
  • 哈尔滨制作网站企业南京建设部执业注册中心网站
  • 漳州 做网站新奇网站建设
  • 学习网站的建设南京网站维护公司
  • 网站建设费与无形资产如何创建自己的软件
  • 建设常规的网站报价是多少做网站常用软件
  • 招商网站开发文档江苏镇江网站建设
  • 平乡县网站建设平台wordpress搭建wifi登陆
  • 网站 盈利模式谷歌seo的推广
  • 仿站小工具怎么用海北高端网站建设
  • 手机网站搭建html网站怎么做视频