操作系统--课堂问答笔记15--习题答案

课堂笔记学习视频来自 操作系统
说明:其他”课堂问答笔记“也在”操作系统“专栏

【4-2、4-3】

本节课课后讨论汇总:

  1. 简要描述一下程序链接的过程?有几种链接方式?
    答:链接过程是将程序的多个模块(可能是自己编写的也可能是调用别人的)合并以生成可执行目标文件。
    3种方式:
    静态链接(Static Linking)方式:在程序运行之前,先将各目标模块及它们所需的库函数链接成一个完整的装配模块,以后不再拆开。视频中讲解的ABC三个模块的链接就是这种方式,可以理解为一开始就把所有程序打个大包装入内存(全部程序装入后运行);
    装入时动态链接(Load-time Dynamic Linking)方式:用户源程序编译后所得到的一组目标模块,在装入内存时,采用边装入边链接的链接方式。即在装入一个目标模块时,若发生一个外部模块调用事件,将引起装入程序去找出相应的外部目标模块,并将它装入内存;也就是别人的东西临时装入,并不是一开始打个大包装入,装入时发现缺什么再去找什么装入(全部程序装入后运行);
    运行时动态链接(Run-time Dynamic Linking)方式:将所有可能要运行到的模块全部都装入内存,并在装入时全部链接在一起。显然这是低效的,因为往往会有部分目标模块根本就不运行(如try-catch中的catch模块),因此比较好的方法是程序运行到什么地方需要什么模块时,再临时装入该模块。也就是一开始只装入必须的,运行时发现缺什么再去找什么装入(部分程序装入后就可运行)。

  2. 在将一个装入模块装入内存时,有哪三种装入方式?
    答:也是3种方式:
    绝对装入方式(Absolute Loading Mode)方式:当计算机系统很小,且仅能运行单道程序时,完全有可能知道程序将驻留在内存的什么位置。此时可以采用绝对装入方式。用户程序经编译后,将产生绝对地址(即物理地址)的目标代码(不存在地址转换的过程)。 绝对装入方式只能将目标模块装入到内存中事先指定的位置,这只适用于单道程序环境。
    可重定位装入方式(Relocation Loading Mode)方式:而在多道程序环境下,编译程序不可能预知经编译后所得到的目标模块应放在内存的何处。因此,对于用户程序编译所形成的若干个目标模块,它们的起始地址通常都是从0开始的,程序中的其它地址也都是相对于起始地址计算的(程序运行之前进行逻辑地址或相对地址到物理地址的转换)。 可重定位装入方式可将装入模块装入到内存中任何允许的位置,但该方式并不允许程序运行时在内存中移动位置。
    动态运行时的装入方式(Dynamic Run-time Loading)方式:程序在运行过程中在内存的位置可能发生变化,装入程序把装入模块装入内存后,并不立即把装入模块转换为物理地址,而是把这种地址转换推迟到程序真正要执行时才进行,这种方式允许程序在内存中移动,且整个程序不要求占用连续的空间,其是实现虚拟内存的基础。

  3. 再复习一下内存管理的主要目标。
    答:内存管理的主要功能有:内存分配、内存保护、地址映射和内存扩充。
    内存分配:为每道程序分配内存,有连续分配(程序占用一段连续的内存空间)和离散分配方式(程序可以分散在内存的不连续空间)。
    内存保护:确保每道用户程序都只在自己的内存空间运行,彼此互不干扰。
    地址映射:将地址空间的逻辑地址转换为内存空间与对应的物理地址,与分配方式有关。
    内存扩充:利用对换技术、虚拟存储技术实现请求调用功能,置换功能等。

  4. 补充连续内存分配方式
    答:连续分配方式:为一个用户程序分配一个连续的内存空间。
    连续分配方式进一步分为4种:
    单一连续分配:用于早期的单道处理系统中,整个内存空间仅提供给一个程序使用(当然这个程序也是占用一段连续的内存空间);
    固定分区分配:固定分区分配是最简单的一种多道程序存储管理方式,它将用户内存空间划分为若干个固定大小的区域,每个分区只装入一道作业;
    动态分区分配:这种分区方法不预先将内存划分,而是在进程装入内存时,根据进程的大小动态地建立分区,并使分区的大小正好适合进程的需要。因此系统中分区的大小和数目是可变的。
    动态重定位分区分配:当内存中出现几个互不邻接的小分区,它们单独的容量不能满足作业的大小,但它们的容量总和大于作业的要求时,若想把作业装入,可采用的一种方法是:将内存中的所有作业进行移动,使它们全部相邻接,这样,即可把原来分散的多个小分区拼接成一个大分区,这时就可把作业装入该区。即通过“拼接”或“紧凑”实现动态重定位分区分配。

  5. 固定分区分配方式的主要特点?
    答:系统将内存划分为若干固定的分区(分区大小都相等或分区大小不等,一旦分区确定不再更改其大小),当作业申请内存时,系统为其选择一个适当的分区,并装入内存运行。由于分区大小是事先固定的,因而可容纳作业的大小受到限制,而且当用户作业的地址空间小于分区的存储空间时,浪费了一些存储空间。
    优点:可用于多道程序系统最简单的存储分配,无外部碎片(还没有被分配出去(不属于任何进程),但由于分区太小了无法分配给申请内存空间的新进程的内存空闲区域)。
    缺点:不能实现多进程共享一个主存区,所以存储空间利用率低,有内部碎片(已经被分配出去(能明确指出属于哪个进程)的分区,却不能被利用的内存空间)。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

三桥君

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值