专业编程培训机构——完成蜕变以后轻松拿高薪
电话+V: 152079-09430 ,欢迎咨询可采用几种方式将程序装入内存条里使用,[python实用课程],[C++单片机原理],[C#网站搭建],[Nodejs小程序开发],[ios游戏开发],[安卓游戏开发],[教会用大脑用想法赚钱实现阶层跨越]
一、在请求分页系统中,常采用哪几种页面置换算法?
1.可采用哪几种方式将程序装入内存?它们分别适用于何种场合?
a.首先由编译程序将用户源代码编译成若干目标模块,再由链接程序将编译后形成的目标模块和所需的-库函数链接在一起,组成一个装入模块,再由装入程序将装入模块装入内存;b.装入模块的方式有:绝对装入方式,可重定位方式和动态运行时装入方式;c.绝对装入方式适用于单道程序环境下;d.可重定位方式适用于多道程序环境下;e.动态运行时装入方式也适用于多道程序环境下.
2.何谓静态链接及装入时动态链接和运行时的动态链接?
a.静态链接是指事先进行链接形成一个完整的装入模块,以后不再拆开的链接方---式;
b.装入时动态链接是指目标模块在装入内存时,边装入边链接的链接方式;
c.运行时的动态链接是将某些目标模块的链接推迟到执行时才进行.
3.在进行程序链接时,应完成哪些工作?
a.对相对地址进行修改;b.变换外部调用符号.
4.在动态分区分配方式中,可利用哪些分区分配算法?
a.首次适应算法;b.循环首次适应算法;c.最佳适应算法.
5.在动态分区分配方式中,应如何将各空闲分区链接成空闲分区链?
应在每个分区的起始地址部分,设置一些用于控制分区分配的信息,以及用于链接各分区的前向指针;在分区尾部则设置一后向指针,通过前,后向指针将所有的分区链接成一个双向链.
6.为什么要引入动态重定位?如何实现?
a.为了在程序执行过程中,每当访问指令或数据时,将要访问的程序或数据的逻辑地址转换成物理地址,引入了动态重定位.b.可在系统中增加一个重定位寄存器,用它来装入(存放)程序在内存中的起始地址,程序在执行时,真-
正访问的内存地址是相对地址与重定位寄存器中的地址相加而形成的,从而实现动态重定位.
8.在采用首次适应算法回收内存时,可能出现哪几种情况?应怎样处理这些情况?
a.回收区与插入点的前一个分区相邻接,此时可将回收区与插入点的前一分区合并,不再为回收分区分配新表项,而只修改前邻接分区的大小;
b.回收分区与插入点的后一分区相邻接,此时合并两区,然后用回收区的首址作为新空闲区的首址,大-小为两者之和;
c.回收区同时与插入点的前后两个分区邻接,此时将三个分区合并,使用前邻接分区的首址,大小为三区之和,取消后邻接分区的表项;
d.回收区没有邻接空闲分区,则应为回收区单独建立一个新表项,填写回收区的首址和大小,并根据其首址,插入到空闲链中的适当位置.
9.在系统中引入对换后带有哪些好处?
能将内存中暂时不运行的进程或暂时不用的程序和数据,换到外存上,以腾出足够的内存空间,把已具备运行条件的进程或进程所需的程序和数据换入内存,从而大大地提高了内存的利用率.
10为实现对换,系统应具备哪几方面功能?
a.对对换空间的管理;b.进程的换出;c.进程的换入.
11在以进程为单位进行对换时,每次是否都将整个进程换出?为什么?
a.以进程为单位进行对换时,每次都将整个进程换出;b.目的为了解决内存紧张的问题,提高内存的利用率.
13请较详细地说明,引入分段存储管理是为了满足用户哪几方面的需要?
a.方便了编程;b.实现了分段共享;c.实现了分段保护;d.实现了动态链接;e.实现了动态增长.
14在具有快表的段页式存储管理方式中,如何实现地址变换?
首先,必须配置一段表寄存器,在其中存放段表始址和段长TL.进行地址变换时,先利用段号S,与段长TL进行比较,若S<TL,表示未越界,(若S>=TL,表示段号太大,访问越界,产生越界中断信号)于是利用段表始址和段号来求出该段对应的段表项在段表中的位置,从中求出该段的页表始址,并利用逻辑地址中
的段内页号P来获得对应页的页表项位置,从中读出该页所在的物理块号b,再用块号b和页内地址构成物理地址.
15为什么说分段系统较之分页系统更易于实现信息共享和保护?
a.对于分页系统,每个页面是分散存储的,为了实现信息共享和保护,则页面之间需要一一对应起来,为此需要建立大量的页表项;
b.而对于分段系统,每个段都从0开始编址,并采用一段连续的地址空间,这样在实现共享和保护时.只需为所要共享和保护的程序设置一个段表项,将其中的基址与内存地址一一对应起来即可.
16分页和分段有何区别?
a.分页和分段都采用离散分配的方式,且都要通过地址映射机构来实现地址变换,这是它们的共同点;
b.对于它们的不同点有三,第一,从功能上看,页是信息的物理单位,分页是为实现离散分配方式,以消减内存的外零头,提高内存的利用率,即满足系统管理的需要,而不是用户的需要;而段是信息的逻辑单位,它含有一组其意义相对完整的信息,目的是为了能更好地满足用户的需要;
c.页的大小固定且由系统确定,而段的长度却不固定,决定于用户所编写的程序;
d.分页的作业地址空间是一维的,而分段的作业地址空间是二维的.
17试全面比较连续分配和离散分配方式.
a.连续分配是指为一个用户程序分配一个连续的地址空间,包括单一连续分配方式和分区式分配方式,前者将内存分为系统区和用户区,系统区供操作系统使用,用户区供用户使用,是最简单的一种存储方式,但只能用于单用户单任务的操作系统中;分区式分配方式分为固定分区和动态分区,固定分区是最简单的
多道程序的存储管理方式,由于每个分区的大小固定,必然会造成存储空间的浪费;动态分区是根据进程的实际需要,动态地为之分配连续的内存空间,常用三种分配算法:首次适应算法FF,该法容易留下许多难以利用的小空闲分区,加大查找开销;循环首次适应算法,该算法能使内存中的空闲分区分布均匀,但
会致使缺少大的空闲分区;最佳适应算法,该算法也易留下许多难以利用的小空闲区;
b.离散分配方式基于将一个进程直接分散地分配到许多不相邻的分区中的思想,分为分页式存储管理,分段存储管理和段页式存储管理.分页式存储管理旨在提高内存利用率,满足系统管理的需要,分段式存储管理则旨在满足用户(程序员)的需要,在实现共享和保护方面优于分页式存储管理,而段页式存储管理
则是将两者结合起来,取长补短,即具有分段系统便于实现,可共享,易于保护,可动态链接等优点,又能像分页系统那样很好的解决外部碎片的问题,以及为各个分段可离散分配内存等问题,显然是一种比较有效的存储管理方式;
二、可采用哪几种方式将程序装入内存?
根据查询百度题库试题显示,将一个程序装入内存通常有哪几种方式?答案:
(1)绝对装入方式。绝对装入方式是由装入程序根据装入模块中的地址将程序和数据装入内存。程序中所使用的绝对地址,既可在编译或汇编时给出,也可由程序员直接赋予。采用绝对装入方式的前提是地址空间的容量要足够且可用。这种方式对于单道程序是可行的。但对于多道程序来讲,程序员需要准确地了解内存分区及使用的情况,正确定位程序或数据的内存地址,避免冲突的发生,而且一旦程序或数据被修改后,可能需要改变程序中的所有地址。
(2)可重定位装入方式。可重定位装入又称静态重定位装入,装入程序根据内存当前的实际使用情况,将装入模块装入到内存适当的地方,地址变换在装入时一次完成。这种方式采用相对地址来存放程序和数据。一般设定程序的地址空间从0开始,当需要装入该程序时,通过转换来确定它们在内存中的实际位置。
(3)动态运行时装入方式。动态运行时装入又称动态重定位装入,在把装入模块装入内存后,并不立即把装入模块中的相对地址转换为绝对地址,而是把这种地址转换推迟到程序真正要执行时才进行。因此,装入内存后的所有地址都仍是相对地址。为使地址转换不影响指令的执行速度,这种方式需要特殊硬件的支持。
三、电脑8G以上大内存怎么使用
8G以上大内存如何合理地使用呢?下面我就给大家整理了一些整理收集了使用8G以上大内存的方法,希望对你有用!
使用8G以上大内存的方法
对于采用了大容量内存的系统来说,基本上有四种比较有代表性的应用方案,我们将为大家一一分析。
第一种方案是直接安装64位Windows系统。以64位Windows7最为常见,现在很多品牌机预装的就是64位的Windows7。采用这种方案的大内存系统性能的提升最为有限,只有在部分需要极大内存的应用中才能体现出大容量内存的性能优势,而在普通应用中系统性能的变化就不太明显了。
第二种方案是将系统装进内存。这种方案安装相当复杂,但是对系统性能的提升非常巨大,系统加载速度大幅度提升,程序加载的速度也变得非常快。不过这种方案目前具有较大的局限性,整个系统盘必须小于2GB,否则加载过程就会失败,这就意味着要么安装极度精简版的Windows7系统,要么安装普通的WindowsXP系统,但无法在系统盘中安装大型应用软件,而只能安装常用的非大型应用软件。
在前面的分析中我们谈到了要想成功将Windows7安装到内存中,要求整个系统盘的文件占据的空间不得超过2GB,而这是非常复杂的。普通的Windows7安装完成之后大概要占到10GB的空间,如果再算上虚拟内存的页面文件和系统休眠的镜像文件,安装了16GB内存的系统,大概要占到30GB的空间,这样是不可能成功做成镜像的。而且普通的给Windows7瘦身的方法也不太管用,瘦身完成后Windows7依然要占据7GB左右的空间,因此我们只能安装极致精简的Windows7系统。
由于工程师下载的极致精简版Windows7采用的是自动解压的方式安装,而直接解压的话由于没有系统启动引导程序,极致精简版Windows7是无法使用的,因此必须将安装极致精简版的Windows7系统分为两步来完成。
第一步是在硬盘上以正常的安装方式安装标准的Windows7系统,这一步非常简单,就不多说了。
紧接着进入比较复杂的第二步。系统安装完成后什么驱动程序都不用装,直接重启用WinPE工具盘引导到WinPE系统中。从WinPE的计算机管理窗口中进入磁盘管理界面,此时可以看到磁盘“C:”为系统保留的100MB分区,这个分区存放的是Windows7的系统引导程序,在Windows7系统中是不会显示出来的,在WinPE中才会显示出来。右键点击磁盘“C:”,选择“更改驱动器号和路径”,然后在弹出的新窗口中将其驱动器号改为“B”,紧接着将刚才装好系统的分区(正常情况现在应该是磁盘“D:”)以同样的方式改变其驱动器号为“C”。这样一来,磁盘“C:”就是我们刚才装好系统的那个分区了,然后右键点击装有系统的磁盘“C:”选择“格式化”。格式化完成后,我们运行极致精简版Windows7的安装程序,该程序会自动将文件解压到磁盘“C:”,解压完成后重新启动计算机,就会开始极致精简版Windows7的安装。安装完成后我们发现实际C盘占用空间在1.26GB左右,并且能够正常安装驱动,也能够开启Aero。
系统装好了之后,安装好所有设备的驱动程序,接着就是安装内存虚拟硬盘的FiraDisk驱动。首先进入设备管理器,在硬件设备列表的最上面一栏点击右键,选择“添加过时硬件(见上图)”,然后点击“手动从列表选择硬件”,定位到FiraDisk文件夹的FiraDisk.inf文件即可将名为“FiraDiskVirtualDiskEnumerator”的磁盘控制器安装到系统中。
然后,要进行系统启动信息的修改,否则bootmgr就会发现磁盘大小发生了改动,导致启动时出现Winload.exe错误,系统无法直接从内存成功启动。修改的方法很简单:以管理员身份运行“开始→所有程序→附件”中的“命令提示符”程序,分别输入“bcdedit/set{default}osdeviceboot”、“bcdedit/set{default}deviceboot”和“bcdedit/set{default}detecthal1”这三条命令,每输入一条命令就回车一次,系统会提示程序执行完成。到这里,系统启动信息的修改就算是完成了,接下来我们就要加入启动选项菜单。
首先把Grub4dos解压到C盘并将文件夹改名为“grub”,然后将“grub”文件夹中的grldr和grldr.mbr两个文件复制到C盘根目录,接着在“命令提示符”界面中输入“bcdedit/create/d"Grub"/applicationbootsector”后回车,此时系统会返回一长串字符。我们这里返回的是“{4bc205f9-d2d6-11e0-a1b9-9116d6c33702}”,然后我们继续在“命令提示符”界面中分别输入三条命令:
bcdedit/set{4bc205f9-d2d6-11e0-a1b9-9116d6c33702}devicepartition=c:
bcdedit/set{4bc205f9-d2d6-11e0-a1b9-9116d6c33702}path\\\\grldr.mbr
bcdedit/displayorder{4bc205f9-d2d6-11e0-a1b9-9116d6c33702}/addlast
(对于不同的系统返回的字符并不一样,在后面的命令中也要将“{}”中的字符改为对应的),每输入一条命令就回车一次,系统会提示程序执行完成。
进行到这一步,可以说我们在Windows7系统中的修改操作都已经全部完成,然后我们重新启动到WinPE系统中。运行VDM,在极致精简版Windows7的系统盘(在WinPE系统中显示为D盘)创建一个名为“Ramwin7.img”、大小为2GB的镜像,接着将这个2GB的镜像加载到系统中,此时系统会出现一个大小为2GB的磁盘“A:”,点击磁盘“A:”,选择格式化磁盘“A:”,然后将D盘中除“SystemVolumeInformation”、“RECYCLER”和“Ramwin7.img”之外的所有文件和文件夹全部复制到磁盘“A:”中,就完成了镜像的制作。
接下来就是修改二级启动菜单了,用写字板将D盘中“grub”文件夹下的“menu.lst”文件打开,在最后写上以下6行代码:
titleRamwin7
find——set-root/Ramwin7.img
map——mem/Ramwin7.img(hd0)
map(hd0)(hd1)
map——hook
chainloader(hd0,0)/bootmgr
到这里全部工作就完成了,重新启动计算机,在启动选择菜单中选择“grub”,等20多秒钟就自动进入内存版Windows7了。由于我们使用的极致精简版Windows7为32位版本,此时内存版Windows7占用了2GB,还剩下1.46GB内存可用。这时的Windows7系统运行速度确实非常快,不过极致精简也带来了很多问题:由于过于精简,系统只能运行Office、IE等少数应用程序,PCMark7、SiSoftwareSandra2011均无法正常运行,包括《天堂2.5》在内的各种游戏也无法正常加载。
2、在内存中安装WindowsXP
由于极致精简版Windows7安装在内存中之后有很多软件都不能正常使用,因此我们改为在内存中安装WindowsXP系统。相对于在内存中安装Windows7,安装内存版WindowsXP简单得多,安装好系统、驱动程序和应用软件之后,可以删除掉一些不用的部件以精简系统。然后在FiraDisk文件夹下右键点击FiraDisk.inf文件,选择“安装”,系统会自动重启并开始安装FiraDiskVirtualDiskEnumerator的驱动程序,手动定位到FiraDisk文件夹就能把FiraDiskVirtualDiskEnumerator磁盘控制器装好。
接下来需要手动改变系统盘的盘符,否则无法正常启动到内存版WindowsXP,点击“开始→运行”,输入“regedit”在“[HKEY_LOCAL_MACHINE\\SYSTEM\
MountedDevices]”中将“\\DosDevices\\C:”重命名为“\\DosDevices\\B:”,这样当我们启动到内存版WindowsXP系统时,原来的C盘就会变成B盘,而内存版WindowsXP的系统盘会被自动分配为C盘。
修改完成后,重启计算机进入WinPE系统,和前面介绍的一样运行VDM工具,在WindowsXP的系统盘“C:”中建立一个名为“RamXP.img”、大小为2GB的镜像,加载这个镜像,同样会出现A盘,和制作内存版Windows7镜像一样将系统盘中除“SystemVolumeInformation”、“RECYCLER”和“RamXP.img”之外的所有文件和文件夹全部复制到磁盘“A:”中,就完成了镜像的制作。
工程师提示:要注意的是此时boot.ini文件中系统分区的路径必须是“multi(0)disk(0)rdisk(0)partition(1)\\WINDOWS”。
和前面制作内存版Windows7一样,把Grub4dos解压到C盘并将文件夹改名为“grub”,然后将“grub”文件夹中的grldr文件复制到C盘根目录,编辑boot.ini文件,在最后另起一行输入“c:\\\\grldr="GRUB"”。最后,同样是用写字板将C盘中“grub”文件夹下的“menu.lst”文件打开,在最后写上以下6行代码:
titleRamXP
find——set-root/RamXP.img
map——mem/RamXP.img(hd0)
map(hd0)(hd1)
map——hook
chainloader(hd0,0)/ntldr
全部完成后,重启计算机,在启动菜单中选择“Grub”,然后在Grub的菜单中选择RamXP。大约10秒钟以后就能进入内存版WindowsXP系统了。同样的,由于64位WindowsXP的兼容性不好,我们安装的依然是32位的WindowsXP,此时内存版WindowsXP占用了2GB,系统还有1.46GB内存可用,系统性能明显大幅度提升,运转如飞。由于WindowsXP系统本身就不大,在安装并适度精简后,还可以装下相当多的应用程序,而且这些应用程序都可以正常使用,可玩性比内存版的Windows7要高一些。
第三种方案是将部分内存虚拟成硬盘。这样一来系统中将会出现一个读写速度非常快的分区。将部分应用程序安装在虚拟硬盘中之后,启动这些应用程序的速度会有非常明显的提升,但是对整个系统的性能影响并不大。不过现在的虚拟硬盘软件也支持在关机时将虚拟硬盘中的数据写入镜像,不会再出现关机即丢失数据的情况。这种方案目前也有一定的局限性——目前的虚拟硬盘软件只能创建容量在4GB以内的虚拟硬盘。
很多内存较大的用户都有过将部分内存虚拟成硬盘的想法,将内存虚拟成硬盘是最容易实现的大内存应用方案。我们采用VSuiteRamdisk这款软件来实现大内存的硬盘虚拟。这类软件都是通过独特的算法,将内存虚拟成硬盘,使得对硬盘文件的数据读写转化为对内存的数据访问,大幅提高数据的访问速度,这对于频繁通过网络交换大容量文件的用户尤其有帮助。由于内存具有断电数据消失的特性,用于存放临时文件是最好不过的。新版的VSuiteRamdisk提供镜像功能,支持关机时自动保存数据到镜像文件以及开机时自动从镜像文件加载数据到虚拟硬盘,可以避免原来那些内存虚拟硬盘软件造成数据在关机时丢失的问题。而且VSuiteRamdisk还具有检测和利用系统未识别内存的功能,可以解决32位Windows操作系统无法完全使用4GB或更多内存的问题。我们在64位Windows7系统中开启最大4GB的虚拟硬盘,然后将系统的交换文件设置到虚拟硬盘中,同时将《天堂2.5》安装到虚拟硬盘中,在这种模式下我们可以看到,对虚拟硬盘来说磁盘读写性能是有巨大提升的,但是对整个系统来说,除了加载安装在虚拟硬盘中的程序时速度提升明显之外,整个系统性能并没有出现大的改观。
第四种方案是将内存虚拟成磁盘缓存,为硬盘分配内存作缓存,并拦截系统发送至硬盘的IO请求。如果IO请求读取的数据已经在缓存中,则直接读取缓存中的数据并完成IO请求,否则数据则从硬盘中读取出来,并存入缓存,同时完成IO请求。由此可见,从缓存读取的数据量越多,则系统性能提升得越多,避免频繁读取速度较慢的硬盘,从而提升系统性能。
从Windows98时代起,很多玩家就乐此不疲地修改注册表中的硬盘缓存项,以此来获得更高的硬盘性能,现在很多硬盘的缓存都达到了64MB,不过对于疯狂追求性能的用户来说,64MB的硬盘缓存完全不够用。当我们的内存达到16GB的时候,我们就可以考虑将内存虚拟成硬盘缓存来使用了。我们采用FancyCache这款将系统内存虚拟成硬盘缓存的软件来进行测试。
FancyCache能把从硬盘中读取的数据存入系统内存,使系统在下次访问该数据时可以很快从内存中读取,而且FancyCache还支持将其他磁盘虚拟给硬盘作为二级缓存,因此我们在测试中测试了两种方案。第一种是单纯将4GB内存作为硬盘的缓存,第二种是在第一种方案的前提下,再将4GB内存虚拟成硬盘,然后将这个内存虚拟的硬盘作为主硬盘的二级缓存。
可以看到在64位Windows7系统中,打开内存虚拟硬盘缓存带来的性能提升是非常巨大的,PCMark7的系统得分甚至一跃突破了5100分,而我们知道Futuremark在官方说明中曾表示他们的目标是将由Corei7-980X六核心处理器、GeForceGTX580显卡、美光CrucialC300固态硬盘组成的高端系统的成绩控制在5000分左右。在不要固态硬盘的前提下,只不过是Corei7-2600K、GeForceGTX560Ti、希捷7200.121TB硬盘的系统就超越了5000分,让我们看到了大硬盘缓存带来的飞速性能提升,而这才是我们最希望得到的结果。
在HDTune的随机读写测试中,我们也可以看到大缓存带来的非常明显的改变,4KB的随机读写性能,第一次只有59IOPS,和普通硬盘的速度差别不大,但是紧接着进行第二次测试,大缓存的优势就表现出来了,其4KB随机读写性能达到了151263IOPS,比目前性能最高的固态硬盘还高出一倍左右!
工程师总结
内存版系统还不成熟
将操作系统和常用软件安装在内存中当然是能够非常大地提升系统的性能和响应速度的,不过由于目前内存版系统的引导程序最高只能支持到2GB的系统镜像,因此要想安装内存版Windows系统就要对系统进行精简。WindowsXP系统还好,并不需要过分精简,不会影响使用,只是没有办法在内存系统中安装大型软件。而Windows7系统则需要进行非常大幅度的精简,这种精简已经让系统变得兼容性相当差,很多程序都无法正常运行。鉴于这种情况,我们认为目前来看,把系统装到内存中打造飞速的内存版系统的方案还不成熟,建议大家最好不要考虑。等到将来内存版系统的引导程序能够支持8GB~12GB的镜像的时候,再考虑安装内存版Windows也不迟。
内存虚拟缓存最高效
综观这几种方案,我们可以发现对于提高整个系统的性能来说,将内存虚拟成硬盘缓存是效果最好的,不仅大幅提升了随机访问数据的性能,而且对于整个系统的运行速度也有一定的提升。其实对于整个硬盘来说,虚拟缓存的容量并不一定要达到4GB那么多,1GB甚至几百MB也能给系统性能带来明显的提升。这种方案对于配备了4GB内存又安装了32位操作系统的用户来说也是非常适合的,由于FancyCache这款软件能够识别出系统未利用到的内存,既不会影响32位系统本身的内存容量,又能带来系统性能的提升。当然,如果内存够大,我们建议同时再将部分内存虚拟成关机也不会丢失内容的硬盘,将游戏、常用大型软件以及临时文件夹放在其中,对系统性能也是有一定程度的提升的。
【FUTURE PROGRAMMING COURSE】尊享对接老板
电话+V: 152079-09430
机构由一批拥有10年以上开发管理经验,且来自互联网或研究机构的IT精英组成,负责研究、开发教学模式和课程内容。公司具有完善的课程研发体系,一直走在整个行业发展的前端,在行业内竖立起了良好的品质口碑。