网络映射

Linux 下的DMA浅析

不打扰是莪最后的温柔 提交于 2019-11-29 00:02:20
DMA是一种无需CPU的参与就可以让外设和系统内存之间进行双向数据传输的硬件机制。使用DMA可以使系统CPU从实际的I/O数据传输过程中摆脱出来,从而大大提高系统的吞吐率。DMA经常与硬件体系结构特别是外设的总线技术密切相关。 一、DMA控制器硬件结构 DMA允许外围设备和主内存之间直接传输 I/O 数据, DMA 依赖于系统。每一种体系结构DMA传输不同,编程接口也不同。 数据传输可以以两种方式触发:一种软件请求数据,另一种由硬件异步传输。 a -- 软件请求数据 调用的步骤可以概括如下(以read为例): (1)在进程调用 read 时,驱动程序的方法分配一个 DMA 缓冲区,随后指示硬件传送它的数据。进程进入睡眠。 (2)硬件将数据写入 DMA 缓冲区并在完成时产生一个中断。 (3)中断处理程序获得输入数据,应答中断,最后唤醒进程,该进程现在可以读取数据了。 b -- 由硬件异步传输 在 DMA 被异步使用时发生的。以数据采集设备为例: (1)硬件发出中断来通知新的数据已经到达。 (2)中断处理程序分配一个DMA缓冲区。 (3)外围设备将数据写入缓冲区,然后在完成时发出另一个中断。 (4)处理程序利用DMA分发新的数据,唤醒任何相关进程。 网卡传输也是如此,网卡有一个循环缓冲区(通常叫做 DMA 环形缓冲区)建立在与处理器共享的内存中

转载:uIP之ARP:地址解析协议

天涯浪子 提交于 2019-11-28 19:14:48
第四章 ARP :地址解析协议 虽然数据链路层的第一道关卡是MAC地址,但基于TCP/IP的网络主要使用IP地址来标识主机而不使用MAC地址。比如要连接到别人的电脑或拷贝共享文件,一般会说:“告诉我你电脑的IP”,而不是“告诉我你电脑的MAC”。从以太网帧结构知道,不知道对方网卡的MAC地址是无法正常通讯的,那主机是怎样从IP地址上自动获取到MAC地址呢?这就是这章要讲的“地址解析协议”,以下简称其英文缩写“ARP”。 4 . 1 ARP 工作原理 从对方的IP地址获取MAC地址最简单的方法是静态映射,即手工建立IP地址和MAC地址的映射表。这种方法必须预先知道每个IP对应的网卡的MAC地址,并写到程序里,发送数据时先搜索这张表,找到IP地址对应的MAC地址。静态映射表内容如下: 表 4-1 静态映射表 IP地址 MAC地址 192.168.1.15 00-0B-6A-8E-3F-C2 192.168.6.82 00-1C-35-27-59-A8 静态映射表有一定的局限性,如:一台电脑换过网卡后,查找得出的MAC地址就不正确,会导致通讯不上;当对方电脑的IP地址改变后,虽然MAC地址没有变,但映射关系变了,静态映射表也必须手工改变。这样,维护一张静态映射表就很费劲。 为了避免手工维护映射表,设计人员使用ARP协议来实现地址的映射,由主机自己智能地维护一张动态映射表

残差网络原理

☆樱花仙子☆ 提交于 2019-11-28 16:56:23
1.背景 (1)为什么残差学习的效果会如此的好?与其他论文相比,深度残差学习具有更深的网络结构 , 此外,残差学习也是网络变深的原因?为什么网络深度如此的重要? 解:一般认为神经网络的每一层分别对应于提取不同层次的特征信息,有低层,中层和高层,而网络越深的时候,提取到的不同层次的信息会越多,而不同层次间的层次信息的组合也会越多。 (2)为什么在残差之前网络的深度最深的也只是 GoogleNet 的 22 层 , 而残差却可以达到 152 层,甚至 1000 层? 解:深度学习对于网络深度遇到的主要问题是梯度消失和梯度爆炸,传统对应的解决方案则是数据的初始化(normlized initializatiton)和(batch normlization)正则化,但是这样虽然解决了梯度的问题,深度加深了,却带来了另外的问题,就是网络性能的退化问题,深度加深了,错误率却上升了,而残差用来设计解决退化问题,其同时也解决了梯度问题,更使得网络的性能也提升了。 传统的对应网络层数增加的解决方案如下所示: 图 1 传统解决多层网络训练梯度问题的方法 图 2 残差网络的基本架构 2.深度残差学习 深度残差学习,其中又分为了三个小部分包括残差元,为什么是恒等映射?如果快捷映射不是恒等的情况? 图 3 残差网络的构思 H(x) is any desired mapping, instead hope

Pinterest谈实战经验:如何在两年内实现零到数百亿的月访问

若如初见. 提交于 2019-11-28 11:50:24
Pinterest一直保持着指数增长,每一个半月都会翻一翻。在两年内,他们实现了从0到数百亿的月PV;从开始的两个创始人加一个工程师增长到现在超过40个工程师,从一个小型的MySQL服务器增长到180个Web Enigne、240个API Enigne、88个MySQL DB(cc2.8xlarge,每个DB都会配置一个从属节点)、110个Redis Instance以及200个Mmecache Instance。 在一个名为 《Scaling Pinterest》 的主题演讲上,Pinterest的 Yashwanth Nelapati 和 Marty Weiner 为我们讲述了这个戏剧性的过程。当然扩展到当下规模,Pinterest在众多选择中不可避免的走了许多的弯路,而Todd Hoff认为其中最宝贵的经验该归结于以下两点: 如果你的架构应对增长所带来的问题时,只需要简单的投入更多的主机,那么你的架构含金量十足。 当你把事物用至极限时,这些技术都会以各自不同的方式发生故障,这导致他们对工具的选择有着特殊的偏好:成熟、简单、优秀、知名、被更多的用户喜爱、更好的支持、稳定且杰出的表现、通常情况下无故障以及免费。使用这些标准,他们选择了MySQL、Solr、Memcache、Redis、Cassandra,同时还抛弃了MongoDB。 同样这两个点是有关联的

数据库分库分表思路

我的未来我决定 提交于 2019-11-28 11:46:24
一. 数据切分 关系型数据库本身比较容易成为系统瓶颈,单机存储容量、连接数、处理能力都有限。当单表的数据量达到1000W或100G以后,由于查询维度较多,即使添加从库、优化索引,做很多操作时性能仍下降严重。此时就要考虑对其进行切分了,切分的目的就在于减少数据库的负担,缩短查询时间。 数据库分布式核心内容无非就是数据切分(Sharding) ,以及切分后对数据的定位、整合。数据切分就是将数据分散存储到多个数据库中,使得单一数据库中的数据量变小,通过扩充主机的数量缓解单一数据库的性能问题,从而达到提升数据库操作性能的目的。 数据切分根据其切分类型,可以分为两种方式: 垂直(纵向)切分和水平(横向)切分 1、垂直(纵向)切分 垂直切分常见有垂直分库和垂直分表两种。 垂直分库 就是根据业务耦合性,将关联度低的不同表存储在不同的数据库。做法与大系统拆分为多个小系统类似,按业务分类进行独立划分。与"微服务治理"的做法相似,每个微服务使用单独的一个数据库。如图: 垂直分表 是基于数据库中的"列"进行,某个表字段较多,可以新建一张扩展表,将不经常用或字段长度较大的字段拆分出去到扩展表中。在字段很多的情况下(例如一个大表有100多个字段),通过"大表拆小表",更便于开发与维护,也能避免跨页问题,MySQL底层是通过数据页存储的,一条记录占用空间过大会导致跨页,造成额外的性能开销

ioctl操作

随声附和 提交于 2019-11-28 05:14:17
  在本书中有两个地方都对这个函数进行了介绍,其实还有很多地方需要这个函数。ioclt函数传统上一直作为纳西而不适合归入其他精细定义类别的特性的系统接口。网络程序(特别是服务器程序)经常在程序启动执行后使用ioctl获取所在主机全部网络接口的信心,包括:接口地址、是否支持广播、是否支持多播。 #include <unistd.h> int ioctl(int fd,int request,...../* void *arg /); //返回:若成功则为0.失败则我-1 套接字操作 文件操作 接口操作 ARP高速缓存操作 路由表操作 流系统   不但某些ioclt操作和某些fcntl操作功能重叠(譬如把套接字设置为非阻塞),而且某些操作可以使用ioctl以不止一种方式制定(譬如设置套接字的进程组属主)。下表列出了网络相关ioctl请求的request参数以及arg地址必须指向的数据类型。 套接字操作   明确要求套接字ioctl请求有三个,它们都要求ioctl的第三个参数是指向某个整数的一个指针。 SIOCATMARK:如果本套接字的读指针当前位于带外标记,那就通过由第三个参数指向的帧数放回一个非0值,否则返回一个0值。 SIOCGPGRP:通过由第三个参数指向的整数返回本套接字的进程ID或进程组ID,该ID指定针对本套接字的SIGIO或SIGURG信号的接受进程。 SIOCSPGR

Windows 进程间通信

淺唱寂寞╮ 提交于 2019-11-28 02:32:36
3.4 使用 WM_COPYDATA 消息通信 对于少量数据可以用WM_COPYDATA方便地实现通信。由于SendMessage()是阻塞的,只有接收方响应了消息,SendMessage()才能返回,否则一直阻塞。所以,对于大量数据来说,用SendMessage()就容易造成窗口假死。 3.4.1 通过 WM_COPYDATA 消息实现进程间通信的方法 在Win32中,WM_COPYDATA消息主要目的是允许在进程间传递只读数据。SDK文档推荐用户使用SendMessage()函数,接收方在数据复制完成前不返回,这样发送方就不可能删除和修改数据。这个函数的原型如下: SendMessage(WM_COPYDATA,wParam,lParam) 其中wParam设置为包含数据的窗口句柄,lParam指向一个COPYDATASTRUCT的结构,其定义为: typedef struct tagCOPYDATASTRUCT{ DWORD dwData; DWORD cbData; PVOID lpData; }COPYDATASTRUCT; 其中dwData为自定义数据, cbData为数据大小, lpData为指向数据的指针。需要注意的是,WM_COPYDATA消息保证发送的数据从原进程复制到目标进程。但是,WM_COPYDATA消息不能发送HDC、HBITMAP之类的东西

网络数据包收发流程(三):e1000网卡和DMA

扶醉桌前 提交于 2019-11-28 01:00:35
转载 https://www.cnblogs.com/CasonChan/p/5166239.html 一、硬件布局 每个网卡(MAC)都有自己的专用DMA Engine,如上图的 TSEC 和 e1000 网卡intel82546。 上图中的红色线就是以太网数据流,DMA与DDR打交道需要其他模块的协助,如TSEC,PCI controller 以太网数据在 TSEC<-->DDR PCI_Controller<-->DDR 之间的流动,CPU的core是不需要介入的 只有在数据流动结束时(接收完、发送完),DMA Engine才会以外部中断的方式告诉CPU的core 二、DMA Engine 上面是DMA Engine的框图,以接收为例: 1. 在System memory中为DMA开辟一端连续空间,用来BD数组 (一致性dma内存) BD是给DMA Engine使用的,所以不同的设备,BD结构不同,但是大致都有状态、长度、指针3个成员。 2. 初始化BD数组,status为E,length为0 在System memory中再开辟一块一块的内存,可以不连续,用来存放以太网包 将这些内存块的总线地址赋给buf(dma映射) 3. 当MAC接收以太网数据流,放在了Rx FIFO中 4. 当一个以太网包接收完全后,DMA engine依次做以下事情 fetch bd

Windows 将FTP 映射到本地文件夹 --简化操作

岁酱吖の 提交于 2019-11-27 22:25:17
转载自yutiantongbu Windows 将FTP 映射到本地文件夹 --简化操作 yutiantongbu 关注 0 人评论 1.右键我的电脑,选择映射网络驱动器 2.选择"连接到可用与存储文档和图片的网站" 3.接下来下一步到-->输入你的FTP路径 4.输入用户名,密码 5.完成后会在计算机的网络中显示一个目录。可以直接访问了。 ©著作权归作者所有:来自51CTO博客作者yutiantongbu的原创作品,如需转载,请注明出处,否则将追究法律责任 ftp 映射 挂载 本地 文件 Wind windows 1 分享 微博 QQ 微信 收藏 </div> 来源: https://www.cnblogs.com/sogeisetsu/p/11380469.html

【实验】***及NAT应用-思科

只愿长相守 提交于 2019-11-27 16:20:33
实验名称:×××及NAT应用 实验需求: 一、通过×××实现PC1访问Server1,但是无法访问互联网(ISP) 二、通过NAT实现PC0访问互联网(ISP),但是无法访问Server1 三、实现PC1即可以访问互联网(ISP),又可以访问Server1 IP地址规划: 配置思路: 一、通过×××实现PC1访问Server1,但是无法访问互联网(ISP) 1配置ISAKMP策略 2配置ACL控制条目 3配置IPSec策略(转换及) 4配置加密映射集 5将映射集应用在指定接口 二、通过NAT实现PC0访问互联网(ISP),但是无法访问Server1 1配置ACL控制条目 2将ACL控制条目应用在指定接口 3定义NAT出向/入向接口 三、实现PC1即可以访问互联网(ISP),又可以访问Server1 1配置ACL控制条目 2将ACL控制条目应用在指定接口 网络环境搭建: Router1(分公司边界路由器) IP配置: 路由配置: Router4(分公司内网路由器) IP配置: 路由配置: ISP路由器配置 IP配置: Router3(总公司边界路由器) IP配置: 路由配置: 实验步骤: 一、通过×××实现PC1访问Server1,但是无法访问互联网(ISP) Router1 配置ISAKMP策略 crypto isakmp policy 1 //创建加密协议isakmp策略为1