📄 ch5.htm
字号:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<meta http-equiv="Content-Language" content="zh-cn">
<meta name="GENERATOR" content="Microsoft FrontPage 4.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<title>操作系统-第五章</title>
<style fprolloverstyle>A:hover {color: red; font-weight: bold}
</style>
</head>
<body bgcolor="#0099FF" link="#00FFFF" vlink="#008000">
<center>
<table border="1" width="80%" bgcolor="#0000FF" height="1">
<tr>
<td width="100%" align="center" height="53" colspan="2"><font size="5" face="黑体" color="#FFFFFF"><font LANG="ZH-CN">第五章</font>
存储器管理
</font></td>
</tr>
<tr>
<td width="100%" align="center" height="147" colspan="2">
<p style="TEXT-ALIGN: center" align="center"> </p>
<p align="center"><span lang="EN-US" style="mso-bidi-font-size: 10.0pt"><font color="#FFFFFF"><a href="#ch51">5.1
程序的装入和链接<o:p>
</o:p>
</a></font></span></p>
<p style="TEXT-ALIGN: center" align="center"><span lang="EN-US" style="mso-bidi-font-size: 10.0pt"><font color="#FFFFFF"><a href="#ch52">5.2<span style="mso-spacerun: yes">
</span>连续分配存储管理方式<o:p>
</o:p>
</a></font></span></p>
<p style="TEXT-ALIGN: center" align="center"><span lang="EN-US" style="mso-bidi-font-size: 10.0pt"><font color="#FFFFFF"><a href="#ch53">5.3<span style="mso-spacerun: yes">
</span>对换<o:p>
</o:p>
</a></font></span></p>
<p style="TEXT-ALIGN: center" align="center"><span lang="EN-US" style="mso-bidi-font-size: 10.0pt"><font color="#FFFFFF"><a href="#ch54">5.4<span style="mso-spacerun: yes">
</span>分页存储管理方式<o:p>
</o:p>
</a></font></span></p>
<p style="TEXT-ALIGN: center" align="center"><span lang="EN-US" style="mso-bidi-font-size: 10.0pt"><font color="#FFFFFF"><a href="#ch55">5.5
分段存储管理<o:p>
</o:p>
</a></font></span></p>
<p ALIGN="center" style="margin-top: 10"> </td>
</tr>
<tr>
<td width="18%" align="center" height="39"><font LANG="ZH-CN" color="#FFFFFF">作业:</font></td>
<td width="96%" align="center" height="39">
<p align="left"><font color="#FFFFFF"><font LANG="ZH-CN"> </font></font></td>
</tr>
<tr>
<td width="114%" align="center" height="39" colspan="2"><a href="index.htm"><font color="#FFFFFF">返回<<</font></a></td>
</tr>
<tr>
<td width="100%" align="left" height="53" colspan="2">
<p align="center"><span lang="EN-US" style="mso-bidi-font-size: 10.0pt"><font color="#FFFFFF"><a name="ch51"></a>5.1
程序的装入和链接<o:p>
</o:p>
</font></span></p>
<p style="tab-stops: list 26.25pt"><font color="#FFFFFF"><span lang="EN-US">
</span><span style="mso-ascii-font-family: Times New Roman; mso-hansi-font-family: Times New Roman">在多道程序环境下,程序要运行必须为之创建进程,而创建进程的第一件事,就是要将程序和数据装入内存。如何将一个用户源程序变为一个可在内存中执行的程序,通常要经过以下几步:</span></font></p>
<p style="tab-stops: list 26.25pt"><font color="#FFFFFF"><span style="mso-ascii-font-family: Times New Roman; mso-hansi-font-family: Times New Roman">(</span><span lang="EN-US">1</span><span style="mso-ascii-font-family: Times New Roman; mso-hansi-font-family: Times New Roman">)编译。由编译程序(</span><span lang="EN-US">Compiler</span><span style="mso-ascii-font-family: Times New Roman; mso-hansi-font-family: Times New Roman">)将用户源代码编译成若干个目标模块(</span><span lang="EN-US">Object
Module</span><span style="mso-ascii-font-family: Times New Roman; mso-hansi-font-family: Times New Roman">);</span></font></p>
<p style="tab-stops: list 26.25pt"><font color="#FFFFFF"><span style="mso-ascii-font-family: Times New Roman; mso-hansi-font-family: Times New Roman">(</span><span lang="EN-US">2</span><span style="mso-ascii-font-family: Times New Roman; mso-hansi-font-family: Times New Roman">)链接。由链接程序(</span><span lang="EN-US">Linker</span><span style="mso-ascii-font-family: Times New Roman; mso-hansi-font-family: Times New Roman">)将编译后形成的目标模块以及它们所需要的库函数,链接在一起,形成一个装入模块(</span><span lang="EN-US">Load
Module</span><span style="mso-ascii-font-family: Times New Roman; mso-hansi-font-family: Times New Roman">);</span></font></p>
<p style="tab-stops: list 26.25pt"><font color="#FFFFFF"><span style="mso-ascii-font-family: Times New Roman; mso-hansi-font-family: Times New Roman">(</span><span lang="EN-US">3</span><span style="mso-ascii-font-family: Times New Roman; mso-hansi-font-family: Times New Roman">)装入。由装入程序(</span><span lang="EN-US">Loader</span><span style="mso-ascii-font-family: Times New Roman; mso-hansi-font-family: Times New Roman">)将装入模块装入内存。</span></font></p>
<p style="tab-stops: list 26.25pt"><font color="#FFFFFF"><span lang="EN-US"> </span><span lang="EN-US" style="mso-bidi-font-size: 10.0pt">5.1.1<span style="mso-spacerun: yes">
</span>程序的装入<o:p>
</o:p>
</span></font></p>
<p style="tab-stops: list 26.25pt"><font color="#FFFFFF"><span style="mso-ascii-font-family: Times New Roman; mso-hansi-font-family: Times New Roman">一、绝对装入方式(</span><span lang="EN-US">Absolute
Loading Mode</span><span style="mso-ascii-font-family: Times New Roman; mso-hansi-font-family: Times New Roman">)</span></font></p>
<p><font color="#FFFFFF"><span style="mso-ascii-font-family: Times New Roman; mso-hansi-font-family: Times New Roman">二、可重定位装入方式(</span><span lang="EN-US">Relocatable
Loading Mode</span><span style="mso-ascii-font-family: Times New Roman; mso-hansi-font-family: Times New Roman">)</span></font></p>
<p><font color="#FFFFFF"><span style="mso-ascii-font-family: Times New Roman; mso-hansi-font-family: Times New Roman">三、动态运行时装入方式(</span><span lang="EN-US">Dynamic
Run-Time Loading</span><span style="mso-ascii-font-family: Times New Roman; mso-hansi-font-family: Times New Roman">)</span></font></p>
<p><font color="#FFFFFF"><span lang="EN-US"> </span><span lang="EN-US" style="mso-bidi-font-size: 10.0pt">5.1.2
程序的链接<o:p>
</o:p>
</span></font></p>
<p><font color="#FFFFFF"><span style="mso-bidi-font-size: 10.0pt; mso-ascii-font-family: Times New Roman; mso-hansi-font-family: Times New Roman">一、静态链接</span><span lang="EN-US" style="mso-bidi-font-size: 10.0pt"><o:p>
</o:p>
</span></font></p>
<p><span style="mso-ascii-font-family: Times New Roman; mso-hansi-font-family: Times New Roman"><font color="#FFFFFF">在将几个目标模块链接装配成一个装入模块时,需要解决以下两个问题:</font></span></p>
<p><font color="#FFFFFF"><span lang="EN-US">1</span><span style="mso-ascii-font-family: Times New Roman; mso-hansi-font-family: Times New Roman">.对相对地址进行修改</span></font></p>
<p><font color="#FFFFFF"><span lang="EN-US">2</span><span style="mso-ascii-font-family: Times New Roman; mso-hansi-font-family: Times New Roman">.变换外部调用符号</span></font></p>
<p><font color="#FFFFFF"><span style="mso-bidi-font-size: 10.0pt; mso-ascii-font-family: Times New Roman; mso-hansi-font-family: Times New Roman">二、装入时动态链接(</span><span lang="EN-US" style="mso-bidi-font-size: 10.0pt">Load-Time
Dynamic Linking</span><span style="mso-bidi-font-size: 10.0pt; mso-ascii-font-family: Times New Roman; mso-hansi-font-family: Times New Roman">)</span><span lang="EN-US" style="mso-bidi-font-size: 10.0pt"><o:p>
</o:p>
</span></font></p>
<p><span style="mso-ascii-font-family: Times New Roman; mso-hansi-font-family: Times New Roman"><font color="#FFFFFF">装入时动态链接方式有以下优点:</font></span></p>
<p><font color="#FFFFFF"><span lang="EN-US">1</span><span style="mso-ascii-font-family: Times New Roman; mso-hansi-font-family: Times New Roman">.便于软件版本的修改和更新</span></font></p>
<p><font color="#FFFFFF"><span lang="EN-US">2</span><span style="mso-ascii-font-family: Times New Roman; mso-hansi-font-family: Times New Roman">.便于实现目标模块共享</span></font></p>
<p><font color="#FFFFFF"><span style="mso-bidi-font-size: 10.0pt; mso-ascii-font-family: Times New Roman; mso-hansi-font-family: Times New Roman">三、运行时动态链接(</span><span lang="EN-US" style="mso-bidi-font-size: 10.0pt">Run-Time
Dynamic Linking</span><span style="mso-bidi-font-size: 10.0pt; mso-ascii-font-family: Times New Roman; mso-hansi-font-family: Times New Roman">)</span><span lang="EN-US" style="mso-bidi-font-size: 10.0pt"><o:p>
</o:p>
</span></font></td>
</tr>
<tr>
<td width="100%" align="left" height="53" colspan="2">
</center>
<p style="TEXT-ALIGN: center" align="center"><span lang="EN-US" style="mso-bidi-font-size: 10.0pt"><font color="#FFFFFF"><a name="ch52"></a>5.2<span style="mso-spacerun: yes">
</span>连续分配存储管理方式<o:p>
</o:p>
</font></span></p>
<p><span style="mso-ascii-font-family: Times New Roman; mso-hansi-font-family: Times New Roman"><font color="#FFFFFF">连续分配是指为一个用户程序分配一个连续的内存空间。</font></span></p>
<p><font color="#FFFFFF"><span lang="EN-US"> </span><span lang="EN-US" style="mso-bidi-font-size: 10.0pt">5.2.1
单一连续分配<o:p>
</o:p>
</span></font></p>
<p><span style="mso-ascii-font-family: Times New Roman; mso-hansi-font-family: Times New Roman"><font color="#FFFFFF">这是最简单的一种存储管理方式,但只能用于单用户、单任务的操作系统中。采用这种存储管理方式时,内存分为以下两个分区:</font></span></p>
<p><font color="#FFFFFF"><span style="mso-ascii-font-family: Times New Roman; mso-hansi-font-family: Times New Roman">(</span><span lang="EN-US">1</span><span style="mso-ascii-font-family: Times New Roman; mso-hansi-font-family: Times New Roman">)系统区。</span></font></p>
<p><font color="#FFFFFF"><span style="mso-ascii-font-family: Times New Roman; mso-hansi-font-family: Times New Roman">(</span><span lang="EN-US">2</span><span style="mso-ascii-font-family: Times New Roman; mso-hansi-font-family: Times New Roman">)用户区。</span></font></p>
<p><font color="#FFFFFF"><span lang="EN-US"> </span><span lang="EN-US" style="mso-bidi-font-size: 10.0pt">5.2.2
固定分区分配<o:p>
</o:p>
</span></font></p>
<p><font color="#FFFFFF"><span style="mso-bidi-font-size: 10.0pt; mso-ascii-font-family: Times New Roman; mso-hansi-font-family: Times New Roman">一、划分分区的方法</span><span lang="EN-US" style="mso-bidi-font-size: 10.0pt"><o:p>
</o:p>
</span></font></p>
<p><span style="mso-ascii-font-family: Times New Roman; mso-hansi-font-family: Times New Roman"><font color="#FFFFFF">将内存空间划分为若干个固定大小的分区,可用下述两种方法:</font></span></p>
<p><font color="#FFFFFF"><span lang="EN-US">1</span><span style="mso-ascii-font-family: Times New Roman; mso-hansi-font-family: Times New Roman">.分区大小相等</span></font></p>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -