地址

内存管理-----虚拟内存

谁说胖子不能爱 提交于 2020-01-20 19:06:56
前言 在8086/80186时还没有操作系统,把它称之为 实地址模式 。 那么怎么将地址表示出来呢? 比如:数据寄存器DS中的值是16位,要转换成20位的地址。怎么转换呢? 所以左移四位后则低四位变为0了,然后再加上IP寄存器中的偏移值,就是物理地址。 DS << 4 + IP (即偏移值) = 物理地址 没有操作系统则它的空间就称为物理空间(上图的空间) DS( 基地址 ) IP( 偏移地址、偏移量、逻辑地址 ) IP寄存器中最多存16位,则偏移量最多为2^16=64K. 因为 起始位置必须是16的倍数 ,则 整个段大小在16B-64K之间 ,则它的真实 大小就不确定 ,就可能导致 如果别人恶意修改这个IP寄存器 中的值,则 段的大小就会发生改变 ,就会导致访问无法访问的空间。 因此为了解决这样的问题,所以我们就需要 保存记录 基地址 段大小 以及 访问权限 。 所以在有了操作系统以后, 因为要向上兼容 ,所以 上述寄存器不改变 ,而添加 GDTR(全局段描述表寄存器) 和 LDTR(局部段描述符表寄存器) 。 我们这里先从GDTR分析,是在 内存存储 的 全局段描述表 (相当于数组) GDTR存储了这些,那么DS、CS、SS(ES)这些寄存器做什么呢? 存储 段描述符表的下标 段描述符表的类别 以及权限位 当操作系统启动时,默认占据12个描述符表项,而用户进程最多只能用8192

[转贴]特殊用途的IP地址介绍

孤者浪人 提交于 2020-01-20 18:34:50
说明:这篇文章是从Google上面搜的,至少第一页上面全是同一篇文章,已经不知道原文的出处了。 就像我们每个人都有一个身份证号码一样,网络里的每台电脑(更确切地说,是每一个设备的网络接口)都有一个IP地址用于标示自己。我们可能都知道这些地址由四个字节组成,用点分十进制表示以及它们的A,B,C分类等,然而,在总数大约为四十多亿个可用IP地址里,你知道下面一些常见的有特殊意义地址吗?我们一起来看看吧:   一、0.0.0.0   严格说来,0.0.0.0已经不是一个真正意义上的IP地址了。它表示的是这样一个集合:所有不清楚的主机和目的网络。这里的“不清楚”是指在本机的路由表里没有特定条目指明如何到达。对本机来说,它就是一个“收容所”,所有不认识的“三无”人员,一律送进去。如果你在网络设置中设置了缺省网关,那么Windows系统会自动产生一个目的地址为0.0.0.0的缺省路由。   二、255.255.255.255   限制广播地址。对本机来说,这个地址指本网段内(同一广播域)的所有主机。如果翻译成人类的语言,应该是这样:“这个房间里的所有人都注意了!”这个地址不能被路由器转发。   三、127.0.0.1   本机地址,主要用于测试。用汉语表示,就是“我自己”。在Windows系统中,这个地址有一个别名“Localhost”。寻址这样一个地址,是不能把它发到网络接口的。除非出错

特殊用途的IP地址介绍

梦想与她 提交于 2020-01-20 18:29:29
出处:www.net130.com 就像我们每个人都有一个身份证号码一样,网络里的每台电脑(更确切地说,是每一个设备的网络接口)都有一个IP地址用于标示自己。 我们可能都知道这些地址由四个字节组成,用点分十进制表示以及它们的A,B,C分类等,然而,在总数大约为四十多亿个可用IP地址里, 你知道下面一些常见的有特殊意义地址吗?我们一起来看看吧: 一、0.0.0.0 严格说来,0.0.0.0已经不是一个真正意义上的IP地址了。它表示的是这样一个集合:所有不清楚的主机和目的网络。这里的“不清楚” 是指在本机的路由表里没有特定条目指明如何到达。对本机来说,它就是一个“收容所”,所有不认识的“三无”人员,一律送进去。如果你 在网络设置中设置了缺省网关,那么Windows系统会自动产生一个目的地址为0.0.0.0的缺省路由。 二、255.255.255.255 限制广播地址。对本机来说,这个地址指本网段内(同一广播域)的所有主机。如果翻译成人类的语言,应该是这样:“这个房间里的所有 人都注意了!”这个地址不能被路由器转发。 三、127.0.0.1 本机地址,主要用于测试。用汉语表示,就是“我自己”。在Windows系统中,这个地址有一个别名“Localhost”。寻址这样一个地址, 是不能把它发到网络接口的。除非出错,否则在传输介质上永远不应该出现目的地址为“127.0.0.1”的数据包。 四

win10更改无线网卡的MAC地址

余生颓废 提交于 2020-01-20 18:25:52
https://blog.csdn.net/qq_31778495/article/details/80932472 前段时间电脑蹭网被禁了MAC地址,故寻找修改MAC地址的方法。 本机配置: win10 专业版 无线网卡见下图(其实大多数网卡都可以改) 方法: 无线网卡的 mac 地址在 Win10中怎么修改? - 蛆二的回答 - 知乎https://www.zhihu.com/question/36405648/answer/102193898 及https://jingyan.baidu.com/article/0320e2c180b5471b87507bc0.html 要点: 修改的无线网卡的MAC地址应该注意修改时第二个MAC数值只能是2 6 A E其中之一 否则无效。同理,无线网络MAC也一样。 即只能是x2-xx-xx-xx-xx或x6-xx-xx-xx-xx-xx等 --------------------- 作者:七块七毛七 来源:CSDN 原文:https://blog.csdn.net/qq_31778495/article/details/80932472 版权声明:本文为博主原创文章,转载请附上博文链接! 来源: https://www.cnblogs.com/zkwarrior/p/10705876.html

Image uImage与zImage的区别

 ̄綄美尐妖づ 提交于 2020-01-20 12:10:55
(1)、内核编译(make)之后会生成两个文件,一个Image,一个zImage,其中Image为内核映像文件,而zImage为内核的一种映像压缩文件,Image大约为4M,而zImage不到2M。 那么uImage又是什么的?它是uboot专用的映像文件,它是在zImage之前加上一个长度为64字节的“头”,说明这个内核的版本、加载位置、生成时间、大小等信息;其0x40之后与zImage没区别。 64字节的头结构如下: typedef struct image_header { uint32_tih_magic; uint32_tih_hcrc; uint32_tih_time; uint32_tih_size; uint32_tih_load; uint32_tih_ep; uint32_tih_dcrc; uint8_tih_os; uint8_tih_arch; uint8_tih_type; uint8_tih_comp; uint8_tih_name[IH_NMLEN]; } image_header_t; 所以,uImage和zImage都是压缩后的内核映像。而uImage是用mkimage工具根据zImage制作而来的。mkimage工具介绍如下: u-boot里面的mkimage工具来生成uImage(u-boot源码包/tools/mkimage.c )

dnsmasq 做 DHCP 服务器

末鹿安然 提交于 2020-01-20 05:34:39
/etc/dnsmasq.conf #DNS服务器的地址,就是我的热点的地址 listen-address=192.168.1.1 #设置DHCP分配的地址范围和时间 dhcp-range=192.168.1.10,192.168.1.20,1h #设定网关的地址,当然还是我热点的地址 dhcp-option=3,192.168.1.1 #重头戏来了,设定DNS服务器,可悲之前怎么也找不到设定的办法。。。还说是要使用DNS中继。。然后就呵呵了 dhcp-option=option:dns-server,114.114.114.114,8.8.4.4 然后 /etc/init.d/dnsmasq start 启动DHCP服务器 参考:http://blog.csdn.net/one_six_mix/article/details/53245288 实例配置文件: # DNS strict-order cache-size=1500 conf-dir=/etc/dnsmasq.d # DHCP dhcp-option=3,172.16.1.1 dhcp-lease-max=200 dhcp-leasefile=/var/lib/dnsmasq/dnsmasq.leases interface=enp3s0 dhcp-range=172.16.1.10,172.16.1.100,12h

《Linux Device Drivers》第十五章 内存映射和DMA——note

微笑、不失礼 提交于 2020-01-20 03:04:37
简单介绍 很多类型的驱动程序编程都须要了解一些虚拟内存子系统怎样工作的知识 当遇到更为复杂、性能要求更为苛刻的子系统时,本章所讨论的内容迟早都要用到 本章的内容分成三个部分 讲述mmap系统调用的实现过程 讲述怎样跨越边界直接訪问用户空间的内存页 讲述了直接内存訪问(DMA)I/O操作,它使得外设具有直接訪问系统内存的能力 Linux的内存管理 地址类型 Linux是一个虚拟内存系统,这意味着用户程序所使用的地址与硬件使用的物理地址是不等同的 有了虚拟内存,在系统中执行的程序能够分配比物理内存很多其它的内存,甚至一个单独的进程都能拥有比系统物理内存很多其它的虚拟地址空间 以下是一个Linux使用的地址类型列表 用户虚拟地址 这是在用户空间程序所能看到的常规地址 物理地址 该地址在处理器和系统内存之间使用 总线地址 该地址在外围总线和内存之间使用,通常它们与处理器使用的物理地址同样 内核逻辑地址 内核逻辑地址组成了内核的常规地址空间 在大多数体系架构中。逻辑地址和与其相关联的物理地址不同,只在它们之间存在一个固定的偏移量 kmalloc返回的内存就是内核逻辑地址 内核虚拟地址 和内核逻辑地址的同样之处在于。它们都将内核空间的地址映射到物理地址上 内核虚拟地址与物理地址的映射不必是线性的一对一的 全部的逻辑地址都是内核虚拟地址。可是非常多内核虚拟地址不是逻辑地址

CAN网络上新增加的设备与网络上已有设备MAC地址冲突的软件解决方案

泄露秘密 提交于 2020-01-19 18:24:30
已知 1号的CAN节点的地址是0x1f 2号的CAN 节点的地址是0x1f 要达到的要求是 假设 网络上 CAN1 节点已经工作了,我现在需要在网络上接入CAN2节点。 那么CAN2节点 首次上电 的时候 需要给网络上的其他CAN节点 发送 数据帧(数据帧叫检测ID号帧) ,该数据帧 要求 (网络上与CAN2 节点的物理MAC地址 相同的CAN节点) 发送 响应帧 (该响应帧 是 刚上电的CAN2节点,发送给网络上其他节点的响应帧 ,由其他节点处理以后的应答帧) 若假设CAN2 接点的物理ID 已经与CAN1节点的物理地址一样,则CAN2 节点 一直进入程序死循环,直到改变了CAN节点2 自己的 物理 MAC 地址以后(通过软件固化设置)。 才会跳出死循环,然后进行正常的接收 发送 工作。 本版本程序 ,在这个功能 上 ,采用的是 主机 和 从机 使用的一个程序。 试验平台 两个51单片机 主机 的 ID MAC 地址 是0x1f 从机的 ID MAC 地址 也是 0x1f 单片机的接线方式 如下 1号CAN节点外部5V供电正常以后, 停一段时间,再给外部的5V电源供电 。 则可以看到2号CAN节点的数码管一直显示的是4 表示它一直在循环体里面 基于ICAN 协议 2号CAN节点发送的 请求网络上其他节点 发送的(命令帧) 格式 应该是 下图 黄色 为 源节点 编号

DOS命令(可查看本机IP地址各个网卡号)

六眼飞鱼酱① 提交于 2020-01-19 05:53:46
网卡号指的是网卡的编号,也就是网卡的物理地址。 查看方法:(以win7为例) 打开开始 输入cmd 回车后进入dos命令行模式,然后输入ipconfig /all 回车查看结果 找到“无线局域网适配器 无线网络连接”或者“以太网适配器 本地连接”下的“物理地址”,其后的一串数字就是网卡的物理地址。 2、在DOS命令行窗口: 1)输入:ipconfig/all,回车,可查看本机IP地址、MAC地址、网关、DNS等 2)输入:chkdsk /r命令,回车检查修复硬盘(必要时再输入Y); 3)输入:systeminfo,回车,可查看本机BIOS版本。 来源: https://www.cnblogs.com/Blub-xinye1/p/5954561.html

指针学习四——指针、数组、地址

佐手、 提交于 2020-01-19 04:39:46
指针、数组、地址 指针是以地址作为值的变量,数组名的值是一个特殊的固定地址,看作是指针常量。 int a[100] , *p; 系统把编号为3000,30002...的内存字节作为数组元素a[0],a[1]...的地址。 基地址:内存位置3000是数组a的基地址,即a[0]的地址。 地址常量:数组名a是一个地址常量。 p=a; p=&a[0]; 语句等价,都把3000这个地址值赋给了指针p。 p=a+1; p=&a[1]; 同样,也是等价的,都把3002这个地址值赋给了指针p。 指针 内存地址 内存单元 数组元素 p 3000 a[0] p+1 3002 a[1] p+2 3004 a[2] 数组元素求和: 法一: sum=0; for(p=a;p<=&[99];p++) sum+=*p; *(a+i)与a[i]等价——地址+1为下一个地址,实际增加的不为一。 法二: sum=0; for(p=a;p<=&[99];p++) sum+=*(a+1); 法三: p=a; sum=0; for(i=0;i<100;++i) sum+=p[i]; 1.数组a是指针常量,不是变量。a++是非法的。 2.变量p是指向某个指定类型的指针,p+1代表访问的是下一个变量的内存地址。p+i是有意义的。 3.若p和q都是指向数组的指针,p-q产生一个int型的值,表示之间的数组元素的个数。 4