地址

主存管理

送分小仙女□ 提交于 2020-01-22 08:38:51
1 概念 存储器 storage, memmory 能接收数据和保存数据、而且能根据命令提供这些数据的装置。 存储器分成两类: 内存储器(简称内存、主存、物理存储器) 处理机能直接访问的存储器。用来存放系统和用户的程序和数据,其特点是存取速度快,存储方式是以新换旧,断电信息丢失。 外存储器(简称外存、辅助存储器) 处理机不能直接访问的存储器。用来存放用户的各种信息,存取速度相对内存而言要慢得多,但它可用来长期保存用户信息。在文件系统中介绍。 1.内存的物理组织 物理地址: 把内存分成若干个大小相等的存储单元,每个单元给一个编号,这个编号称为内存地址(物理地址、绝对地址、实地址),存储单元占8位,称作字节(byte)。 物理地址空间: 物理地址的集合称为物理地址空间(主存地址空间),它是一个一维的线性空间。 2.程序的逻辑结构 程序地址:用户编程序时所用的地址(或称逻辑地址 、虚地址 ),基本单位可与内存的基本单位相同,也可以不相同。 程序地址空间(逻辑地址空间、虚地址空间):用户的程序地址的集合称为逻辑地址空间,它的编址总是从0开始的,可以是一维线性空间,也可以是多维空间。 2存储管理的功能 1.存储管理功能 地址映射 将程序地址空间中使用的逻辑地址变换成主存中的地址的过程 (2) 主存分配 按照一定的算法把某一空闲的主存区分配给作业或进程。 (3) 存储保护 保证用户程序

MAC地址泛洪攻击

南楼画角 提交于 2020-01-22 08:34:42
一.MAC泛洪攻击的原理   MAC泛洪攻击主要是利用局域网交换机的mac学习和老化机制。   1.1交换机的工作流程如下:     局域网中的pc1发送数据帧给pc2,经过交换机时,交换机会在内部mac地址表中查找数据帧中的目标mac地址,如果找到就将该数据帧发送到相应的端口,如果找不到,交换机就会向入端口以外的所有端口发送此数据帧(所谓的广播,不过不是广播帧,广播帧的目的mac地址是全F)。 由此可以看到交换机实现交换功能的关键就是内部的mac地址表,那这个内部mac地址是怎么形成的呢?有什么特性呢?接下来就要讲解一下交换机的mac学习和老化机制。 1.2 交换机的mac学习机制    1. 首先咱们看一下内部mac表的结构,内部mac表都是有大小的,一般8k左右,一但mac表满了,其他mac地址就加不进来:         内部mac表是将主机的mac地址和连接到交换机上的端口号进行绑定,这样可以根据mac地址找到端口进行转发。      2.一开始的时候,没有主机连接,交换机内的mac表是空白的,这时候就要进行学习。   下面咱们幻想出一个场景: PC1这时候想往PC2发送数据,数据帧经过交换机的时候,交换机会把数据帧中的源mac地址和进入的端口号记录到mac表中; 由于一开始mac表中没有PC2的mac地址和端口绑定,所以交换机会将这个数据帧进行全网转发,就是所谓的广播

IOMMU

梦想的初衷 提交于 2020-01-22 05:22:14
https://blog.csdn.net/sdulibh/article/details/86611777 I/O作为CPU和外设交流的一个渠道,主要分为两种,一种是Port I/O,一种是MMIO(Memory mapping I/O)。 前者就是我们常说的I/O端口,它实际上的应该被称为I/O地址空间。 对于x86架构来说,通过IN/OUT指令访问。PC架构一共有65536个8bit的I/O端口,组成64KI/O地址空间,编号从0~0xFFFF。连续两个8bit的端口可以组成一个16bit的端口,连续4个组成一个32bit的端口。I/O地址空间和CPU的物理地址空间是两个不同的概念,例如I/O地址空间为64K,一个32bit的CPU物理地址空间是4G。 MMIO占用CPU的物理地址空间,对它的访问可以使用CPU访问内存的指令进行。一个形象的比喻是把文件用mmap()后,可以像访问内存一样访问文件、同样,MMIO是用访问内存一样的方式访问I/O资源,如设备上的内存。MMIO不能被cache,原因以前很多帖子论述过,就不多说了(有特殊情况,如VGA)。 Port I/O和MMIO的主要区别在于1)前者不占用CPU的物理地址空间,后者占有(这是对x86架构说的,一些架构,如IA64,port I/O占用物理地址空间)。2)前者是顺序访问。也就是说在一条I/O指令完成前

集线器与交换机的区别

穿精又带淫゛_ 提交于 2020-01-22 03:58:34
集线器: 能完成多个电脑的连接 任何数据都会以广播的形式发送,造成网络拥堵。 交换机: 能完成多个电脑的连接 学习前是广播,学习后是单播。 arp:根据ip查找mac地址 rarp:根据mac地址查找ip地址 ICMP:ping使用的协议 cmd窗口> arp -a 查询当前的ip与mac地址对应表 cmd窗口> arp -d 清除当前对应表 ping的过程:如果ip与mac地址对应表里没有查询到mac,则先发送arp请求,查询到mac后再发送icmp报文 来源: https://www.cnblogs.com/LiuYanYGZ/p/12227768.html

STM32位带操作

独自空忆成欢 提交于 2020-01-21 22:58:25
1. 位带操作是可以对寄存器内的一个位映射到位带别名区进行单独操作----寄存器正常是一次进行32位的操作 2. STM32是通过位带别名区实现位操作,即将寄存器中的一个位映射到另一个32位的地址上,操作这个地址就能操作寄存器的一个位 3. 外设位带区地址为: 0X40000000~0X40100000,位带别名区的地址为:0X42000000~0X43FFFFFF 4. SRAM位带区地址:0X2000 0000~X2010 0000,位带别名区地址:0X2200 0000~0X23FF FFFF 5. 寄存器的位对应位带别名区地址计算公式: ((addr & 0xF0000000)+0x02000000+((addr &0x00FFFFFF)<<5)+(n<<2)) addr是寄存器的地址,n是寄存器内对应的第几位 来源: CSDN 作者: q601785959 链接: https://blog.csdn.net/q601785959/article/details/104064257

蓝牙讲解几个地址

时光毁灭记忆、已成空白 提交于 2020-01-21 19:33:06
地址: https://developer.android.com/guide/topics/connectivity/bluetooth?hl=zh-cn#java 地址: https://blog.csdn.net/pashanhu6402/article/details/79907306 地址: https://blog.csdn.net/zqf_888/article/details/81060606 来源: CSDN 作者: 嘿吼嘿吼 链接: https://blog.csdn.net/c657674129/article/details/104064437

使用 gitstats 来统计代码

风流意气都作罢 提交于 2020-01-21 13:50:20
使用 gitstats 来统计代码 github地址如下 gitstats clone地址 git clone https://github.com/hoxu/gitstats && cd $_ 比如我的项目地址为 /Users/username/project 生成的地址为 /Users/username/project-git-result gitstats /Users/username/project /Users/username/project-git-result 可能会提示(我的为 mac os) env: python2: No such file or directory 可以进行 python2 的链接 sudo ln -sf /usr/bin/python2.7 /usr/local/bin/python2 如果没有安装 gunplot, 需要进行安装 brew install gnuplot 然后执行刚才的 gitstats 命令即可 来源: https://www.cnblogs.com/asdfq/p/10994187.html

scanf使用概述

故事扮演 提交于 2020-01-21 00:40:14
一、scanf使用方法: 1. scanf(“输入控制符”,输入参数); ●从键盘中输入的字符,转化为 输入控制符规定格式的数据,然后存入(以输入参数为值的)地址变量中 ①VS_2015版本如果使用scanf会报错,用scanf_s不会报错 ②从键盘上敲入的是数字、字母、符号……,这些数字、字母、符号全部转为字符形式的信息 传递给操作系统。 操作系统是以字符的方式接收键盘上的信息。 操作系统接受字符信息后,需要使用 “ 输入控制符 ” 将字符信息转化。 %d的含义就是要将字符信息转化成一个十进制数字。经过 %d 转化完之后,字符 “ 123 ” 就是数字 123 了。 最后通过 “ &i ” 找到变量 i 的地址,再将数字 123 存入变量 i 的地址中,所以最终的输出结果:i=123 ③&:取地址符,&i:i的地址 ④将从键盘中敲入的字符转化为十进制的形式,将此值存入 i 的地址中(即,将数据存入以变量 i 的地址为地址的地址变量中) /* 时间:2020年1月 编辑人:pinkowonote 功能:\ 目的:如何使用scanf */ # include <stdio.h> int main ( void ) { int i; /*将用户从键盘中敲入的字符转化为十进制的形式%d, 将此值(十进制)存入i 变量的地址中*/ scanf ( "%d" , & i ) ; printf

智能led灯具HMI(参数设置界面二)

☆樱花仙子☆ 提交于 2020-01-20 23:50:39
设置灯具板参数(二): 输入地址(数值输入):LW0023 [0001~9999] //当前操作的控制器地址 读取参数(多态按钮):LW0010 [0/1] 组地址(数值显示):LW0065 [01~126] 站地址(数值显示):LW0066 [01~126] 功率级别(数值输入):LW0067 [0~3] 模式(数值输入):LW0068 [0~1] 模式(数值输入):LW0068 [0~1] 设置参数(多态按钮):LW0009 [0/1] 输入新地址(数值输入):LW0082 [0001~9999] 输入组地址(数值输入):LW0083 [0001~9999] 输入功率级别(数值输入):LW0084 [0~3] 输入模式(数值输入):LW0085 [0~1] 来源: https://www.cnblogs.com/shlb/p/12219840.html

Linux网络编程 - 套接字和地址

﹥>﹥吖頭↗ 提交于 2020-01-20 20:22:03
1. socket 到底是什么? 在网络编程,socket,中文翻译为 套接字,有的时候也叫套接口 。它的寓意是通过插口接入的方式,快速完成网络连接和数据收发。可以把它从想象成现实世界的电源插槽,或者早起上网需要的网络插槽,所以 socket也可以看做是对物理世界的直接映射。 先上一张图,可以看看: 这张图是网络编程中,客户端和服务端工作的核心逻辑。先从右侧服务端开始看,因为在客户端发起连接请求之前,服务端必须先初始化好。首先初始化socket,之后服务器执行 bind() 绑定,将自己的服务能力绑定在一个众所周知的地址和端口上。紧接着,执行 listen() ,将原先的 socket转化为服务端的socket,服务端最后阻塞在 accept() 等待客户端请求的到来。 服务端准备就绪后,客户端需要先初始化 socket,再执行 connect() 向服务端的地址和端口发起连接请求,这里的地址必须是客户端预先知晓的。这个过程就是 TCP三次握手,具体的后面会详细阐述。 三次握手成功后,客户端和服务端之间就可以进行数据传输。具体来说,客户端向内核发起write字节流写操作,内核协议栈将字节流从网络设备发送到服务端,服务端从内核得到信息,将字节流从内核读到进程中,并开始业务逻辑的处理,完成之后,服务端再将得到的结果以同样的方式写回到客户端。可以看到, 一旦连接建立