为您找到与线性地址和虚拟地址相关的共36个结果:
cad中线性标注怎么不显示呢?其实是可以解决的,下面读文网小编告诉大家cad中线性标注怎么不显示,一起来学习吧。
1、在任务栏打开线性标注命令,也可用DLI快捷命令打开
2、选择你要标注的距离的两个端点,请大家注意,线性标注只能标注水平方向及竖直方向,如图只能标注三角形的高,如要标注斜边要用水平标注
3、如果不想从端点直接引线的话,可以先将光标放在端点上,别点击,然后移动就会出现绿色辅助线,选择合适的位置作为标注端点
看了“cad中线性标注怎么不显示”
浏览量:3
下载量:0
时间:
在确保访问的数据已在物理内存中后,还需要先将虚拟地址转换为物理地址,即"地址映射",那么虚拟地址映射到物理地址怎么做呢?今天读文网小编与大家分享下虚拟地址映射到物理地的具体操作步骤,有需要的朋友不妨了解下。
Win32通过一个两层的表结构来实现地址映射,因为每个进程都拥有私有的4G的虚拟内存空间,相应的,每个进程都有自己的层次表结构来实现其地址映射。
第一层称为页目录,实际就是一个内存页,Win32的内存页有4KB大小,这个内存页以4个字节分为1024项,每一项称为“页目录项”(PDE);
第二层称为页表,这一层共有1024个页表,页表结构与页目录相似,每个页表也都是一个内存页,这个内存页以4KB的大小被分为1024项,页表的每一项被称为页表项(PTE),易知共有1024×1024个页表项。每一个页表项对应一个物理内存中的某一个“内存页”,即共有1024×1024个物理内存页,每个物理内存页为4KB,这样就可以索引到4G大小的虚拟物理内存。
如下图所示(注下图中的页目录项的大小应该是4个字节,而不是4kB):
Win32提供了4GB大小的虚拟地址空间。因此每个虚拟地址都是一个32位的整数值,也就是我们平时所说的指针,即指针的大小为4B。它由三部分组成,如下图:
这三个部分的第一部分,即前10位为页目录下标,用来寻址页目录项,页目录项刚好1024个。找到页目录项后,找对页目录项对应的的页表。第二部分则是用来在页表内寻址,用来找到页表项,共有1024个页表项,通过页表项找到物理内存页。第三部分用来在物理内存页中找到对应的字节,一个页的大小是4KB,12位刚好可以满足寻址要求。
具体的例子:
假设一个线程正在访问一个指针(Win32的指针指的就是虚拟地址)指向的数据,此指针指为0x2A8E317F,下图表示了这一个过程:
0x2A8E317F的二进制写法为0010101010_0011100011_000101111111,为了方便我们把它分为三个部分。
首先按照0010101010寻址,找到页目录项。因为一个页目录项为4KB,那么先将0010101010左移两位,001010101000(0x2A8),用此下标找到页目录项,然后根据此页目录项定位到下一层的某个页表。
然后按照0011100011寻址,在上一步找到页表中寻找页表项。寻址方法与上述方法类似。找到页表项后,就可以找到对应的物理内存页。
最后按照000101111111寻址,寻找页内偏移。
上面的假设的是此数据已在物理内存中,其实判断访问的数据是否在内存中也是在地址映射过程中完成的。Win32系统总是假设数据已在物理内存中,并进行地址映射。页表项中有一位标志位,用来标识包含此数据的页是否在物理内存中,如果在的话,就直接做地址映射,否则,抛出缺页中断,此时页表项也可标识包含此数据的页是否在调页文件中(外存),如果不在则访问违例,程序将会退出,如果在,页表项会查出此数据页在哪个调页文件中,然后将此数据页调入物理内存,再继续进行地址映射。为了实现每个进程拥有私有4G的虚拟地址空间,也就是说每个进程都拥有自己的页目录和页表结构,对不同进程而言,即使是相同的指针(虚拟地址)被不同的进程映射到的物理地址也是不同的,这也意味着在进程之间传递指针是没有意义的。
浏览量:2
下载量:0
时间:
cad如何让线性引出标注呢?下面读文网小编把方法都教给大家,一起来学习吧。
引出标注:天正菜单中,符号标注——引出标注,可以先填对话框,再放置引出点,也可以直接放置引出点,再双击引出线编辑注释内容。
命令MLEADERSTYLE,新建自己的样式,并修改
设置也与尺寸标注很相似
完成后就可以创建多重引线了。
命令MLEADER,指定引线位置后就可以输入做法内容,因为类型是多行文字,所以写好一层之后可以回车写第二行,全部写完后,在CTRL+1窗口中调整设置。
索引标注,在CAD中也可以用多重引线表达,如下图,只是设置不太一样。
在这个索引标注中,“楼梯”“详建施”“3”“JX-1"都是用户块里的属性,因为多行文字与块不能同时出现,所以要把文字做进块里。
引出标注与做法标注一样,就是没有那么多行文字而已,不需赘述。
看了“cad如何让线性引出标注”
浏览量:6
下载量:0
时间:
虚拟地址是Windows程序时运行在386保护模式下,这样程序访问存储器所使用的逻辑地址称为虚拟地址,今天读文网小编与大家分享下虚拟地址与物理地址的概念,有需要的朋友不妨了解下。
CPU通过地址来访问内存中的单元,地址有虚拟地址和物理地址之分,如果CPU没有MMU(Memory Management Unit,内存管理单元),或者有MMU但没有启用,CPU核在取指令或访问内存时发出的地址将直接传到CPU芯片的外部地址引脚上,直接被内存芯片(以下称为物理内存,以便与虚拟内存区分)接收,这称为物理地址(Physical Address,以下简称PA),如下图所示。
物理地址示意图
如果CPU启用了MMU,CPU核发出的地址将被MMU截获,从CPU到MMU的地址称为虚拟地址(Virtual Address,以下简称VA),而MMU将这个地址翻译成另一个地址发到CPU芯片的外部地址引脚上,也就是将虚拟地址映射成物理地址,如下图所示[1]。
虚拟地址示意图
MMU将虚拟地址映射到物理地址是以页(Page)为单位的,对于32位CPU通常一页为4K。例如,虚拟地址0xb700 1000~0xb700 1fff是一个页,可能被MMU映射到物理地址0x2000~0x2fff,物理内存中的一个物理页面也称为一个页框(Page Frame)。
内核也不能直接访问物理地址.但因为内核的虚拟地址和物理地址之间只是一个差值0xc0000000的区别,所以从物理地址求虚拟地址或从虚拟地址求物理地址很容易,+-这个差就行了
物理地址(physical address)
用于内存芯片级的单元寻址,与处理器和CPU连接的地址总线相对应。
——这个概念应该是这几个概念中最好理解的一个,但是值得一提的是,虽然可以直接把物理地址理解成插在机器上那根内存本身,把内存看成一个从0字节一直到最大空量逐字节的编号的大数组,然后把这个数组叫做物理地址,但是事实上,这只是一个硬件提供给软件的抽像,内存的寻址方式并不是这样。所以,说它是“与地址总线相对应”,是更贴切一些,不过抛开对物理内存寻址方式的考虑,直接把物理地址与物理的内存一一对应,也是可以接受的。也许错误的理解更利于形而上的抽像。
虚拟内存(virtual memory)
这是对整个内存(不要与机器上插那条对上号)的抽像描述。它是相对于物理内存来讲的,可以直接理解成“不直实的”,“假的”内存,例如,一个0x08000000内存地址,它并不对就物理地址上那个大数组中0x08000000 - 1那个地址元素;
之所以是这样,是因为现代操作系统都提供了一种内存管理的抽像,即虚拟内存(virtual memory)。进程使用虚拟内存中的地址,由操作系统协助相关硬件,把它“转换”成真正的物理地址。这个“转换”,是所有问题讨论的关键。
有了这样的抽像,一个程序,就可以使用比真实物理地址大得多的地址空间。(拆东墙,补西墙,银行也是这样子做的),甚至多个进程可以使用相同的地址。不奇怪,因为转换后的物理地址并非相同的。
——可以把连接后的程序反编译看一下,发现连接器已经为程序分配了一个地址,例如,要调用某个函数A,代码不是call A,而是call 0x0811111111 ,也就是说,函数A的地址已经被定下来了。没有这样的“转换”,没有虚拟地址的概念,这样做是根本行不通的。
打住了,这个问题再说下去,就收不住了。
逻辑地址(logical address)
Intel为了兼容,将远古时代的段式内存管理方式保留了下来。逻辑地址指的是机器语言指令中,用来指定一个操作数或者是一条指令的地址。以上例,我们说的连接器为A分配的0x08111111这个地址就是逻辑地址。
——不过不好意思,这样说,好像又违背了Intel中段式管理中,对逻辑地址要求,“一个逻辑地址,是由一个段标识符加上一个指定段内相对地址的偏移量,表示为 [段标识符:段内偏移量],也就是说,上例中那个0x08111111,应该表示为[A的代码段标识符: 0x08111111],这样,才完整一些”
线性地址(linear address)或也叫虚拟地址(virtual address)
跟逻辑地址类似,它也是一个不真实的地址,如果逻辑地址是对应的硬件平台段式管理转换前地址的话,那么线性地址则对应了硬件页式内存的转换前地址。
-------------------------------------------------------------
CPU将一个虚拟内存空间中的地址转换为物理地址,需要进行两步:首先将给定一个逻辑地址(其实是段内偏移量,这个一定要理解!!!),CPU要利用其段式内存管理单元,先将为个逻辑地址转换成一个线程地址,再利用其页式内存管理单元,转换为最终物理地址。
这样做两次转换,的确是非常麻烦而且没有必要的,因为直接可以把线性地址抽像给进程。之所以这样冗余,Intel完全是为了兼容而已。
物理地址就是,机器内主存的地址,包括RAM和ROM
逻辑地址就是,程序运行在内存中,使用的地址。
虚拟地址就是,cpu支持的内存空间远远大于机器主存的大小,这些多出来的空间对于程序来说是可以用的,这个时候的所有地址都称为虚拟地址
物理地址:最小系统下的存储器的实际地址,一般只是由CPU内存控制器(地址线)可以管理的容量为最大地址,而实际上这个容量(由地址产生的)远大于实际存在的容量;实际的存储器容量所需要的地址(内存)控制器管理的容量;它的大小一般由芯片决定
逻辑地址:相对程序员而言使用的地址,或说程序无需知道具体的实际地址管理数,而只要在系统(操作)允许范围内使用就行了(这时使用的是一种算法控制下的地址,实际上它只是借用地址概念产生的程序运行模式),它所要说明的是方便,也就是一个线性的(最好)的程序(指令)排列方式。它的大小一般由操作系统决定
虚拟地址:将具有存储功能的所有存储器(不仅仅是最小系统概念下的),进行“统一”编址,而不考虑存储器之间的差异(快慢等),这时的地址是一个比逻辑地址理会数学化的编号(地址),它的大小等往往由应用程序决定
看过“虚拟地址与物理地址的概念”
浏览量:2
下载量:0
时间:
虚拟地址是Windows程序时运行在386保护模式下,这样程序访问存储器所使用的逻辑地址称为虚拟地址,大家知道虚拟地址怎样映射到物理地址吗?接下来大家跟着读文网小编一起来了解一下虚拟地址映射到物理地址的解决方法吧。
一般情况下,Linux系统中,进程的4GB内存空间被划分成为两个部分------用户空间和内核空间,大小分别为0~3G,3~4G。
用户进程通常情况下,只能访问用户空间的虚拟地址,不能访问到内核空间。
每个进程的用户空间都是完全独立、互不相干的,用户进程各自有不同的页表。而内核空间是由内核负责映射,它并不会跟着进程改变,是固定的。内核空间地址有自己对应的页表,内核的虚拟空间独立于其他程序。
3~4G之间的内核空间中,从低地址到高地址依次为:物理内存映射区—隔离带—vmalloc虚拟内存分配区—隔离带—高端内存映射区—专用页面映射区—保留区。
【内核空间内存动态申请】
主要包括三个函数:kmalloc(), __get_free_pages, vmalloc。
kmalloc(), __get_free_pages申请的内存位于物理地址映射区,而且在物理上也是连续的,它们与真实的物理地址只有一个固定的偏移,因此存在较简单的转换关系。而vmalloc申请的内存位于vmalloc虚拟内存分配区(这些区都是以线性地址为度量),它在虚拟内存空间给出一块连续的内存区,实质上,这片连续的虚拟内存在物理内存中并不一定连续,而vmalloc申请的虚拟内存和物理内存之间也没有简单的换算关系。
因为vmalloc申请的在虚拟内存空间连续的内存区在物理内存中并不一定连续,可以想象为了完成vmalloc,新的页表需要被建立,因此,知识调用vmalloc来分配少量内存是不妥的。
一般来讲,kmalloc用来分配小于128K的内存,而更大的内存块需要用vmalloc来实现。
【虚拟地址与物理地址关系】
对于内核物理内存映射区的虚拟内存(用kmalloc(), __get_free_pages申请的),使用virt_to_phys()和phys_to_virt()来实现物理地址和内核虚拟地址之间的互相转换。它实际上,仅仅做了3G的地址移位。
上述方法适用于常规内存(内核物理内存映射区),高端内存的虚拟地址与物理地址之间不存在如此简单的换算关系。因为它涉及到了分离物理页的页表控制机制。
【ioremap】
在ARM中,设备的寄存器或者存储块的这部分空间属于内存空间的一部分,我们称之为IO内存。
在内核中访问IO内存之前,我们只有IO内存的物理地址,这样是无法通过软件直接访问的,需要首先用ioremap()函数将设备所处的物理地址映射到内核虚拟地址空间(3GB~4GB)。然后,才能根据映射所得到的内核虚拟地址范围,通过访问指令访问这些IO内存资源。
在将I/O内存资源的物理地址映射成核心虚地址后,理论上讲我们就可以象读写RAM那样直接读写I/O内存资源了。为了保证驱动程序的跨平台的可移植性,我们应该使用Linux中特定的函数来访问I/O内存资源,而不应该通过指向核心虚地址的指针来访问。
【mmap】
用mmap映射一个设备,意味着使用户空间的一段地址关联到设备内存上,这使得只要程序在分配的地址范围内进行读取或者写入,实际上就是对设备的访问。这种数据传输是直接的,不需要用到内核空间作为数据转移的中间站。
remap_page_range函数的功能是构造用于映射一段物理地址的新页表,实现了内核空间与用户空间的映射。
在内核驱动程序的初始化阶段,通过ioremap()将物理地址映射到内核虚拟空间;在驱动程序的mmap系统调用中,使用remap_page_range()将该块ROM映射到用户虚拟空间。这样内核空间和用户空间都能访问这段被映射后的虚拟地址。
Ioremap:
进程空间ç内核空间çIO内存
其中,后面两个指的是同一段物理内存区域,只是一个为虚拟地址,一个为物理地址。进程空间和内核空间对应着不同的物理地址,它们之间的数据传递,是实际的数据的拷贝。
Mmap:
进程空间çIO内存
其中,进程空间mmap得到的那段虚拟地址跟IO内存对应着同一段物理地址。这个过程没有额外的数据中转,读写都直接针对硬件的物理地址进行。
一般来讲,小数据量的传输用ioremap()就足够了,
【IO内存的一般访问方法】
1. 首先是调用request_mem_region()申请资源,即告诉内核,本驱动正在使用这段物理内存,其他驱动不得访问它们。在设备驱动模块加载或open()函数中进行。
2. 接着讲寄存器地址通过ioremap()映射到内核空间虚拟地址,之后就可以通过Linux设备访问编程接口访问这些设备的寄存器了。在设备驱动初始化、write(),read(),ioctl()函数中进行。
3. 访问完成之后,应对ioremap()申请的虚拟地址进行释放,并释放release_mem_region()申请的IO内存资源。在设备驱动模块卸载或release()函数中进行。
看过“虚拟地址怎样映射到物理地址”
浏览量:3
下载量:0
时间:
虚拟地址)被不同的进程映射到的物理地址是不同的,那么大家知道虚拟地址如何映射到物理地址吗?下面跟着读文网小编来一起了解下虚拟地址映射到物理地址吧。
虚拟地址映射到物理地址方法
这里只谈分页管理的机制,也是目前最重要的内存管理机制。
最初的设计想法:
结构图如下:
页的尺寸是4KB,虚拟地址的前20位用于指定一个物理页,后12位用于访问页内偏移。
页表项的结构:
各个位的含义:
P--位0是存在(Present)标志,用于指明表项对地址转换是否有效。P=1表示有效;P=0表示无效。在页转换过程中,如果说涉及的页目录或页表的表项无效,则会导致一个异常。如果P=0,那么除表示表项无效外,其余位可供程序自由使用,如图4-18b所示。例如,操作系统可以使用这些位来保存已存储在磁盘上的页面的序号。
R/W--位1是读/写(Read/Write)标志。如果等于1,表示页面可以被读、写或执行。如果为0,表示页面只读或可执行。当处理器运行在超级用户特权级(级别0、1或2)时,则R/W位不起作用。页目录项中的R/W位对其所映射的所有页面起作用。
U/S--位2是用户/超级用户(User/Supervisor)标志。如果为1,那么运行在任何特权级上的程序都可以访问该页面。如果为0,那么页面只能被运行在超级用户特权级(0、1或2)上的程序访问。页目录项中的U/S位对其所映射的所有页面起作用。
A--位5是已访问(Accessed)标志。当处理器访问页表项映射的页面时,页表表项的这个标志就会被置为1。当处理器访问页目录表项映射的任何页面时,页目录表项的这个标志就会被置为1。处理器只负责设置该标志,操作系统可通过定期地复位该标志来统计页面的使用情况。
D--位6是页面已被修改(Dirty)标志。当处理器对一个页面执行写操作时,就会设置对应页表表项的D标志。处理器并不会修改页目录项中的D标志。
AVL--该字段保留专供程序使用。处理器不会修改这几位,以后的升级处理器也不会。
由于页表占用内存空间太大(1M个元素*4B大小=4MB,也可以这么看:每个进程的虚拟地址空间=4G,页面大小=4K,所以共有1M个页,需要1M个页表项,又因为每个页表项=4B,所以页表大小=4M),为了减少内存占用量,因此设计了层次化的分页结构:页目录表+页表。
层次化的设计想法:
因为4GB的虚拟内存共有1M=220=1048576个4K大小的页面。
我们将这些页面分成210=1024份,即从页表1到页表1024,由页目录表管理;
每一份(每一页表)有210=1024个页,由每一个页表管理,页在页表中是随机的,哪个页位于哪个页表中是没有规律的;
结构图如下:
每个任务都有这样的层次化的分页结构,即每个任务都有自己的页目录表和页表。
从硬件角度来分析:
在处理器中有个控制寄存器CR3,存放着当前任务页目录的物理地址,故又叫做页目录基址寄存器(Page Directory Base Register,PDBR),每个任务都存放了自己的页目录物理地址,当任务切换时,处理器切换到新任务开始执行,更新CR3寄存器的内容,以指向新任务的页目录位置;
相应的,页目录又指向了一个个的页表,每个页表又根据任务的页表项指向了相应的页。其中注意的是,页目录和页表也是普通的页,混迹于全部的物理页中,它们和普通页的不同之处仅仅在于功能不一样,当任务撤销之后, 它们和任务所占用的普通页一样会被回收, 并分配给其他任务(如下图所示)。
下面内容转自《分页机制》,写的很清楚。
地址变换的具体过程
对于Intel处理器来说, 有关分页, 最简单和最基本的机制就是这些; CR3寄存器给出了页目录的物理地址; 页目录给出了所有页表的物理地址, 而每个页表给出了它所包含的页的物理地址. 好了, 该清楚的都清楚了, 唯一还不明白的, 应该是如何用这种层次性的分页结构把线性地址转换成物理地址? 这里举个例子, 某任务加载后, 在4GB虚拟地址空间创建了一个段, 起始地址为0x00800000, 段界限为0x5000, 字节粒度. 当前任务执行时, 段寄存器DS指向该段. 又假设执行了下面一条指令
mov edx, [0x1050]
此时, 段部件会输出线性地址0x00801050. 在没有开启分页机制时, 这就是要访问的物理地址. 但现在开启了分页机制, 所以这是一个下虚拟地址, 要经过页部件转换, 才能得到物理地址.
如下图所示, 处理器的页部件专门负责线性地址到物理地址的转换工作. 它首先将段部件送来的32位线性地址分为3段, 分别是高10位, 中间10位, 低12位. 高10位是页目录的索引, 中间10位是页表的索引, 低12位则作为页内偏移量来用.
当前任务页目录的物理地址在处理器的CR3寄存器中, 假设它的内容为0x00005000. 段管理部件输出的线性地址是0x00801050, 其二进制的形式如图中给出. 高10位是十六进制的0x002, 它是页目录表内的索引,处理器将它乘以4(因为每个目录项4字节), 作为偏移量访问页目录. 最终处理器从物理地址00005008处取得页表的物理地址0x08001000.
线性地址的中间10位为0x001, 处理器用它作为页表索引取得页的物理地址. 将该值乘以4, 作为偏移量访问页表. 最终, 处理器又从物理地址08001004处取得页的物理地址, 这就是我们一直努力寻找的那个页.
页的物理地址是0x0000c000, 而线性地址的低12位是数据所在的页内偏移量. 故处理器将它们相加, 得到物理地址0x0000C050, 这就是线性地址0x00801050所对应的物理地址, 要访问的数据就在这里.
注意, 这种变换不是无缘无故的, 而是事先安排好的. 当任务加载时, 操作系统先创建虚拟的段, 并根据段地址的高20位决定它要用到哪些页目录项和页表项. 然后, 寻找空闲的页, 将原本应该写入段中的数据写到一个或者多个页中, 并将页的物理地址填写到相对应的页表项中. 只有这样做了, 当程序运行的时候, 才能以相反的顺序进行地址变换, 并找到正确的数据.
页目录项, 页表项, CR3和打开分页
页目录项和页表项
页目录和页表中分别存放为页目录项和页表项, 它们的格式如下:
可以看出, 在页目录和页表中, 只保存了页表或者页物理地址的高20位. 原因很简单, 页表或者页的物理地址, 都要求必须是4KB对齐的, 以便于放在一个页内, 故其低12位全是0. 在这种情况下, 可以只关心其高20位, 低12位安排其他用途.
P 是存在位, 为1时, 表示页表或者页位于内存中. 否则, 表示页表或者页不在内存中, 必须先予以创建, 或者从磁盘调入内存后方可使用.
RW 是读/写位. 为0时表示这样的页只能读取, 为1时可读可写
US 是用户/管理位. 为1时, 允许所有特权级别的程序访问; 为0时, 只允许特权级别为0, 1和2的程序访问.
PWT(Page-level Write-Through) 是页级通写位, 和高速缓存有关. "通写"是处理器高速缓存的一种工作方式, 这一位用来间接决定是否采用此种方式来改善页面的访问效率.
PCD(Page-level Cache Disable)是页级高速缓存禁止位, 用来间接决定该表项所指向的那个页是否使用高速缓存策略.
A 是访问位. 该位由处理器固件设置, 用来指示此表项所指向的页是否被访问过.
D(Dirty) 是脏位. 该位由处理器固件设置, 用来指示此表项所指向的页是否写过数据
看过“虚拟地址如何映射到物理地址”
浏览量:3
下载量:0
时间:
虚拟地址转换为物理地址的第一步是将从处理器得到的虚拟地址和TLB中的虚拟地址进行比较。,今天读文网小编与大家分享下虚拟地址与物理地址的转换,有需要的朋友不妨了解下。
CPU通过地址来访问内存中的单元,地址有虚拟地址和物理地址之分,如果CPU没有MMU(Memory Management Unit,内存管理单元),或者有MMU但没有启用,CPU核在取指令或访问内存时发出的地址将直接传到CPU芯片的外部地址引脚上,直接被内存芯片(以下称为物理内存,以便与虚拟内存区分)接收,这称为物理地址(Physical Address,以下简称PA),如下图所示。
物理地址示意图
如果CPU启用了MMU,CPU核发出的地址将被MMU截获,从CPU到MMU的地址称为虚拟地址(Virtual Address,以下简称VA),而MMU将这个地址翻译成另一个地址发到CPU芯片的外部地址引脚上,也就是将虚拟地址映射成物理地址,如下图所示[1]。
虚拟地址示意图
MMU将虚拟地址映射到物理地址是以页(Page)为单位的,对于32位CPU通常一页为4K。例如,虚拟地址0xb700 1000~0xb700 1fff是一个页,可能被MMU映射到物理地址0x2000~0x2fff,物理内存中的一个物理页面也称为一个页框(Page Frame)。
内核也不能直接访问物理地址.但因为内核的虚拟地址和物理地址之间只是一个差值0xc0000000的区别,所以从物理地址求虚拟地址或从虚拟地址求物理地址很容易,+-这个差就行了
物理地址(physical address)
用于内存芯片级的单元寻址,与处理器和CPU连接的地址总线相对应。
——这个概念应该是这几个概念中最好理解的一个,但是值得一提的是,虽然可以直接把物理地址理解成插在机器上那根内存本身,把内存看成一个从0字节一直到最大空量逐字节的编号的大数组,然后把这个数组叫做物理地址,但是事实上,这只是一个硬件提供给软件的抽像,内存的寻址方式并不是这样。所以,说它是“与地址总线相对应”,是更贴切一些,不过抛开对物理内存寻址方式的考虑,直接把物理地址与物理的内存一一对应,也是可以接受的。也许错误的理解更利于形而上的抽像。
虚拟内存(virtual memory)
这是对整个内存(不要与机器上插那条对上号)的抽像描述。它是相对于物理内存来讲的,可以直接理解成“不直实的”,“假的”内存,例如,一个0x08000000内存地址,它并不对就物理地址上那个大数组中0x08000000 - 1那个地址元素;
之所以是这样,是因为现代操作系统都提供了一种内存管理的抽像,即虚拟内存(virtual memory)。进程使用虚拟内存中的地址,由操作系统协助相关硬件,把它“转换”成真正的物理地址。这个“转换”,是所有问题讨论的关键。
有了这样的抽像,一个程序,就可以使用比真实物理地址大得多的地址空间。(拆东墙,补西墙,银行也是这样子做的),甚至多个进程可以使用相同的地址。不奇怪,因为转换后的物理地址并非相同的。
——可以把连接后的程序反编译看一下,发现连接器已经为程序分配了一个地址,例如,要调用某个函数A,代码不是call A,而是call 0x0811111111 ,也就是说,函数A的地址已经被定下来了。没有这样的“转换”,没有虚拟地址的概念,这样做是根本行不通的。
打住了,这个问题再说下去,就收不住了。
逻辑地址(logical address)
Intel为了兼容,将远古时代的段式内存管理方式保留了下来。逻辑地址指的是机器语言指令中,用来指定一个操作数或者是一条指令的地址。以上例,我们说的连接器为A分配的0x08111111这个地址就是逻辑地址。
——不过不好意思,这样说,好像又违背了Intel中段式管理中,对逻辑地址要求,“一个逻辑地址,是由一个段标识符加上一个指定段内相对地址的偏移量,表示为 [段标识符:段内偏移量],也就是说,上例中那个0x08111111,应该表示为[A的代码段标识符: 0x08111111],这样,才完整一些”
线性地址(linear address)或也叫虚拟地址(virtual address)
跟逻辑地址类似,它也是一个不真实的地址,如果逻辑地址是对应的硬件平台段式管理转换前地址的话,那么线性地址则对应了硬件页式内存的转换前地址。
-------------------------------------------------------------
CPU将一个虚拟内存空间中的地址转换为物理地址,需要进行两步:首先将给定一个逻辑地址(其实是段内偏移量,这个一定要理解!!!),CPU要利用其段式内存管理单元,先将为个逻辑地址转换成一个线程地址,再利用其页式内存管理单元,转换为最终物理地址。
这样做两次转换,的确是非常麻烦而且没有必要的,因为直接可以把线性地址抽像给进程。之所以这样冗余,Intel完全是为了兼容而已。
物理地址就是,机器内主存的地址,包括RAM和ROM
逻辑地址就是,程序运行在内存中,使用的地址。
虚拟地址就是,cpu支持的内存空间远远大于机器主存的大小,这些多出来的空间对于程序来说是可以用的,这个时候的所有地址都称为虚拟地址
物理地址:最小系统下的存储器的实际地址,一般只是由CPU内存控制器(地址线)可以管理的容量为最大地址,而实际上这个容量(由地址产生的)远大于实际存在的容量;实际的存储器容量所需要的地址(内存)控制器管理的容量;它的大小一般由芯片决定
逻辑地址:相对程序员而言使用的地址,或说程序无需知道具体的实际地址管理数,而只要在系统(操作)允许范围内使用就行了(这时使用的是一种算法控制下的地址,实际上它只是借用地址概念产生的程序运行模式),它所要说明的是方便,也就是一个线性的(最好)的程序(指令)排列方式。它的大小一般由操作系统决定
虚拟地址:将具有存储功能的所有存储器(不仅仅是最小系统概念下的),进行“统一”编址,而不考虑存储器之间的差异(快慢等),这时的地址是一个比逻辑地址理会数学化的编号(地址),它的大小等往往由应用程序决定
看过“虚拟地址与物理地址的转换”
浏览量:2
下载量:0
时间:
每个进程都是独立的虚拟地址空间,两个独立进程的相同地址互不干扰,但是在物理上对每个进程可能也就分了一部分空间给了某个进程,所以中间就要用到映射,那么虚拟地址与物理地址怎么映射呢?今天读文网小编与大家分享下虚拟地址与物理地址映射的具体操作步骤,有需要的朋友不妨了解下。
虚拟地址与物理地址映射过程
这里只谈分页管理的机制,也是目前最重要的内存管理机制。
最初的设计想法:
结构图如下:
页的尺寸是4KB,虚拟地址的前20位用于指定一个物理页,后12位用于访问页内偏移。
页表项的结构:
各个位的含义:
P--位0是存在(Present)标志,用于指明表项对地址转换是否有效。P=1表示有效;P=0表示无效。在页转换过程中,如果说涉及的页目录或页表的表项无效,则会导致一个异常。如果P=0,那么除表示表项无效外,其余位可供程序自由使用,如图4-18b所示。例如,操作系统可以使用这些位来保存已存储在磁盘上的页面的序号。
R/W--位1是读/写(Read/Write)标志。如果等于1,表示页面可以被读、写或执行。如果为0,表示页面只读或可执行。当处理器运行在超级用户特权级(级别0、1或2)时,则R/W位不起作用。页目录项中的R/W位对其所映射的所有页面起作用。
U/S--位2是用户/超级用户(User/Supervisor)标志。如果为1,那么运行在任何特权级上的程序都可以访问该页面。如果为0,那么页面只能被运行在超级用户特权级(0、1或2)上的程序访问。页目录项中的U/S位对其所映射的所有页面起作用。
A--位5是已访问(Accessed)标志。当处理器访问页表项映射的页面时,页表表项的这个标志就会被置为1。当处理器访问页目录表项映射的任何页面时,页目录表项的这个标志就会被置为1。处理器只负责设置该标志,操作系统可通过定期地复位该标志来统计页面的使用情况。
D--位6是页面已被修改(Dirty)标志。当处理器对一个页面执行写操作时,就会设置对应页表表项的D标志。处理器并不会修改页目录项中的D标志。
AVL--该字段保留专供程序使用。处理器不会修改这几位,以后的升级处理器也不会。
由于页表占用内存空间太大(1M个元素*4B大小=4MB,也可以这么看:每个进程的虚拟地址空间=4G,页面大小=4K,所以共有1M个页,需要1M个页表项,又因为每个页表项=4B,所以页表大小=4M),为了减少内存占用量,因此设计了层次化的分页结构:页目录表+页表。
层次化的设计想法:
因为4GB的虚拟内存共有1M=220=1048576个4K大小的页面。
我们将这些页面分成210=1024份,即从页表1到页表1024,由页目录表管理;
每一份(每一页表)有210=1024个页,由每一个页表管理,页在页表中是随机的,哪个页位于哪个页表中是没有规律的;
结构图如下:
每个任务都有这样的层次化的分页结构,即每个任务都有自己的页目录表和页表。
从硬件角度来分析:
在处理器中有个控制寄存器CR3,存放着当前任务页目录的物理地址,故又叫做页目录基址寄存器(Page Directory Base Register,PDBR),每个任务都存放了自己的页目录物理地址,当任务切换时,处理器切换到新任务开始执行,更新CR3寄存器的内容,以指向新任务的页目录位置;
相应的,页目录又指向了一个个的页表,每个页表又根据任务的页表项指向了相应的页。其中注意的是,页目录和页表也是普通的页,混迹于全部的物理页中,它们和普通页的不同之处仅仅在于功能不一样,当任务撤销之后, 它们和任务所占用的普通页一样会被回收, 并分配给其他任务(如下图所示)。
下面内容转自《分页机制》,写的很清楚。
地址变换的具体过程
对于Intel处理器来说, 有关分页, 最简单和最基本的机制就是这些; CR3寄存器给出了页目录的物理地址; 页目录给出了所有页表的物理地址, 而每个页表给出了它所包含的页的物理地址. 好了, 该清楚的都清楚了, 唯一还不明白的, 应该是如何用这种层次性的分页结构把线性地址转换成物理地址? 这里举个例子, 某任务加载后, 在4GB虚拟地址空间创建了一个段, 起始地址为0x00800000, 段界限为0x5000, 字节粒度. 当前任务执行时, 段寄存器DS指向该段. 又假设执行了下面一条指令
mov edx, [0x1050]
此时, 段部件会输出线性地址0x00801050. 在没有开启分页机制时, 这就是要访问的物理地址. 但现在开启了分页机制, 所以这是一个下虚拟地址, 要经过页部件转换, 才能得到物理地址.
如下图所示, 处理器的页部件专门负责线性地址到物理地址的转换工作. 它首先将段部件送来的32位线性地址分为3段, 分别是高10位, 中间10位, 低12位. 高10位是页目录的索引, 中间10位是页表的索引, 低12位则作为页内偏移量来用.
当前任务页目录的物理地址在处理器的CR3寄存器中, 假设它的内容为0x00005000. 段管理部件输出的线性地址是0x00801050, 其二进制的形式如图中给出. 高10位是十六进制的0x002, 它是页目录表内的索引,处理器将它乘以4(因为每个目录项4字节), 作为偏移量访问页目录. 最终处理器从物理地址00005008处取得页表的物理地址0x08001000.
线性地址的中间10位为0x001, 处理器用它作为页表索引取得页的物理地址. 将该值乘以4, 作为偏移量访问页表. 最终, 处理器又从物理地址08001004处取得页的物理地址, 这就是我们一直努力寻找的那个页.
页的物理地址是0x0000c000, 而线性地址的低12位是数据所在的页内偏移量. 故处理器将它们相加, 得到物理地址0x0000C050, 这就是线性地址0x00801050所对应的物理地址, 要访问的数据就在这里.
注意, 这种变换不是无缘无故的, 而是事先安排好的. 当任务加载时, 操作系统先创建虚拟的段, 并根据段地址的高20位决定它要用到哪些页目录项和页表项. 然后, 寻找空闲的页, 将原本应该写入段中的数据写到一个或者多个页中, 并将页的物理地址填写到相对应的页表项中. 只有这样做了, 当程序运行的时候, 才能以相反的顺序进行地址变换, 并找到正确的数据.
页目录项, 页表项, CR3和打开分页
页目录项和页表项
页目录和页表中分别存放为页目录项和页表项, 它们的格式如下:
可以看出, 在页目录和页表中, 只保存了页表或者页物理地址的高20位. 原因很简单, 页表或者页的物理地址, 都要求必须是4KB对齐的, 以便于放在一个页内, 故其低12位全是0. 在这种情况下, 可以只关心其高20位, 低12位安排其他用途.
P 是存在位, 为1时, 表示页表或者页位于内存中. 否则, 表示页表或者页不在内存中, 必须先予以创建, 或者从磁盘调入内存后方可使用.
RW 是读/写位. 为0时表示这样的页只能读取, 为1时可读可写
US 是用户/管理位. 为1时, 允许所有特权级别的程序访问; 为0时, 只允许特权级别为0, 1和2的程序访问.
PWT(Page-level Write-Through) 是页级通写位, 和高速缓存有关. "通写"是处理器高速缓存的一种工作方式, 这一位用来间接决定是否采用此种方式来改善页面的访问效率.
PCD(Page-level Cache Disable)是页级高速缓存禁止位, 用来间接决定该表项所指向的那个页是否使用高速缓存策略.
A 是访问位. 该位由处理器固件设置, 用来指示此表项所指向的页是否被访问过.
D(Dirty) 是脏位. 该位由处理器固件设置, 用来指示此表项所指向的页是否写过数据
PAT(Page Attribute Table) 页属性表支持位. 此位涉及更复杂的分页系统, 和页高速缓存有关, 可以不予理会, 在普通的4KB分页机制中, 处理器建议将其置0.
G 是全局位. 用来指示该表项所指向的页是否为全局性质的. 如果页是全局的, 那么, 它将在高速缓存中一直保存(也就意味着地址转换速度会很快). 因为页高速缓存容量有限, 只能存放频繁使用的那些表项. 而且, 当因任务切换等原因改变CR3寄存器的内容时, 整个页高速缓存的内容都会被刷新.
AVL位卑处理器忽略, 软件可以使用.
CR3(PDBR)和开分页机制
控制寄存器CR3, 也就是页目录表基地址寄存器PDBR, 该寄存器如上图所示.
由于页目录表必须位于一个自然页内(4KB对齐), 故其物理地址的低12位是全0. 低12位除了PCD和PWT外, 都没有使用. 这两位用于控制页目录的高速缓存特性, 参见上面解释.
控制寄存器CR0的最高位PG位, 用于开启分页或者关闭页功能. 当该位清0时, 页功能关闭, 从段部件来的线性地址就是物理地址. 当它置位时, 页功能开启. 只能在保护模式下才能开启分页功能, 当PE位清0时(实模式), 设置PG位将导致处理器产生一个异常中断.
不存在的页表:
使用二级表结构,并没有解决需要使用4MB内存来存放页表的问题。实际上,我们把问题搞得有些复杂了。因为我们需要另增一个页面来存放目录表。然而,二级表结构允许页表被分散在内存各个页面中,而不需要保存在连续的4MB内存块中。另外,并不需要为不存在的或线性地址空间未使用部分分配二级页表。虽然目录表页面必须总是存在于物理内存中,但是二级页表可以在需要时再分配。这使得页表结构的大小对应于实际使用的线性地址空间大小。
页目录表中每个表项也有一个存在(present)属性,类似于页表中的表项。页目录表项中的存在属性指明对应的二级页表是否存在。如果目录表项指明对应的二级页表存在,那么通过访问二级表,表查找过程第2步将同如上描述继续下去。如果存在位表明对应的二级表不存在,那么处理器就会产生一个异常来通知操作系统。页目录表项中的存在属性使得操作系统可以根据实际使用的线性地址范围来分配二级页表页面。
目录表项中的存在位还可以用于在虚拟内存中存放二级页表。这意味着在任何时候只有部分二级页表需要存放在物理内存中,而其余的可保存在磁盘上。处于物理内存中页表对应的页目录项将被标注为存在,以表明可用它们进行分页转换。处于磁盘上的页表对应的页目录项将被标注为不存在。由于二级页表不存在而引发的异常会通知操作系统把缺少的页表从磁盘上加载进物理内存。把页表存储在虚拟内存中减少了保存分页转换表所需要的物理内存量。
总结:给定虚拟地址,怎么找到它对应的物理地址?分两步!
第一步从虚拟地址到线性地址,第二步从线性地址从物理地址。
第一步从段描述符表描述的段基址加上段偏移生成线性地址。
IA32中线性地址高10位为页目录索引,通过此找到页表,线性地址中间10位为页表项索引,通过前面找到的页表加上这个索引,找到页表项。页表项指示着页框号,页框号加上线性地址低12位(页内偏移)就生成了物理地址。
看过“虚拟地址与物理地址怎么映射”
浏览量:2
下载量:0
时间:
CAD中的线性标注是经常用到的,那么改变它们的大小的方法也不止一种。下面读文网小编把方法都教给大家,一起来学习吧。
如下图,标题栏中的比例是整张图形的标注比例,可以看到是1:10。为了能把孔表达清楚,开孔断面图形在原比例基础上放大了10倍,即断面图的比例是1:1
选中要修改的标注比例的图形
单击右键,点击快速选择,打开对话框,依次选择“图层”“尺寸线”,最后确认
回到图形,可以看到只有尺寸线被选中了
按住Ctrl+1,打开特性工具栏,找到标注线性比例,将值改为0.1
返回图形,可以看到该图形的标注尺寸已经改变,成为实际需要的尺寸
看了“cad线性标注如何改变大小”
浏览量:31
下载量:0
时间:
对于cAD中心线、虚线等这类线型,由于图形或大或小,经常改变线性比例非常常见,更改方式主要有两种:第一种直接更改但线条的属性,第二种更改当前所要画的线条的线性比例。下面读文网小编把方法都教给大家,一起来学习吧。
如图,同样是中心线,在不同图中线性比例就不同
虽然可以直接看出来,我们还是可以在这里直接看出线性比例是多少,用MO打开属性,如果要更改就可以直接在这里更改
在我们画别的图的时候,基本上是在旁边画,很少切换图层来画别的线型,只接用格式刷MA直接刷成所需要的线型,然后改下属性里的线性比例就可以了
另外一种是输入命令CELTSCALE,然后会提示输入需要的比例
然后画出来就是修改后的这种比例的线型了;不推荐这种方法,速度慢,不直接,麻烦,知道有这种方法就行
看了“cad怎么调线性”
浏览量:2
下载量:0
时间:
Auto CAD出工程图时,由于纸张的限制,通常会将要绘制的图形放大或缩小,有时一张图上不同位置的图形放大或缩小的比例还不一样,如果能够快速、正确的修改想要得到的标注比例,那会极大提高出图的工作效率和正确率。以下是修改线性标注尺寸的方法,希望对你有帮助!
如下图,标题栏中的比例是整张图形的标注比例,可以看到是1:10。为了能把孔表达清楚,开孔断面图形在原比例基础上放大了10倍,即断面图的比例是1:1
选中要修改的标注比例的图形
单击右键,点击快速选择,打开对话框,依次选择“图层”“尺寸线”,最后确认
回到图形,可以看到只有尺寸线被选中了
按住Ctrl+1,打开特性工具栏,找到标注线性比例,将值改为0.1
返回图形,可以看到该图形的标注尺寸已经改变,成为实际需要的尺寸
看了“cad中怎么将线性标注的尺寸修改”
浏览量:2
下载量:0
时间:
标注是CAD的基本元素,CAD标注字体大小直接影响图纸的查看和打印效果,这里以CAD2008为例详细介绍CAD修改标注字体大小的方法。
1.某些情况下,只想改变部分文字大小,点击这个文字(单行文字或者是多行文字),激活文字编辑,出现蓝色的点;然后点击鼠标右键,弹出快捷方式,点击“特性”。
2.弹出该文字的特性框,拉动下拉滑条,找到“文字高度”,点击后面的编辑框,输入想要的数字,这里以1000为例,然后在旁边点击一下,看看文字大小调整是不是满意。
3.如果文字大小不满意,继续更改数字大小,知道文字大小合适为止。
看了“如何改变cad线性标注文字大小”
浏览量:2
下载量:0
时间:
Excel中具体该如何做到线性回归呢?下面是读文网小编带来的关于excel2010做线性回归的教程,希望阅读过后对你有所启发!
线性回归步骤1:输入你要回归的数据
线性回归步骤2:点击插入,选择散点图
线性回归步骤3:选中散点图之后,会出现图表,点击上面的任何一点。然后右击,选择添加趋势线。
线性回归步骤4:弹出一个窗口,选择窗口箭头所示的两个选项,必须要选,这两个选项可以看出数据之间的相关性。
线性回归步骤5:点击图标中网格线,右键、选择删除
线性回归步骤6:一条回归直线算是完成了,如果图表不是很美观,可以通过拖拉,改变其大小。
浏览量:2
下载量:0
时间:
Excel中的线性回归具体该如何制作呢?下面是由读文网小编分享的excel2003线性回归的制作教程,以供大家阅读和学习。
线性回归步骤1:在excel上输入数据。
线性回归步骤2:选择工具--数据分析。
线性回归步骤3:选择回归,出现回归界面。
线性回归步骤4:选择X值和Y值得数据区域。
线性回归步骤5:确定后,在另一工作表中出现回归统计数据。
浏览量:2
下载量:0
时间:
Excel中的线性规划功能具体要该如何使用呢?下面是由读文网小编分享的excel2010使用线性规划功能的教程,以供大家阅读和学习。
线性规划使用步骤1:在Excel中加载规划求解模块。Excel2010的步骤是:文件->选项->加载项->转到->勾选上“规划求解加载项”。
线性规划使用步骤2:看题理解后进行数学建模,然后将模型和数据输入在Excel的单元格中。本例的题目为:某工厂在计划期内要安排生产Ⅰ、Ⅱ两种产品,已知生产单位产品所需的设备台时及A、B两种原材料的消耗,如表2-1所示。该工厂每生产一件产品Ⅰ可获利2元,每生产一件产品Ⅱ可获利3元,问应如何安排计划使该工厂获利最多?生产产品I需耗时1单位,生产产品II需要耗时2单位时间,总的单位时间不超过8单位,产品I消耗原料A 4个单位,产品II消耗原材料B 4个单位,其中原料A有16kg,原料B有12kg。建模情况在Excel中表现为附图所示:
线性规划使用步骤3:Excel进行线性规划求解过程如下:1.使用相关函数和运算符表示约束条件和目标函数;2,使用数据中的规划求解模块对已经建好的模型进行数学运算求解。a,选择目标函数区域 b,选择可变参数区域 c,选择并定义约束条件 d选择求解方法,本例采用单纯线性规划。然后确定求解即可。
线性规划使用步骤4:最后在Excel的单元格中会自动填充运算得出的最优化方案。本例中的的最优解为:生产产品I 4件,生产产品II 2 件时得到最大利润14元。
浏览量:2
下载量:0
时间:
Excel中如何利用线性规划进行求解呢?下面是读文网小编带来的关于excel2010利用线性规划求解的教程,希望阅读过后对你有所启发!
线性规划求解步骤1:题目如图,根据x,y的约束条件求z的最大值。
线性规划求解步骤2:首先,打开Excel,根据题目的要求制作如图表格。
线性规划求解步骤3:接下来要把相关的数据填入表格,运用“规划求解”功能计算z的最大值。整个过程中实际操作需要的是C2:I8区域(即黑色框线内的区域)。
线性规划求解步骤4:第4行是第一个不等式的系数,根据第一个不等式x+y-1≥0。x的系数为1,在D4单元格输入数据“1”;y的系数为1,在E4单元格输入数据“1”;常数为-1,在F4单元格输入数据“-1”;不等号是大于等于,在H4单元格输入“>=”(可不填);不等式右边是0,在I4单元格输入“0”。
线性规划求解步骤5:同样的根据第二个和第三个不等式在第5行和第6行输入数据。(为了便于理解,如图对所有的已知条件单元格填充颜色)
线性规划求解步骤6:第3行的未知数x,y是变量,就是“规划求解”功能中的“可变单元格”,常数应直接填写1,在F3单元格输入数据“1”。(同样为了便于理解,如图对x和y这两个变量对应的D3、E3单元格填充与已知条件不同的颜色)
线性规划求解步骤7:现在需要确认约束条件,究竟是什么大于等于0,或者小于等于0呢?应该是每个不等式的系数和未知数或常数对应相乘后再相加。例如第一个不等式,1*x+1*y-1*1≥0,即D4*D3+E4*E3+F4*F3≥0,把不等式左边放在G4单元格中,可以直接在G4单元格中输入“=D4*D3+E4*E3+F4*F3”。但在Excel中,SUMPRODUCT函数的功能是“返回相应的数组或区域乘积的和”,于是可以在G4单元格使用SUMPRODUCT函数,公式为“=SUMPRODUCT(D4:F4,$D$3:$F$3)”。(这里为了方便对第5行和第6行进行填充,对D3:F3区域添加了绝对引用)
线性规划求解步骤8:第二个不等式和第三个不等式同理于第一个不等式,因为上一步添加了绝对引用的关系,这里可以直接进行拖动填充(具体公式如图)。
线性规划求解步骤9:最后还要在D8单元格录入z的公式,因为是求z的最大值,而z=x+2y,x在D3单元格,y在E3单元格,所以在D8单元格输入“=D3+2*E3”。(D8单元格作为目标值,同样以不同的颜色填充便于区别)
线性规划求解步骤10:录入完成后,就可以运行“规划求解”工具了。点击“数据”选项卡下的“规划求解”。在弹出的“规划求解”对话框中设置各项数据。其中目标单元格为D8单元格(所要求的z),选择“最大值”(求z的最大值),可变单元格为D3:E3区域(即可变量x,y),约束条件分别是G4>=I4,G5<=I5,G6>=I6(点击“添加”后,在弹出的“添加约束”对话框里一一添加。其中G4>=I4,G5<=I5,G6>=I6分别是三个不等式的约束),最后将求解方法选择为“单纯线性规划”后点击“求解”。
线性规划求解步骤11:这时便可以看到“规划求解结果”对话框提示规划求解找到一解,点击“确定”。表格中也计算出了z的最大值为7(D8单元格),当z取得最大值时,x=3(D3单元格),y=2(E3单元格)。
浏览量:4
下载量:0
时间:
在cad中线型比例有三处设置。在线型资源管理器(也就是加载线型的那个对话框)里有两个设置,一个是“全局比例因子”,这个参数会影响图中所有线,也就是每条线的线型比例都会乘上这个因子。cad虚线线性如何设置呢?下面读文网小编给大家整理了更多关于cad虚线线性设置的方法,希望大家喜欢。
在CAD中新建图纸时选择英制或公制会调用不同的线型文件,公制的线型文件是带ISO的文件,例如AUTOCAD的公制线型文件:acadiso.lin,而英制的是acad.lin,两种线型文件中线型单元的长度是分别按毫米和英寸定制的,数值是不同的。如果你的图纸单位(measurement)设置为0(英制),但你实际绘图的时候是按毫米来画图的话,加载的线型就可能比例过小,需要再乘以25.4。虽然CAD的单位不是很重要,但英制和公制还是挺重要的,英制和公制的填充、线型的尺寸都是不一样的。
看过“cad虚线线性怎么设置“
浏览量:2
下载量:0
时间:
在Excel中录入好数据以后就会进行数据统计,而数据统计的时候经常需要用到线性规划的功能。下面是读文网小编带来的关于excel2010 关于线性规划的教程,欢迎阅读!
线性规划步骤1:在Excel中加载规划求解模块。Excel2010的步骤是:文件->选项->加载项->转到->勾选上“规划求解加载项”。
线性规划步骤2:看题理解后进行数学建模,然后将模型和数据输入在Excel的单元格中。本例的题目为:某工厂在计划期内要安排生产Ⅰ、Ⅱ两种产品,已知生产单位产品所需的设备台时及A、B两种原材料的消耗,如表2-1所示。该工厂每生产一件产品Ⅰ可获利2元,每生产一件产品Ⅱ可获利3元,问应如何安排计划使该工厂获利最多?生产产品I需耗时1单位,生产产品II需要耗时2单位时间,总的单位时间不超过8单位,产品I消耗原料A 4个单位,产品II消耗原材料B 4个单位,其中原料A有16kg,原料B有12kg。建模情况在Excel中表现为附图所示:
线性规划步骤3:Excel进行线性规划求解过程如下:1.使用相关函数和运算符表示约束条件和目标函数;2,使用数据中的规划求解模块对已经建好的模型进行数学运算求解。a,选择目标函数区域 b,选择可变参数区域 c,选择并定义约束条件 d选择求解方法,本例采用单纯线性规划。然后确定求解即可。
线性规划步骤4:最后在Excel的单元格中会自动填充运算得出的最优化方案。本例中的的最优解为:生产产品I 4件,生产产品II 2 件时得到最大利润14元。
浏览量:2
下载量:0
时间:
在存储器里以字节为单位存储信息,为正确地存放或取得信息,每一个字节单元给以一个唯一的存储器地址,称为物理地址(Physical Address),又叫实际地址或绝对地址。,读文网小编为大家介绍一下物理内存与虚拟内存(虚拟地址)的区别,供大家参考!
零碎的叫法常常来自与相对感觉深奥诙涩的虚拟内存概念。物理的东西,人们大多不去碰它,毕竟是实实在在存在的。而虚拟内存就经常有别冒名顶替的。“一个进程有4个GB的虚拟内存”这样的说法屡见不鲜,其实,这是混淆了4GB的进程地址空间和虚拟内存这两个概念。也算令一种解释吧,毕竟那4个GB也是见不着影的,也是虚拟的。
浏览量:2
下载量:0
时间: