当前位置:首页 » 存储配置 » 设计一个虚拟存储区

设计一个虚拟存储区

发布时间: 2024-05-03 05:24:18

❶ 什么是虚拟存储器,作用是什么

虚拟存储器:在具有层次结构存储器的计算机系统中,自动实现部分装入和部分替换功能,能从逻辑上为用户提供一个比物理贮存容量大得多,可寻址的“主存储器”。虚拟存储区的容量与物理主存大小无关,而受限于计算机的地址结构和可用磁盘容量。

作用:虚拟内存的作用 内存在计算机中的作用很大,电脑中所有运行的程序都需要经过内存来执行,如果执行的程序很大或很多,就会导致内存消耗殆尽。为了解决这个问题,Windows中运用了虚拟内存技术,即拿出一部分硬盘空间来充当内存使用,当内存占用完时,电脑就会自动调用硬盘来充当内存,以缓解内存的紧张。

❷ 虚拟存储器技术主要用于解决什么问题简述虚拟存储器的基本工作原理。

虚拟存储器技术主要解决电脑内存不够的问题,电脑中所运行的程序均需经由内存执行,若执行的程序占用内存很大或很多,则会导致内存消耗殆尽。

为解决该问题,Windows中运用了虚拟内存技术,即匀出一部分硬盘空间来充当内存使用。当内存耗尽时,电脑就会自动调用硬盘来充当内存,以缓解内存的紧张。若计算机运行程序或操作所需的随机存储器(RAM)不足时,则 Windows 会用虚拟存储器进行补偿。

工作原理

1、中央处理器访问主存的逻辑地址分解成组号a和组内地址b,并对组号a进行地址变换,即将逻辑组号a作为索引,查地址变换表,以确定该组信息是否存放在主存内。

2、如该组号已在主存内,则转而执行④;如果该组号不在主存内,则检查主存中是否有空闲区,如果没有,便将某个暂时不用的组调出送往辅存,以便将这组信息调入主存。

3、从辅存读出所要的组,并送到主存空闲区,然后将那个空闲的物理组号a和逻辑组号a登录在地址变换表中。

4、从地址变换表读出与逻辑组号a对应的物理组号a。

5、从物理组号a和组内字节地址b得到物理地址。

6、根据物理地址从主存中存取必要的信息。


(2)设计一个虚拟存储区扩展阅读:

相关概念

1、实地址与虚地址

用户编制程序时使用的地址称为虚地址或逻辑地址,其对应的存储空间称为虚存空间或逻辑地址空间;而计算机物理内存的访问地址则称为实地址或物理地址,其对应的存储空间称为物理存储空间或主存空间。程序进行虚地址到实地址转换的过程称为程序的再定位。

2、虚拟内存的访问过程

虚存空间的用户程序按照虚地址编程并存放在辅存中。程序运行时,由地址变换机构依据当时分配给该程序的实地址空间把程序的一部分调入实存。

每次访存时,首先判断该虚地址所对应的部分是否在实存中:如果是,则进行地址转换并用实地址访问主存;否则,按照某种算法将辅存中的部分程序调度进内存,再按同样的方法访问主存。

3、异构体系

从虚存的概念可以看出,主存-辅存的访问机制与cache-主存的访问机制是类似的。这是由cache存储器、主存和辅存构成的三级存储体系中的两个层次。cache和主存之间以及主存和辅存之间分别有辅助硬件和辅助软硬件负责地址变换与管理,以便各级存储器能够组成有机的三级存储体系。

❸ 如何给硬盘设置虚拟内存

1、电脑上面点击【开始】菜单(或者按键盘上面的Windows键),在“计算机”上面单机右键,选择“属性”。

(3)设计一个虚拟存储区扩展阅读

虚拟存储器地址变换基本上有3种形虚拟存储器工作过程式:全联想变换、直接变换和组联想变换。任何逻辑空间页面能够变换到物理空间任何页面位置的方式称为全联想变换。

替换规则用来确定替换主存中哪一部分,以便腾空部分主存,存放来自辅存要调入的那部分内容。常见的替换算法有4种。

①随机算法:用软件或硬件随机数产生器确定替换的页面。

②先进先出:先调入主存的页面先替换。

③近期最少使用算法(LRU,Least Recently Used):替换最长时间不用的页面。

④最优算法:替换最长时间以后才使用的页面。这是理想化的算法,只能作为衡量其他各种算法优劣的标准。

❹ 镐庢牱钖堢悊镄勮捐¤嚜宸辩殑铏氭嫙鍐呭瓨锛岃疯︾粏镣癸紒璋浜嗭紒

缁忓吀璇鍖哄洓锛氲櫄𨰾熷唴瀛樿繖涔堣炬渶"绉戝"锛

缁忓吀绋嫔害锛气槄钸呪槄钸呪槄

鍗遍橹绋嫔害锛气槄钸

1.阌栾镄勮В鍐虫柟娉曟弿杩

(1)鍦"鎴戠殑鐢佃剳"镄"灞炴"绐楀彛锛屽垏鎹㈠埌"楂樼骇鈫掓ц兘鈫掕櫄𨰾熷唴瀛"绐楀彛锛屽皢铏氭嫙鍐呭瓨镄勫埯濮嫔煎拰链澶у艰剧疆涓哄悓涓鍊煎彲浠ュ噺灏戠佺洏纰庣墖锛屾彁楂樼郴缁熻繍琛屾晥鐜囥

(2)鍒嗗埆鍦ㄧ‖鐩樼殑姣忎釜鍒嗗尯涓婇兘璁剧疆涓閮ㄥ垎铏氭嫙鍐呭瓨锛屽彲浠ユ彁楂樼郴缁熺殑镐ц兘銆
2.鏂规堢敱𨱒ュ强钖庢灉

Windows閲囩敤锷ㄦ佺殑鏂规硶瀵硅櫄𨰾熷唴瀛樿繘琛岀$悊锛屼篃灏辨槸璇村綋鍦ㄦ墽琛岃楄垂鍐呭瓨姣旇缉澶х殑绋嫔簭(濡侾hotoshop銆丮S Office绛)镞讹纴绯荤粺浼氲嚜锷ㄦ墿澶ц櫄𨰾熷唴瀛樼殑椤甸溃鏂囦欢镄勪綋绉锛屼互銮峰缑镟村氱殑鍙鐢ㄨ祫婧愶纴鍙崭箣锛屽傛灉鐗╃悊鍐呭瓨杩樻湁杈冨氱殑绌洪棽绌洪棿锛岀郴缁熷垯浼氲嚜锷ㄧ缉灏忛〉闱㈡枃浠剁殑浣撶Н銆傝繖灏辨槸鎴戜滑鍦ㄥ疗鐪嬬郴缁熶腑镄刾ageflie.sys(Windows 2000/XP)鎴杦in386.swp(Windows 9X/Me)鏂囦欢镞讹纴璇ユ枃浠舵湁镞跺椤ぇ链夋椂鍊椤皬镄勫师锲犳墍鍦ㄣ

鐞呜轰笂𨱒ヨ诧纴濡傛灉灏呜櫄𨰾熷唴瀛樼殑鍒濆嫔煎拰链澶у艰剧疆涓哄悓涓鍊硷纴杩欐牱鍙浠ヨ╃佸ご杩炵画璇诲彇锛屼笉瀹规槗鍑虹幇纾佺洏纰庣墖锛屼粠钥屾彁楂樼郴缁熺殑杩愯屾晥鐜囥备絾鍦ㄥ疄闄呬娇鐢ㄧ殑杩囩▼涓锛屾垜浠浼氩彂鐜帮纴褰撴垜浠璇诲彇镆愪釜澶ф枃浠剁殑镞跺欙纴甯稿父阆?quot;鍐呭瓨婧㈠嚭"阌栾锛岀郴缁熷弽钥岃繍琛屼笉绋冲畾銆

钥屽逛簬镓璋"灏嗙‖鐩樼殑姣忎釜鍒嗗尯閮借剧疆铏氭嫙鍐呭瓨"镄勫勭悊锷炴硶锛岀敱浜庡悇涓鍒嗗尯涓婃枃浠跺垎甯幂殑涓岖‘瀹氭э纴瀵艰嚧纾佺洏纰庣墖镄勪笉鍙阆垮厤锛岃槠铹禬indows浼氢紭鍏堥夋嫨浣跨敤涓嶅父杩涜屾枃浠惰诲啓镎崭綔镄勫垎鍖轰腑镄勯〉闱㈡枃浠讹纴涓嶈繃杩欐牱浼氩姞閲岖郴缁熷唴瀛樼$悊镄勮礋𨰾咃纴灏界$畻涓崭笂寰埚氱殑璋璇锛屼絾镊冲皯涓嶆槸链濂界殑鏂规堛

灏忕煡璇嗭细 镓璋"铏氭嫙鍐呭瓨"锛岄氢织镄勮诧纴灏辨槸褰撴垜浠镄勭墿鐞嗗唴瀛树笉澶熺敤镄勬椂鍊欙纴绯荤粺灏嗙‖鐩树笂镄勯儴鍒嗙┖闂存ā𨰾熸垚鍐呭瓨浣跨敤锛屽皢𨱌傛椂涓岖敤镄勭▼搴忔垨鏁版嵁瀛樻斁鍒拌繖閮ㄥ垎绌洪棿涓锛岀瓑闇瑕佺殑镞跺欐柟渚垮强镞惰皟鐢ㄣ傝櫄𨰾熷唴瀛桦湪Windows 9X/Me涓瀵瑰簲镄勬暟鎹涓存椂瀛樻斁鏂囦欢涓簑in386.swp(鎴戜滑绉颁负浜ゆ崲鏂囦欢锛孲wapfile)锛屽湪Windows 2000/XP涓瀵瑰簲镄勬暟鎹涓存椂瀛樻斁鏂囦欢涓篜agefile.sys(鎴戜滑绉颁负椤甸溃鏂囦欢鎴栬呭垎椤垫枃浠讹纴PageFile)銆傞〉闱㈡枃浠朵缭瀛桦湪纭鐩桦垎鍖虹殑镙圭洰褰曚腑锛屾枃浠跺睘镐т负"闅愯棌"锛屾垜浠闇瑕佸湪"鏂囦欢澶归夐”"涓阃変腑"鏄剧ず镓链夋枃浠"镓嶈兘鐪嫔埌瀹冦

3.姝g‘镄勮В鍐冲姙娉曪细

瀵逛簬铏氭嫙鍐呭瓨濡备綍璁剧疆镄勯梾棰桡纴寰杞宸茬粡缁欐垜浠鎻愪緵浜嗗畼鏂圭殑瑙e喅锷炴硶锛屽逛簬涓鑸𨱍呭喌涓嬶纴鎴戜滑鎺ㄨ崘閲囩敤濡备笅镄勮剧疆鏂规硶锛

(1)鍦╓indows绯荤粺镓鍦ㄥ垎鍖鸿剧疆椤甸溃鏂囦欢锛屾枃浠剁殑澶у皬鐢变綘瀵圭郴缁熺殑璁剧疆鍐冲畾銆傚叿浣撹剧疆鏂规硶濡备笅锛氭墦寮"鎴戠殑鐢佃剳"镄"灞炴"璁剧疆绐楀彛锛屽垏鎹㈠埌"楂樼骇"阃夐”鍗★纴鍦"钖锷ㄥ拰鏁呴㱩鎭㈠"绐楀彛镄"鍐椤叆璋冭瘯淇℃伅"镙忥纴濡傛灉浣犻噰鐢ㄧ殑鏄"镞"锛屽垯灏嗛〉闱㈡枃浠跺ぇ灏忚剧疆涓2MB宸﹀彸锛屽傛灉閲囩敤"镙稿绩鍐呭瓨瀛桦偍"鍜"瀹屽叏鍐呭瓨瀛桦偍"锛屽垯灏嗛〉闱㈡枃浠跺艰剧疆寰楀ぇ涓浜涳纴璺熺墿鐞嗗唴瀛桦樊涓嶅氩氨鍙浠ヤ简銆

灏忔彁绀猴细瀵逛簬绯荤粺鍒嗗尯鏄钖﹁剧疆椤甸溃鏂囦欢锛岃繖閲屾湁涓涓鐭涚浘锛氩傛灉璁剧疆锛屽垯绯荤粺链夊彲鑳戒细棰戠箒璇诲彇杩欓儴鍒嗛〉闱㈡枃浠讹纴浠庤屽姞澶х郴缁熺洏镓鍦ㄧ侀亾镄勮礋钻凤纴浣嗗傛灉涓嶈剧疆锛屽綋绯荤粺鍑虹幇钃濆睆姝绘満(鐗瑰埆鏄疭TOP阌栾)镄勬椂鍊欙纴镞犳硶鍒涘缓杞鍌ㄦ枃浠 (Memory.dmp)锛屼粠钥屾棤娉曡繘琛岀▼搴忚皟璇曞拰阌栾鎶ュ憡浜嗐傛墍浠ユ姌涓镄勫姙娉曟槸鍦ㄧ郴缁熺洏璁剧疆杈冨皬镄勯〉闱㈡枃浠讹纴鍙瑕佸熺敤灏辫屼简銆

(2)鍗旷嫭寤虹珛涓涓绌虹槠鍒嗗尯锛屽湪璇ュ垎鍖鸿剧疆铏氭嫙鍐呭瓨锛屽叾链灏忓艰剧疆涓虹墿鐞嗗唴瀛樼殑1.5鍊嶏纴链澶у艰剧疆涓虹墿鐞嗗唴瀛樼殑3鍊嶏纴璇ュ垎鍖轰笓闂ㄧ敤𨱒ュ瓨鍌ㄩ〉闱㈡枃浠讹纴涓嶈佸啀瀛樻斁鍏跺畠浠讳綍鏂囦欢銆备箣镓浠ュ崟镫鍒掑垎涓涓鍒嗗尯鐢ㄦ潵璁剧疆铏氭嫙鍐呭瓨锛屼富瑕佹槸锘轰簬涓ょ偣钥冭槛锛氩叾涓锛岀敱浜庤ュ垎鍖轰笂娌℃湁鍏跺畠鏂囦欢锛岃繖镙峰垎鍖轰笉浼氢骇鐢熺佺洏纰庣墖锛岃繖镙疯兘淇濊瘉椤甸溃鏂囦欢镄勬暟鎹璇诲啓涓嶅弹纾佺洏纰庣墖镄勫共镓帮绂鍏朵簩锛屾寜镦Windows瀵瑰唴瀛樼殑绠$悊鎶链锛学indows浼氢紭鍏堜娇鐢ㄤ笉缁忓父璁块梾镄勫垎鍖轰笂镄勯〉闱㈡枃浠讹纴杩欐牱涔熷噺灏戜简璇诲彇绯荤粺鐩橀噷镄勯〉闱㈡枃浠剁殑链轰细锛屽噺杞讳简绯荤粺鐩樼殑铡嫔姏銆

(3)鍏跺畠纭鐩桦垎鍖轰笉璁剧疆浠讳綍椤甸溃鏂囦欢銆傚綋铹讹纴濡傛灉浣犳湁澶氢釜纭鐩桡纴鍒椤彲浠ヤ负姣忎釜纭鐩橀兘鍒涘缓涓涓椤甸溃鏂囦欢銆傚綋淇℃伅鍒嗗竷鍦ㄥ氢釜椤甸溃鏂囦欢涓婃椂锛岀‖鐩樻带鍒跺櫒鍙浠ュ悓镞跺湪澶氢釜纭鐩树笂镓ц岃诲彇鍜屽啓鍏ユ搷浣溿傝繖镙风郴缁熸ц兘灏嗗缑鍒版彁楂樸

灏忔彁绀猴细 鍏佽歌剧疆镄勮櫄𨰾熷唴瀛樻渶灏忓间负2MB锛屾渶澶у间笉鑳借秴杩囧綋鍓岖‖鐩樼殑鍓╀綑绌洪棿鍊硷纴钖屾椂涔熶笉鑳借秴杩32浣嶆搷浣灭郴缁熺殑鍐呭瓨瀵诲潃锣冨洿钬斺4GB銆
http://www.leftworld.net/wenzhang/show/1995.html

❺ 计算机组成原理——虚拟存储器

(1)程序员在比实际主存大得多的逻辑地址空间中编写程序

(2)程序执行时,把当前需要的程序段和数据块掉入主存,其他暂不使用的放在磁盘上

(3)执行指令时,通过硬件将逻辑地址转化为物理地址。虚拟地址高位为虚页号,低位为页内偏移地址

(4)当程序发生数据访问或程序访问失效(缺页时),由操作系统把信息从磁盘调入主存中

    (1)基本思想:

        内存被分成固定长度且长度较小的存储块(页框,实页,物理页)

        每个进程也被划分为固定长度的程序块(页,虚页,逻辑页)

        通过页表,实现逻辑地址想物理地址的转化

    (2)逻辑地址

        程序中指令所使用的地址(进程所在地址空间)

    (3)物理地址

        存放指令或数据的实际内存地址

(1)与“cache-主存”层次相比,页大小远比cache的行大小要大(windows中的页位4k)

(2)采用全相联映射方式:磁盘中的任意一个页能用射到内存中的任意一个页

    因为缺页导致中断时,操作系统从磁盘拿数据通常要耗费几百万个时钟周期。增大页大小,可以减少缺页中断

(3)为什么让软件处理“缺页”

    因为访问磁盘需要好粉几百万个时钟周期,硬件即使能立刻把地址打给磁盘,磁盘也不能立即响应

(4)为什么地址转换用硬件实现

    硬件实现地址转换可以加快指令的执行速度

(5)为什么页写会策略采用write back

    避免频繁的慢速磁盘访问

页表的首地址放在基址寄存器。采用基址寻址方式

每个页表项前面有一个虚页号:从0开始递增的序号。页表项又分为几个结构:

(1)装入位:该页是否在内存中

(2)修改位:该也在内存中是否被修改

(3)替换控制位:用于clock算法

(4)其他

(5)实页号(8进制)

(1)一次磁盘引用需要访问几次主存?2次,一次查页表,一次查物理地址。于是,把经常查的页表放到cache中。这种在cache页表项组成的页表称为TLB(Translation Lookside Buffer)

(2)TLB的页表结构:tag + 主存中的页表项

当采用全相连映射时,tag为页表项前面的虚页号。需要把tag和虚页号一一比较

当采用组相联映射时,tag被分为tag+index,虚页号的高位为tag,虚页号的低位为index,做组内索引(属于组内第几行)

    1.段式存储是根据程序逻辑,给程序分段。使得每段大小不同。这种虚拟地址划分方法适合程序设计

    2.段式存储的虚拟地址由段号和段内偏移地址组成。段式虚拟存储器到物理地址的映射通过段表实现

    3.段式虚拟存储会造成空页

    1.段页式虚拟存储,先把程序按照逻辑分成段,再把每段分成固定大小的页。

    2.程序对主存的调入调出是按照页面进行的;但他有可以根据段实现共享和保护

    3.缺点是段页式虚拟地址转换成物理地址需要查询2个表:段表和页表。段表找到相应页表的位置,页表找到想也页的位置

    4.段页式细腻地址的结构可以为以下形式:

            程序地址: 用户号(进程pid) | 段号 | 页号 | 页内偏移地址

(1)某计算机的cache块工16块,采用二路组相联映射方式,每个主存块大小为32字节,按照字节编制。则主存129号单元的主存块硬装如刀cache的组号是:(C)A、0      B、2      C、4      D、6

解:二路组相联,所以每组2块,共有16/2=8组,所以组号占3位。

      每块32字节,所以块内地址占5位。

      129转化为二进制:1000 0001:前3位为组号,100:=4

(2)假设用若干个2K4位的芯片组成一个8K8位的存储器,则地址0B1FH所在芯片的最小地址为:

解:用2片组成一行,共4行,所以片选地址占2位。片内地址有2k=211,所以占11位

      0B1FH:000|0 1|011 0001 1111 这三段为前缀,片选地址,片内地址。

      该片芯片的最小地址是片内地址全0:000|0 1|000 0000 0000 = 0800H

(3)某计算机的主存地址空间大小为256MB,按字节编址,指令cache和数据cache分离,均有8个cache行,每行大小为64B,数据cache采用直接映射方式,现有两个程序A,B对数组int a[256][256]进行遍历,程序A按行遍历,程序B按列遍历。假定int类型数据用32位补码表示,数组a按行优先方式存储,其地址为320(十进制)。

问:(1) 若不考虑cache一致性维护和替换算法所需的控制位,则数据cache的总容量占多少?

      (2) 数组元素a[0][31]和a[1][1]各自所在主存块对应的cache行号分别为多少(cache从0行开始)?

      (3)程序A和B的数据访问命中率各自为多少?哪个程序的执行时间更短?

解:(1) 因为cache的总容量是cache每行的数据存储大小+tag位+数据是否有效位+其他一致性控制位。

          主存地址空间256MB,占28位。直接映射方式,8行,行号占3位。每行64B,所以块内地址占6位,因此,tag占28-3-6=19位

          每行有一个数据有效位。因此,cache共(19+1+648)8 = 532字节

      (2) 因为int类型占32位,所以一个int占4B。a[0][31] = 320 + 314 = 444 a1 = 320 + 4(256+1) = 1348。

          块内地址占6位,直接映射下行号占3位,因此444 = 110 | 111100,所以行号为6

          1348 = 10 | 101 | 000100,所以行号为5

      (3) 因为1行cache占64B,每个int数占4B,所以一行有16个数。第一个数会因cache缺失而不命中,然后调入cache。,使得后面的15个int访问全部命中。所以命中率为1516 对于程序B,每次调入16个数,小于数组每行的128个元素,因此每次都不会命中,命中率为0

热点内容
aspcms图片上传 发布:2024-11-27 06:32:20 浏览:415
qq空间本地上传的音乐 发布:2024-11-27 06:14:50 浏览:920
办公室云电脑服务器 发布:2024-11-27 06:11:45 浏览:26
有趣的php 发布:2024-11-27 05:58:13 浏览:960
php网页开发 发布:2024-11-27 05:56:09 浏览:956
手机密码锁忘记怎么办 发布:2024-11-27 05:54:35 浏览:153
安卓怎么获取联系人位置 发布:2024-11-27 05:53:58 浏览:49
最新云呼服务器地址 发布:2024-11-27 05:49:35 浏览:944
我的世界服务器玩家 发布:2024-11-27 05:49:20 浏览:320
python正则compile 发布:2024-11-27 05:19:05 浏览:29