⑴ 物理地址是什么
物理地址是什么啊?
是指你的 网卡 MAC地址,,就相当于一个编号吧网卡物理地址存储器中存储单元对应实际地址称物理地址
MAC(Media Access Control, 介质访问控制)地址是识别LAN(局域网)节点的标识。网卡的物理地址通常是由网卡生产厂家烧入网卡的EPROM(一种闪存芯片,通常可以通过程序擦写),它存储的是传输数据时真正赖以标识发出数据的电脑和接收数据的主机的地址。
也就是说,在网络底层的物理传输过程中,是通过物理地址来识别主机的,它一般也是全球唯一的。比如,着名的以太网卡,其物理地址是48bit(比特位)的整数,如:44-45-53-54-00-00,以机器可读的方式存入主机接口中。以太网地址管理机构(IEEE)将以太网地址,也就是48比特的不同组合,分为若干独立的连续地址组,生产以太网网卡的厂家就购买其中一组,具体生产时,逐个将唯一地址赋予以太网卡。
形象的说,MAC地址就如同我们身份证上的身份证号码,具有全球唯一性。
怎么查询电脑物理地址
步骤如下: 方法一 1.打开【运行】按钮。
2.在【运行】对话框输入【cmd】,点击确定。 3.在命令提示符里输入【ipconfig -all】。
4.按下回车键即可查看到物理地址。 方法二: 1.打开【网络和共享中心】。
2.点击【以太网】按钮。 3.点击【详细信息】即可完成对物理地址的查询。
(1)分页系统中什么时候形成物理地址扩展阅读:描述 地址从0开始编号,顺序地每次加1,因此存储器的物理地址空间是呈线性增长的。它是用二进制数来表示的,是无符号整数,书写格式为十六进制数。
它是出现在CPU外部地址总线上的寻址物理内存的地址信号,是地址变换的最终结果。用于内存芯片级的单元寻址,与处理器和CPU连接的地址总线相对应。
在计算机科学中,物理地址(英语:physical address),也叫实地址(real address)、二进制地址(binary address),它是在地址总线上,以电子形式存在的,使得数据总线可以访问主存的某个特定存储单元的内存地址。 在和虚拟内存的计算机中,物理地址这个术语多用于区分虚拟地址。
尤其是在使用内存管理单元(MMU)转换内存地址的计算机中,虚拟和物理地址分别指在经MMU转换之前和之后的地址。在计算机网络中,物理地址有时又是MAC地址的同义词。
这个地址实际上是用于数据链路层,而不是如它名字所指的物理层上的。 参考资料来源:网络:物理地址。
什么是物理地址?
物理地址是你的网卡地址,MAC(Media Access Control, 介质访问控制)地址是识别LAN(局域网)节点的标识。网卡的物理地址通常是由网卡生产厂家烧入网卡的EPROM(一种闪存芯片,通常可以通过程序擦写),它存储的是传输数据时真正赖以标识发出数据的电脑和接收数据的主机的地址。
也就是说,在网络底层的物理传输过程中,是通过物理地址来识别主机的,它一般也是全球唯一的。比如,着名的以太网卡,其物理地址是48bit(比特位)的整数,如:44-45-53-54-00-00,以机器可读的方式存入主机接口中。以太网地址管理机构(IEEE)将以太网地址,也就是48比特的不同组合,分为若干独立的连续地址组,生产以太网网卡的厂家就购买其中一组,具体生产时,逐个将唯一地址赋予以太网卡。
形象的说,MAC地址就如同我们身份证上的身份证号码,具有全球唯一性。
可以这样获取MAC地址:在Windows 98/Me中,依次单击“开始”→“运行” →输入“winipcfg”→回车。即可看到MAC地址。在Windows 2000/XP中,依次单击“开始”→“运行”→输入“CMD”→回车→输入“ipconfig /all”→回车。即可看到MAC地址
什么是物理地址?物理地址有何作用?
网络中的地址分为物理地址和逻辑地址两类,与网络层的IP地址 传输层的端口号以及应用层的用户名相比较,局域望网的MAC层地址是由硬件来处理的,叫做物理地址或硬件地址.IP地址 传输层的端口号以及应用层的用户名是逻辑地址一由软件处理.我认为你说的MAC地址应该就是物理地址.
大多数局域网通过为网卡分配一个硬件地址来标识一个联网的计算机或其他设备.所谓物理地址是指固化在网卡EPROM中的地址,这个地址应该保证在全网是唯一的.IEEE注册委员会为每一个生产厂商分配物理地址的前三字节,即公司标识.后面三字节由厂商自行分配.即一个厂商获得一个前三字节的地址可以生产的网卡数量是16777216块.即一块网卡对应一个物理地址.也就是说对应物理地址的前三字节可以知道他的生产厂商.
如果固化在网卡中的地址为002514895423,那么这块网卡插到主机A中,主机A的地址就是002514895423,不管主机A是连接在局域网1上还是在局域网2上,也不管这台计算机移到什么位置,主机A的物理地址就是002514895423 .它是不变的,而且不会和世界上任何一台计算机相同.当主机A发送一帧时,网卡执行发送程序时,直接将这个地址作为源地址写入该帧.当主机A接收一帧时,直接将这个地址与接收帧目的地址比较,以决定是否接收.
物理地址一般记作00-25-14-89-54-23(主机A的地址是002514895423)
什么是电脑里的“物理地址”?
电脑里的物理地址是指固化在硬件网卡里不能随便更改的唯一标识。
网络中的地址分为物理地址和逻辑地址两类:
与网络层的IP地址、传输层的端口号以及应用层的用户ID相比较,局域网的MAC层地址是由硬件来处理的,叫做物理地址或硬件地址;
而IP地址、传输层的端口号以及应用层的用户名是逻辑地址——由软件处理。
MAC地址一般被称为物理地址,固化在网卡EPROM中的地址。这个地址应该保证在全网是唯一的.IEEE注册委员会为每一个生产厂商分配物理地址的前三字节,即公司标识。后面三字节由厂商自行分配,即一个厂商获得一个前三字节的地址可以生产的网卡数量是16777216块。
什么是线性地址?和物理地址的区别是什么呢?
386架构里,cpu可以处于实模式和保护模式。
实模式下,cpu指令访问的地址就是物理地址,形式为:段寄存器:偏移
在保护模式下,cpu可以使用分段机制和分页机制。
分段机制下使用的地址就是逻辑地址,形式为:段选择子:偏移
分页机制下使用的地址就是线性地址,形式为:0xXXXXXXXX
无论是逻辑地址还是线性地址,都要被cpu映射成物理地址。
保护模式下必须采用分段机制。在此基础上可采用分页机制。
逻辑地址被转化为线性地址,如果采用分页机制,则该线性地址通过分页机制被映射成物理地址。如果不采用分页机制,则该线性地址就是物理地址。
实模式下的物理地址只能访问1M以下空间,而保护模式下的物理地址可以访问所有32位空间。并且要注意,物理内存空间只是物理地址空间的一个部分而已。
另外还有一个”总线地址“的概念,是从总线设备的角度来说的。
在linux系统里,对cpu来说,物理内存的首地址是从线性地址的0xc0000000开始的。而对总线设备来说,物理内存的首地址可能是从总线地址0x00000000开始,也可能是从另外的总线地址开始,随系统而异。这也是为什么内核里经常有vir_to_phy 和vir_to_bus转换的缘故。
还有~~~
关于物理地址,线性地址和虚拟地址的区别,我只能凭我的理解简单说说,可能不准确。物理地址在什么时候都存在,但是在采用分页技术和虚拟内存技术后,你很难确定物理地址在那里,所以建议在实模式下采用物理地址和线性地址形式,这时候物理地址和线性地址其实是一致的。最常用的,比方说,计算机启动后的地址是0xfff0:0000,装载BIOS,然后转移到0x07C0:0000,所以总可以设置一个物理断点0x7C00,开始调试你的bootloader。
⑵ 什么是逻辑地址,什么是物理地址,它们之间有什么关系
逻辑地址:
是指由程序产生的与段相关的偏移地址部分。又称绝对地址
物理地址:在存储器里以字节为单位存储信息,为正确地存放或取得信息,每一个字节单元给以一个唯一的存储器地址,称为物理地址,又叫实际地址或绝对地址。
二者关系:
逻辑地址和物理地址相对的。物理地址是唯一的,逻辑地址的相对的。
⑶ 什么是物理地址
Windows 2000 使用基于分页机制的虚拟内存。每个进程有4GB的虚拟地址空间。基于分页机制,这4GB地址空间的一些部分被映射了物理内存,一些部分映射硬盘上的交换文件,一些部分什么也没有映射。程序中使用的都是4GB地址空间中的虚拟地址。而访问物理内存,需要使用物理地址。
下面我们看看什么是物理地址,什么是虚拟地址。
物理地址 (physical address): 放在寻址总线上的地址。放在寻址总线上,如果是读,电路根据这个地址每位的值就将相应地址的物理内存中的数据放到数据总线中传输。如果是写,电路根据这个地址每位的值就将相应地址的物理内存中放入数据总线上的内容。物理内存是以字节(8位)为单位编址的。
虚拟地址 (virtual address): 4G虚拟地址空间中的地址,程序中使用的都是虚拟地址。
如果CPU寄存器中的分页标志位被设置,那么执行内存操作的机器指令时,CPU会自动根据页目录和页表中的信息,把虚拟地址转换成物理地址,完成该指令。比如 mov eax,004227b8h ,这是把地址004227b8h处的值赋给寄存器的汇编代码,004227b8这个地址就是虚拟址。CPU在执行这行代码时,发现寄存器中的分页标志位已经被设定,就自动完成虚拟地址到物理地址的转换,使用物理地址取出值,完成指令。对于Intel CPU 来说,分页标志位是寄存器CR0的第31位,为1表示使用分页,为0表示不使用分页。对于初始化之后的 Win2k 我们观察 CR0 ,发现第31位为1。表明Win2k是使用分页的。
使用了分页机制之后,4G的地址空间被分成了固定大小的页,每一页或者被映射到物理内存,或者被映射到硬盘上的交换文件中,或者没有映射任何东西。对于一般程序来说,4G的地址空间,只有一小部分映射了物理内存,大片大片的部分是没有映射任何东西。物理内存也被分页,来映射地址空间。对于32bit的Win2k,页的大小是4K字节。CPU用来把虚拟地址转换成物理地址的信息存放在叫做页目录和页表的结构里。
物理内存分页,一个物理页的大小为4K字节,第0个物理页从物理地址 0x00000000 处开始。由于页的大小为4KB,就是0x1000字节,所以第1页从物理地址 0x00001000 处开始。第2页从物理地址 0x00002000 处开始。可以看到由于页的大小是4KB,所以只需要32bit的地址中高20bit来寻址物理页。
页表,一个页表的大小为4K字节,放在一个物理页中。由1024个4字节的页表项组成。页表项的大小为4个字节(32bit),所以一个页表中有1024个页表项。页表中的每一项的内容(每项4个字节,32bit)高20bit用来放一个物理页的物理地址,低12bit放着一些标志。
页目录,一个页目录大小为4K字节,放在一个物理页中。由1024个4字节的页目录项组成。页目录项的大小为4个字节(32bit),所以一个页目录中有1024个页目录项。页目录中的每一项的内容(每项4个字节)高20bit用来放一个页表(页表放在一个物理页中)的物理地址,低12bit放着一些标志。
对于x86系统,页目录的物理地址放在CPU的CR3寄存器中。
CPU把虚拟地址转换成物理地址:
一个虚拟地址,大小4个字节(32bit),包含着找到物理地址的信息,分为3个部分:第22位到第31位这10位(最高10位)是页目录中的索引,第12位到第21位这10位是页表中的索引,第0位到第11位这12位(低12位)是页内偏移。对于一个要转换成物理地址的虚拟地址,CPU首先根据CR3中的值,找到页目录所在的物理页。然后根据虚拟地址的第22位到第31位这10位(最高的10bit)的值作为索引,找到相应的页目录项(PDE,page directory entry),页目录项中有这个虚拟地址所对应页表的物理地址。有了页表的物理地址,根据虚拟地址的第12位到第21位这10位的值作为索引,找到该页表中相应的页表项(PTE,page table entry),页表项中就有这个虚拟地址所对应物理页的物理地址。最后用虚拟地址的最低12位,也就是页内偏移,加上这个物理页的物理地址,就得到了该虚拟地址所对应的物理地址。
一个页目录有1024项,虚拟地址最高的10bit刚好可以索引1024项(2的10次方等于1024)。一个页表也有1024项,虚拟地址中间部分的10bit,刚好索引1024项。虚拟地址最低的12bit(2的12次方等于4096),作为页内偏移,刚好可以索引4KB,也就是一个物理页中的每个字节。
一个虚拟地址转换成物理地址的计算过程就是,处理器通过CR3找到当前页目录所在物理页,取虚拟地址的高10bit,然后把这10bit右移2bit(因为每个页目录项4个字节长,右移2bit相当于乘4)得到在该页中的地址,取出该地址处PDE(4个字节),就找到了该虚拟地址对应页表所在物理页,取虚拟地址第12位到第21位这10位,然后把这10bit右移2bit(因为每个页表项4个字节长,右移2bit相当于乘4)得到在该页中的地址,取出该地址处的PTE(4个字节),就找到了该虚拟地址对应物理页的地址,最后加上12bit的页内偏移得到了物理地址。
32bit的一个指针,可以寻址范围0x00000000-0xFFFFFFFF,4GB大小。也就是说一个32bit的指针可以寻址整个4GB地址空间的每一个字节。一个页表项负责4K的地址空间和物理内存的映射,一个页表1024项,也就是负责1024*4k=4M的地址空间的映射。一个页目录项,对应一个页表。一个页目录有1024项,也就对应着1024个页表,每个页表负责4M地址空间的映射。1024个页表负责1024*4M=4G的地址空间映射。一个进程有一个页目录。所以以页为单位,页目录和页表可以保证4G的地址空间中的每页和物理内存的映射。
每个进程都有自己的4G地址空间,从 0x00000000-0xFFFFFFFF 。通过每个进程自己的一套页目录和页表来实现。由于每个进程有自己的页目录和页表,所以每个进程的地址空间映射的物理内存是不一样的。两个进程的同一个虚拟地址处(如果都有物理内存映射)的值一般是不同的,因为他们往往对应不同的物理页。
4G地址空间中低2G,0x00000000-0x7FFFFFFF 是用户地址空间,4G地址空间中高2G,
0x80000000-0xFFFFFFFF 是系统地址空间。访问系统地址空间需要程序有ring0的权限。
⑷ 内存管理
在一段时间内,程序的执行仅限于某个部分,相应地,它所访问的存储空间也局限于某个区域。
局部性原理的 分类 :
将编译后的目标模块装配成一个可执行程序。
可执行程序以 二进制可执行文件 的形式存储在磁盘上。
链接程序的 任务 :
程序的链接,可划分为:
重定位 :将逻辑地址(相对地址)转换为物理地址(绝对地址)的过程。
物理地址 = 逻辑地址 + 程序在内存中的起始地址
程序的装入,可划分为:
任何时刻主存储器 最多只有一个作业 。
每个分区 大小固定不变 :分区大小相等、分区大小不等。
每个分区可以且 仅可以装入一个作业 。
使用 下限寄存器 和 上限寄存器 来保存当前作业的起始位置和结束位置。
使用 固定分区说明表 区分各分区的状态。
分区 大小不是预先固定的 ,而是按作业(进程)的实际需求来划分的。
分区 个数也不是预先固定的 ,而是由装入的作业数决定的。
使用 空闲分区表 说明空闲分区的位置。
使用 空闲分区链 说明空闲分区的位置。
首次适应算法的 过程 :
外部碎片:空闲内存 没有在 分配的 进程 中。
内部碎片:空闲内存 在 分配的 进程 中。
从 上次找到的 空闲分区的 下一个 空闲分区开始查找。
优点:空闲区分布均匀、查找开销较小。
缺点:缺乏大空闲区。
最佳适应算法的 过程 :
优点:提高内存利用率。
注意点:每次在进行空闲区的修改前,需要先进行 分区大小递增 的排序。
页 :将一个 进程 的 逻辑地址空间 分成若干个 大小相等 的 片 。
页框 :将 物理内存空间 分成与页大小相同的若干个 存储块 。
分页存储 :将进程的若干 页 分别装入多个 可以不相邻 的 页框 中。
页内碎片 :进程 最后一页 一般装不满一个页框,形成 页内碎片 。
页表 :记录描述页的各种数据,实现从 页号 到 页框号 的映射。
注意: 页内偏移量 的单位是 字节 。
分页地址变换指是: 逻辑地址 通过 地址变换机构 变换为 物理地址 。
分页地址变换的 过程 :
操作系统在修改或装入页表寄存器的值时,使用的是 特权级 指令。
页大小:512B ~ 4KB,目前的计算机系统中,大多选择 4KB 大小的页。
页大小的 选择因素 :
快表也称为“转换后援缓冲”,是为了提高CPU访问速度而采用的专用缓存,用来存放 最近被访问过的页表项 。
英文缩写:TLB。
组成: 键和值 。
在TLB中找到某一个页号对应的页表项的百分比称为 TLB命中率 。
当 能 在TLB中找到所需要的页表项时:
有效访问时间 = 一次访问TLB 的时间 + 一次访问内存 的时间(访问内存读写数据或指令)
当 不能 在TLB中找到所需要的页表项时:
有效访问时间 = 一次访问TLB 的时间 + 两次访问内存 的时间(一次访问内存页表,一次访问内存读写数据或指令)
将页表再分页,形成两级或多级页表,将页表离散地存放在物理内存中。
在进程切换时,要运行的进程的页目录表歧视地址被写入 页表寄存器 。
在二级分页系统中,为页表再建立一个页目录表的目的是为了能在地址映射时得到页表在物理内存中的地址,在页目录表的表项中存放了每一个 页表 在物理内存中所在的 页框号 。
虚拟存储器 :是指具有 请求调入功能 和 置换功能 ,能 从逻辑上对内存容量进行扩充 的一种存储系统。
请求调入 :就是说,先将进程一部分装入内存,其余的部分什么时候需要,什么时候请求系统装入。
置换 :如果请求调入时,没有足够的内存,则由操作系统选择一部分内存中的进程内容移到外存,以腾出空间把当前需要装入的内存调入。
为了实现请求分页,需要:
保证进程正常运行的所需要的最小页框数。
最小页框数与进程的大小没有关系,它与计算机的 硬件结构 有关,取决于 指令的格式、功能和寻址方式 。
内存不够时,从进程本身选择淘汰页,还是从系统中所有进程中选择?:
采用什么样的算法为不同进程分配页框?:
常用的两种 置换策略 : 局部置换 和 全局置换 。
从分配给进程的页框数量上看,常使用的两种 分配策略 : 固定分配 和 可变分配 。
用新调入的页替换 最长时间没有访问 的页面。
找到 未来最晚被访问 的那个页换出。
,P为缺页率。
有效访问时间与缺页率成 正比 ,缺页率越高,有效访问时间越长,访问效率越低。
工作集 :某段时间间隔里,进程实际要访问的页的集合。
引入工作集的 目的 :降低缺页率,提高访问内存效率。
抖动 :运行进程的大部分时间都用于页的换入换出,几乎不能完成任何有效果工作的状态。
抖动的 产生原因 :
抖动的 预防方法 :
在分段存储管理的系统中,程序使用 二维 的逻辑地址,一个数用来表示 段 ,另一个数用来表示 段内偏移量 。
引入分段的 目的 :
引入分段的 优点 :
进程的地址空间被划分成 若干个段 。
每个段定义了一组逻辑信息,每个段的大小由相应的逻辑信息组的长度确定, 段的大小不一样 ,每个段的逻辑地址从0开始,采用一段 连续的地址空间 。
系统为每个段分配一个 连续的物理内存区域 ,各个 不同的段可以离散 地放入物理内存不同的区域。
系统为 每个进程建立一张段表 ,段表的每一个表项记录的信息包括: 段号、段长和该段的基址 ,段表存放在内存中。
分段的 逻辑地址结构 :
段表是由操作系统维护的用于支持分段存储管理 地址映射 的数据结构。
每个进程有一个段表,段表由段表项构成。每个段表项包括: 段号、段长(段的大小)和该段的基址(段的起始地址) 。
若已知逻辑单元的地址为 S:D (段号:段内偏移量),求相应物理地址的步骤如下:
相同点 :分页和分段都属于 离散 分配方式,都要通过数据结构与硬件的配合来实现 逻辑地址到物理地址 的映射。
不同点 :
将用户进程的逻辑空间 先划分为若干个段 , 每个段再划分成若干个页 。
进程以页为单位在物理内存中 离散 存放,每个段中被离散存放的页具有 逻辑相关性 。
为了实现地址映射,操作系统为 每个进程建立一个段表 ,再为 每个段建立一个页表 。
进程段表的段表项组成:
满足以下条件的两个块称为 伙伴 :
⑸ 分页,虚拟地址是怎么转换成物理地址的
虚拟地址(即图中的逻辑地址)的高位表示页号,由计算机硬件将页号取出,且和页表寄存器中的页表始址一起送加法器,就可以得到该页对应的页表项的地址,根据此地址到内存读出对应的块号,最后将块号和页内地址拼接得到对应的物理地址。
⑹ 在分页系统中页面大小由谁决定页表的作用是什么如何将逻辑地址转换成物理地址
答:
在分页系统中页面大小由硬件决定。页表的作用是实现从页号到物理块号的地址映射。逻辑地址转换成物理地址的过程是:用页号p去检索页表,从页表中得到该页的物理块号,把它装人物理地址寄存器中。同时,将页内地址d直接送人物理地址寄存器的块内地址字段中。这样,物理地址寄存器中的内容就是由二者拼接成的实际访问内存的地址,从而完成了从逻辑地址到物理地址的转换。
⑺ 地址变换机构是硬件吗
地址变换机构是硬件。地址变换机构,可以理解为将逻辑地址转变为物理地址的一组硬件机构,这些硬件需要做些什么事情,才能将逻辑地址转换为物理地址。
基本地址变换机构,可以借助进程的页表将逻辑地址转换为物理地址。通常情况下,会在系统中设置一个页表寄存器(PTR),存放页表在内存的起始地址F和页表长度M。
请求分页系统中的地址变换机构是在分页系统地址变换机构的基础上,为实现虚拟存储器,增加某些功能形成的。在进行地址变换时,首先检索快表,试图从中找出所要访问的页。若找到,便修改页表项中的访问位。
对于写指令,还需要把修改位置成1,表示该页在调入内存之后被修改。然后利用页表项中给出的物理块号和页内地址形成物理地址。地址变换过程到此结束。
如果快表中没有找到该页的页号,则应到内存中查找页表,再从页表项中的状态位P来了解该页是否已调入内存。若该页已调入内存,把该页的页表项写入快表。