存储器管理:层次结构与程序装入

需积分: 10 0 下载量 118 浏览量 更新于2024-07-11 收藏 2.62MB PPT 举报
"页目录地址-chapter4存储器管理" 在操作系统中,存储器管理是至关重要的一个部分,它涉及到如何有效地使用有限的内存资源,确保程序能够高效地运行。本章主要探讨了存储器的层次结构、程序的装入和链接等主题。 首先,存储器的层次结构是由多种不同速度、容量和价格的存储设备组成,从最快到最慢分别是寄存器、高速缓存(Cache)、主存储器和外存。这种层次结构是为了平衡性能和成本,例如,高速缓存用于减少CPU与主存之间的通信延迟,而磁盘缓存则利用内存的一部分作为临时存储,优化磁盘I/O操作。 主存储器是系统中用于存放程序和数据的主要区域,具有中等速度和中等容量,但其内容是易失的。寄存器位于CPU内部,与CPU紧密配合,提供最快的访问速度。高速缓存Cache,尽管容量小,但速度极快,用于缓解CPU与内存速度不匹配的问题。磁盘缓存则不是物理硬件,而是操作系统管理的一部分,用于提升磁盘数据的读取效率。 在程序的装入和链接过程中,程序首先通过编辑和编译阶段生成源文件和目标模块,然后通过链接器将多个目标模块合并成可执行文件。在这个过程中,符号地址被解析为物理地址。程序的装入分为绝对装入方式和相对装入方式。绝对装入方式在编译时就确定了程序在内存中的位置,适合单道程序环境,但对多道程序系统不灵活。相对装入方式允许程序在内存的任意位置装入,更适用于动态分配内存的环境。 4.2.1程序的装入还提到了动态装入和可重定位装入。动态装入是在程序执行时才装入内存,而可重定位装入则允许程序在内存的任意位置运行,通过地址转换机制解决了程序地址与内存地址的匹配问题。 此外,还有运行时链接和装载时链接。运行时链接在程序运行时解析外部引用,而装载时链接在程序加载到内存时完成所有链接。这种区别主要影响程序的启动时间和内存占用。 在页目录地址的讨论中,涉及到了虚拟地址空间的管理。虚拟地址是程序在执行时使用的地址,由页目录、页表和页位移共同决定。页目录用于索引页表,页表则包含了内存块(也称为页框)的地址,页位移是页内偏移量。二级页表结构用于扩大地址空间,使得更多的虚拟页面可以映射到物理内存。 存储器管理的核心是优化内存的使用,包括合理地组织存储层次、有效地装入和链接程序,并通过虚拟地址映射来管理复杂内存空间。这些知识对于理解和设计操作系统至关重要。

7.main方法参数的使用。阅读下面的代码。 --------程序清单------------------------------------------------------------------------------------------------------------ package chapter06; public class CommandLine { public static void main(String[] args) { if (args.length == 0) { System.out.println("Hello, welcome to Java!"); } else { switch (args[0]) { case "-draw" -> { for (int i = 0; i < 3; i++) { for (int j = i; j < 3; j++) System.out.print("*"); System.out.println(); } } case "-add" -> {// + int sum = 0; for (int i = 1; i < args.length; i++) { int num = Integer.parseInt(args[i]); sum += num; if (i != 1 && num > 0) System.out.print("+"); System.out.print(args[i]); } System.out.println("=" + sum); } default -> { System.out.println("no such command-line option"); } } } } } --------------------------------------------------------------------------------------------------------------------------------- 以下操作都在该类源文件所在的文件夹下。 (a)(2分)编译完该类后,如果在终端通过输入命令“java chapter06.CommandLine -cdl Wenzhou”运行该类,此时main方法的形参args其每个元素的值是什么? (b)(16分)分别通过以下命令运行该程序,其输出结果是什么?请简单说明你的理由(没有理由不给分)。 java chapter06.CommandLine -add 12 31 44 -1 -2 java chapter06.CommandLine -draw java chapter06.CommandLine java chapter06.CommandLine -cdl (c)(2分)在Eclipse里设置运行配置,然后得到(b)中第1条命令运行效果并截图。 答:

134 浏览量