⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 3。3.htm

📁 浙江大学计算机学院计算机组成教材《计算机组成与设计》(潘学增)的课堂教学课件。
💻 HTM
字号:
<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<meta name="GENERATOR" content="Microsoft FrontPage 4.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<title>虚拟存储(3)</title>
<meta name="Microsoft Theme" content="arcs 011">
</head>

<body background="../images/arctile.jpg" bgcolor="#FFFFFF" text="#000000" link="#3399FF" vlink="#666666" alink="#FF9900">

 
 
<p align="center"> <font color="#000000"><font size="4">&nbsp;   
</font>  
</font>  
<font size="6">虚拟存储(3)&nbsp;</font><font color="#000000">&nbsp;  
</font>  
</p>  
  
<p align="right"><font color="#000000"><a href="Index.htm"><img border="0" src="IMAGES/BACK.GIF" align="left" width="60" height="45"></a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="3。2.htm"><img border="0" src="IMAGES/PREV.GIF" width="60" height="45"></a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;   
<a href="第四节.htm"><img border="0" src="IMAGES/FORW.GIF" width="60" height="45"></a></font>    
</p>    
    
<p><font size="4" color="#000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;    
</font>    
</p>    
    
<p><font size="4" color="#000000">&nbsp; </font>        
<font size="4" color="#000000">4.关于写操作</font>        
</p>        
        
<p><font color="#000000" size="4">&nbsp;&nbsp;&nbsp; 应用copy back技术:当替换页面时,把主存中该页复制回辅存,也叫写回write back)。其优点是:磁盘的传输时间很少,而读写时间很长,所以在虚拟页表中,利用回写比&nbsp;写通有效的多.为了标志某页是否需写回,可在页表中增加一位修改位(dirty bit)。当dirty位为1时,表示该页正被写入内存。<br>         
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font>        
</p>        
        
<p><font color="#000000" size="4">&nbsp; 5.快表TLB(translation –lookaside  buffer)</font>         
</p>         
         
<p><font color="#000000" size="4">&nbsp;&nbsp; 页表太大了,必须存放在主存中。这样的话,主存的执行时间就会增加1倍,先是&nbsp;获得物理地      
址,再读取数据。当一个虚页号被使用时,它通常会再度被使用。所以出现了快&nbsp;表。TLB由CACHE构成,用来存放最近使用的页表项。</font>        
</p>        
        
<p><font color="#000000" size="4">&nbsp;&nbsp;&nbsp;&nbsp; a.构成:TLB由虚页号、实页号、REFERENCE位和DIRTY位构成。</font>        
</p>        
        
<p><font color="#000000" size="4">&nbsp;&nbsp;&nbsp;&nbsp; b.工作过程<br>         
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>         
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;先在快表中找虚页号,如果命中,则实页号用来构成地址并将REFERENCE位置1&nbsp;(写操作还需将&nbsp; DIRTY位置1)。如果失效,则需判断是缺页失效,还是TLB失效。如果是缺页失效,则会发生中断。如果仅仅是TLB失效,该页存在与主存中,则需将该页调入快表,重新访问。快表的一些数据特性见下图:</font>         
</p>         
         
<div align="center">     
  <center>     
  <table border="1" width="73%" bordercolordark="#CC9966" bordercolorlight="#FFCC66">     
    <tr>     
      <td width="26%"><font color="#000000" size="4">Block size</font></td>       
      <td width="74%"><font color="#000000" size="4">1-2 page-table        
        entries(typically 4-8 bytes each)</font></td>       
    </tr>       
    <tr>       
      <td width="26%"><font color="#000000" size="4">Hit time</font></td>       
      <td width="74%"><font color="#000000" size="4">1/2 to 1 clock cycle</font></td>       
    </tr>       
    <tr>       
      <td width="26%"><font color="#000000" size="4">Miss penalty</font></td>       
      <td width="74%"><font color="#000000" size="4">10-30 clock cycles</font></td>       
    </tr>       
    <tr>       
      <td width="26%"><font color="#000000" size="4">Miss rate</font></td>       
      <td width="74%"><font color="#000000" size="4">0.01%-1%</font></td>    
    </tr>    
    <tr>    
      <td width="26%"><font color="#000000" size="4">TLB size</font></td>       
      <td width="74%"><font color="#000000" size="4">32-1.024 entries</font></td>       
    </tr>       
  </table>       
  </center>     
</div>     
<p><font color="#000000" size="4"><br>      
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;c. 写操作</font>          
</p>          
          
<p><font color="#000000" size="4">&nbsp;&nbsp;&nbsp;&nbsp; TLB采用回写的方法,因为我们期望TLB的失效率很低。<br>         
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font>         
</p>         
         
<p><font color="#000000" size="4">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;d. TLB的转换方法</font>           
</p>           
           
<p><font color="#000000" size="4">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 大多数的TLB采用全相联,因为全相联的低失效率,而且TLB比较小,代价不会很高。由于快      
表的频繁的失效,我们负担不起软件算法。但有一      
些系统采用LRU的硬件算法和随&nbsp;机算法。</font>         
</p>         
         
<p><font color="#000000" size="4">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e. 举例(图7.19)</font>          
</p>          
          
<p><font color="#000000" size="4">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <img border="0" src="IMAGES/第三5.gif" width="485" height="650"><br>         
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;上图显示了TLB结构和如DECStation 3100中的一个cache结构。TLB共有64个单</font>          
</p>          
          
<p><font color="#000000" size="4">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;      
元组成,包含在PROCESSOR中。<br>         
</font>         
</p>         
         
<p><font color="#000000" size="4">&nbsp;&nbsp;6.虚拟存储系统的保护机制。</font>       
</p>       
       
<p><font color="#000000" size="4">&nbsp;&nbsp;&nbsp;&nbsp; 因允许多道程序共享物理存储空间,就存在保护各自的程序不被其他程序冲掉的问题。</font>       
</p>       
       
<p><font color="#000000" size="4">&nbsp;&nbsp;&nbsp;&nbsp;保护的目的:a.某程序不破坏其他程序执行,也就是保护其他区域</font>       
</p>       
       
<p><font color="#000000" size="4">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;      
b.某程序保护自己的正常执行</font>        
</p>        
        
<p><font color="#000000" size="4">&nbsp;&nbsp;&nbsp;为了存储保护,硬件基本支持是:</font>        
</p>        
        
<p><font color="#000000" size="4">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;      
a. 用户与用户进程之间保护<br>         
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>         
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; b. 用户与系统之间的保护</font>          
</p>          
          
<p><font color="#000000" size="4">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;      
c. 保护由谁管理-----通常由操作系统管理<br>          
</font>          
</p>          
          
<p>          
<font color="#000000" size="4">        
&nbsp;&nbsp;&nbsp;&nbsp;A. 管态和用户态(supervisor mode and user mode)</font>          
</p>          
          
<p>          
<font color="#000000" size="4">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 指示是核心进程(kernel process),还是user process。</font>          
</p>          
          
<p>          
<font color="#000000" size="4">        
&nbsp;&nbsp; B. 提供访问保护位,指明用户程序只能读,不能写,包括管态/用户态位和页表指针保护位。</font>         
</p>         
         
<p>         
<font color="#000000" size="4">        
&nbsp;&nbsp;C.提供一种状态转换机制,CPU能在用户态和管态      
之间进行转换。从用户态转换到管态,由系统调用指令完成。从管态到用户态,由用户进程激活。</font>        
</p>        
        
<p><font color="#000000" size="4">        
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 例如在MIPS机中,指令将用户态转换到管态,该指令转换到OS程序执行空间某一单元执行指令。</font>        
</p>        
        
<p>       
<font color="#000000" size="4">      
&nbsp;&nbsp;在页面保护机制中,访问保护有三种形式:读、写、执行。这样可以形成七种方式:<br>        
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;           
    000------不允许任何访问<br>           
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;           
        100------只读<br>           
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;           
        111------均可<br>           
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;           
        110------只许读、写,不许执行<br>           
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;           
        001------只许执行<br>           
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;           
        010------只许写<br>           
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;           
        101------不许写</font>         
</p>         
         
<p>          
            
</p>           
           
<p>          
<font color="#000000" size="4">7.缺页失效和快表失效处理</font>         
</p>         
         
<p><font color="#000000" size="4">&nbsp;&nbsp;&nbsp; 快表失效时有两种情况:</font>          
</p>          
          
<p><font color="#000000" size="4">&nbsp;&nbsp; (1) 访问页在内存中,只需把该页表项调入快表中<br>          
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>          
&nbsp;&nbsp;&nbsp;(2) 访问页不在内存中,则页失效。</font>           
</p>           
           
<p><font size="4"><font color="#000000">&nbsp;&nbsp;&nbsp;&nbsp; 页失效是一种异常中断,需要保护断点,利用EPC(exception program&nbsp; counter)来保护断点。断点应该及时保存,否则会出错。例如LW$1,0($1)    
指令,如果不及时阻止在$1中写,就不          
能在$1重新取指令。</font></font>          
</p>          
          
<p><font color="#000000" size="4">&nbsp;&nbsp;&nbsp;&nbsp;如果是缺页中断,则需保护当前进程的现场。指令虚地址在EPC中,数据虚地址要检查指令以找到基地址和偏移段,才能计算出来。</font>         
</p>         
         
<p><font color="#000000" size="4">&nbsp; 缺页中断一般过程如下:</font>         
</p>         
         
<p><font color="#000000" size="4">&nbsp; (1) 利用虚地址查找页表,求出访问页在磁盘上的实际地址。<br>         
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>          
&nbsp; (2) 选择一个内存页面,如果该页设置了改写位标志为1,则首先要把该</font>         
</p>         
         
<p><font color="#000000" size="4">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;      
页写入磁盘。</font>         
</p>         
         
<p><font color="#000000" size="4">&nbsp; (3) 从磁盘上读取访问页数据,存入选中的物理页面。</font>          
</p>          
          
<p><font size="4"><font color="#000000">&nbsp;&nbsp;第三步完成后,操作系统恢复缺页中断引起终止进程的状态,继续执行终止&nbsp;的那条指令,从核心态返回到用户态。</font></font>        
</p>        
        
<p><font color="#000000" size="4">&nbsp;&nbsp;&nbsp;&nbsp;<br>        
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>        
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>        
</font>        
</p>        
        
      
      
</body>      
      
</html>      

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -