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

📄 操作系统引导探究.htm

📁 操作系统引导探究
💻 HTM
📖 第 1 页 / 共 5 页
字号:
lang=EN>CPU</SPAN><SPAN   
style="FONT-FAMILY: SimSun; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">将物理地址页</SPAN><SPAN   
lang=EN>1</SPAN><SPAN   
style="FONT-FAMILY: SimSun; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">中的内容放到硬盘上的一个地方(虚拟内存),然后将线性地址中的页</SPAN><SPAN   
lang=EN>5</SPAN><SPAN   
style="FONT-FAMILY: SimSun; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">载入物理内存页</SPAN><SPAN   
lang=EN>1</SPAN><SPAN   
style="FONT-FAMILY: SimSun; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">中。这里就当可以比较明显的区别什么是线性地址,什么是物理地址了。</SPAN></P>  
<P class=MsoNormal style="TEXT-INDENT: 21.75pt"><SPAN   
style="FONT-FAMILY: SimSun; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">然而,当不使用分页机制的时候,线性地址就会被</SPAN><SPAN   
lang=EN>CPU</SPAN><SPAN   
style="FONT-FAMILY: SimSun; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">当做物理地址来使用,线性地址会被直接放在</SPAN><SPAN   
lang=EN>CPU</SPAN><SPAN   
style="FONT-FAMILY: SimSun; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的地址信号线上,而在编写应用程序的时候,我们通常使用却是另一种地址——逻辑地址,从逻辑地址到线性地址也存在着与上述机制类似的一种映射机制,不过这个机制常常称为<SPAN   
style="COLOR: blue">“段模式”</SPAN>,它是由操作系统与</SPAN><SPAN lang=EN>CPU</SPAN><SPAN   
style="FONT-FAMILY: SimSun; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">硬件共同完成的。操作系统的任务就是分配映射表,而</SPAN><SPAN   
lang=EN>CPU</SPAN><SPAN   
style="FONT-FAMILY: SimSun; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">硬件的任务就是按着映射表进行映射。而这样的映射表在操作系统编写中又称之为“描述符表”,有两种重要的描述符表,一种是<SPAN   
style="COLOR: blue">“全局描述符表(</SPAN></SPAN><SPAN lang=EN   
style="COLOR: blue">GDT</SPAN><SPAN   
style="COLOR: blue; FONT-FAMILY: SimSun; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">)”</SPAN><SPAN   
style="FONT-FAMILY: SimSun; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">,另一种是<SPAN   
style="COLOR: blue">“局部描述符表(</SPAN></SPAN><SPAN lang=EN   
style="COLOR: blue">LDT</SPAN><SPAN   
style="COLOR: blue; FONT-FAMILY: SimSun; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">)”</SPAN><SPAN   
style="FONT-FAMILY: SimSun; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">,这两种表的用途不同,但它们的用法却是近似的,下面我们就来描述一下全局描述符表。</SPAN></P>  
<P class=MsoNormal style="TEXT-INDENT: 21.75pt"><SPAN   
style="FONT-FAMILY: SimSun; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">说到表,学过数据结构的人都知道,其实它就是一种数据结构,全局描述符表也是一种数据结构,当这种结构放在一块连续的内存这间中就称之为表了。表由表项组成,全局描述符表由它的表符全局描述符组成,其实单纯的术语就叫<SPAN   
style="COLOR: blue">“描述符”</SPAN>,只因为它放在全局描述符表中就成了全局描述符了。这个描述符由</SPAN><SPAN   
lang=EN>8</SPAN><SPAN   
style="FONT-FAMILY: SimSun; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">个字节组成,下面我们就来看看它的结构:</SPAN></P>  
<P class=MsoNormal><SPAN lang=EN></SPAN></P>  
<P class=MsoNormal style="TEXT-ALIGN: center" align=center><SPAN lang=EN><IMG   
alt="" src="操作系统引导探究_files/20044621285758.gif" onload=""><BR>(</SPAN><SPAN   
style="FONT-FAMILY: SimSun; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">图六</SPAN><SPAN   
lang=EN>)</SPAN></P>  
<P class=MsoNormal style="TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><SPAN   
lang=EN>TYPE</SPAN><SPAN   
style="FONT-FAMILY: SimSun; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">:</SPAN>   
<SPAN   
style="FONT-FAMILY: SimSun; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">表明此段的类型,</SPAN><SPAN   
lang=EN>4</SPAN><SPAN   
style="FONT-FAMILY: SimSun; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">位中的最高位被置</SPAN><SPAN   
lang=EN>1</SPAN><SPAN   
style="FONT-FAMILY: SimSun; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的时候表是它是数据段,相应的于下的三位,从左到右依次为</SPAN><SPAN   
lang=EN>E</SPAN><SPAN   
style="FONT-FAMILY: SimSun; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">、</SPAN><SPAN   
lang=EN>W</SPAN><SPAN   
style="FONT-FAMILY: SimSun; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">、</SPAN><SPAN   
lang=EN>A</SPAN><SPAN   
style="FONT-FAMILY: SimSun; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">,即数据段的</SPAN><SPAN   
lang=EN>TYPE</SPAN><SPAN   
style="FONT-FAMILY: SimSun; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">为:</SPAN><SPAN   
lang=EN>0EWA</SPAN><SPAN   
style="FONT-FAMILY: SimSun; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">。其中</SPAN><SPAN   
lang=EN>E</SPAN><SPAN   
style="FONT-FAMILY: SimSun; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">表示向下增长位,置</SPAN><SPAN   
lang=EN>1</SPAN><SPAN   
style="FONT-FAMILY: SimSun; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">时表示向下增长,</SPAN><SPAN   
lang=EN>W</SPAN><SPAN   
style="FONT-FAMILY: SimSun; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">表示可写位,置</SPAN><SPAN   
lang=EN>1</SPAN><SPAN   
style="FONT-FAMILY: SimSun; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">表洋可定,</SPAN><SPAN   
lang=EN>A</SPAN><SPAN   
style="FONT-FAMILY: SimSun; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">表示被访问位(如果</SPAN><SPAN   
lang=EN>CPU</SPAN><SPAN   
style="FONT-FAMILY: SimSun; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">访问了它,此位将会被置</SPAN><SPAN   
lang=EN>1</SPAN><SPAN   
style="FONT-FAMILY: SimSun; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">)。</SPAN></P>  
<P class=MsoNormal style="TEXT-INDENT: 21.75pt"><SPAN lang=EN>S</SPAN><SPAN   
style="FONT-FAMILY: SimSun; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">:为</SPAN><SPAN   
lang=EN>1</SPAN><SPAN   
style="FONT-FAMILY: SimSun; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">时表示其为代码或数据段,为</SPAN><SPAN   
lang=EN>0</SPAN><SPAN   
style="FONT-FAMILY: SimSun; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">时表示为系统段</SPAN></P>  
<P class=MsoNormal style="TEXT-INDENT: 21.75pt"><SPAN lang=EN>DPL</SPAN><SPAN   
style="FONT-FAMILY: SimSun; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">:表示物权级,从</SPAN><SPAN   
lang=EN>00~11</SPAN><SPAN   
style="FONT-FAMILY: SimSun; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">,共</SPAN><SPAN   
lang=EN>0</SPAN><SPAN   
style="FONT-FAMILY: SimSun; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">,</SPAN><SPAN   
lang=EN>1</SPAN><SPAN   
style="FONT-FAMILY: SimSun; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">,</SPAN><SPAN   
lang=EN>2</SPAN><SPAN   
style="FONT-FAMILY: SimSun; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">,</SPAN><SPAN   
lang=EN>3</SPAN><SPAN   
style="FONT-FAMILY: SimSun; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">四个特权级</SPAN></P>  
<P class=MsoNormal style="TEXT-INDENT: 21.75pt"><SPAN lang=EN>P</SPAN><SPAN   
style="FONT-FAMILY: SimSun; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">:为</SPAN><SPAN   
lang=EN>0</SPAN><SPAN   
style="FONT-FAMILY: SimSun; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">是表示此描术符无效,不能被使用</SPAN></P>  
<P class=MsoNormal style="TEXT-INDENT: 21.75pt"><SPAN lang=EN>AVL</SPAN><SPAN   
style="FONT-FAMILY: SimSun; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">:留给系统程序随便用的</SPAN></P>  
<P class=MsoNormal style="TEXT-INDENT: 21.75pt"><SPAN lang=EN>D/B</SPAN><SPAN   
style="FONT-FAMILY: SimSun; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">:为</SPAN><SPAN   
lang=EN>0</SPAN><SPAN   
style="FONT-FAMILY: SimSun; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的时候表示它是一个</SPAN><SPAN   
lang=EN>16</SPAN><SPAN   
style="FONT-FAMILY: SimSun; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">位的段,为</SPAN><SPAN   
lang=EN>1</SPAN><SPAN   
style="FONT-FAMILY: SimSun; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">时表示它是一个</SPAN><SPAN   
lang=EN>32</SPAN><SPAN   
style="FONT-FAMILY: SimSun; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">位的段</SPAN></P>  
<P class=MsoNormal style="TEXT-INDENT: 21.75pt"><SPAN lang=EN>G</SPAN><SPAN   
style="FONT-FAMILY: SimSun; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">:为</SPAN><SPAN   
lang=EN>0</SPAN><SPAN   
style="FONT-FAMILY: SimSun; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">时,表示段限的单位是</SPAN><SPAN   
lang=EN>1</SPAN><SPAN   
style="FONT-FAMILY: SimSun; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">字节,为</SPAN><SPAN   
lang=EN>1</SPAN><SPAN   
style="FONT-FAMILY: SimSun; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">时表示段限的单位是</SPAN><SPAN   
lang=EN>4KB</SPAN><SPAN   
style="FONT-FAMILY: SimSun; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">,并且段偏移量的最低</SPAN><SPAN   
lang=EN>12</SPAN><SPAN   
style="FONT-FAMILY: SimSun; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">位将不被检测是否在段限之中。(这一点现在可能不好理解,但我下面马上会解释)。</SPAN></P>  
<P class=MsoNormal style="TEXT-INDENT: 21.75pt"><SPAN   
style="FONT-FAMILY: SimSun; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">这里面有两个部份,比较有意思,一个就是<SPAN   
style="COLOR: blue">“基址”</SPAN>,一个就是<SPAN   
style="COLOR: blue">“段限”</SPAN>。基址应当比较好理解,它给出的是一个段在物理内存中的地址,对于“段限”,顾名思义,就是段大小的限制。不过它有点特别,对于一个段的最大可访问的地址</SPAN><SPAN   
lang=EN>CPU</SPAN><SPAN   
style="FONT-FAMILY: SimSun; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">是通过下面的公式计算得到的:</SPAN></P>  
<P class=MsoNormal style="TEXT-ALIGN: center" align=center><SPAN lang=EN   

⌨️ 快捷键说明

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