操作系统复习

操作系统复习

一、存储器管理

1、存储器的层次结构

​ 目前我们的电脑中的存储器都采用多层结构,为什么呢?因为在计算机执行时需要很多数据,这就意味着需要存储器来存储,所以要求对存储器的访问速度能跟上CPU的处理速度,所以存储器需要满足三个条件:快、大、便宜,目前无法同时实现,所以采用多层结构来代替。

1)存储器的多层结构

​ 其中CPU寄存器和主存储器被称为可执行存储器。其访问速度不需要IO设备,所以比辅存快很多。

2)主存储器

就是内存,其功能:

  • 存储分配和回收
  • 地址变换和重定位
  • 存储共享和保护
  • 存储器扩充
3)寄存器

​ 和CPU一样的速度,很快。

4)高速缓存

​ 为了缓和内存与处理机的速度矛盾,设置高速缓存(所以告诉缓存在寄存器与内存之间)。但是将数据放在高速缓存中将会出现程序在执行时的局部性规律。

5)磁盘缓存

​ 为了缓和磁盘的IO速度和主存的访问速度。但是磁盘缓存实际是不存在的存储器,而是利用内存中的部分空间暂时存放磁盘中的信息。

2、程序的装入和链接

​ 一个程序的执行实现需要经过几个过程:编译–》链接–》装入内存

1)程序的装入

​ 我们先分析不需要链接库函数的程序,直接编译后装入内存,所以会有几种装入方式:

  • 绝对装入方式

    远古时期的系统很小,处理单程序。所以程序的驻留地址很容易获知,程序中的数据地址即内存中的真实地址,这样程序在装入的时候直接从驻留位置扩展。那么这样的话程序中的逻辑地址和实际内存的地址就是相同的,不需要进行变换。该装入方式就是绝对装入方式。

  • 可重定位装入方式

    程序中的逻辑地址都是从0开始,然后装入内存时拿到真正的程序的起始地址(比如100),此时将程序中的所有逻辑地址都加100。这个过程称为重定位,而此操作在进程装入时此已完成,不可改变,所以称为静态重定位。

  • 动态运行时装入方式

    与静态重定位大致相同,只不过时在进程真正执行时进行逻辑地址的转换。

2)程序的链接

​ 根据链接时间不同分为以下几种链接方式:

  • 静态链接方式

    在程序运行前,事先将各个目标模块以及他们所需的库函数链接程一个完整的装配模块,以后就不拆了,这就是静态链接。这里面涉及到两个操作:

    ​ – 对相对地址进行修改:每个模块的初始地址都是从0开始,要按照调用顺序将其逻辑地址连在一起。

    ​ – 变换外部调用符号:模块调用其他模块一开始是使用外部调用符号,此时要改成相对地址(因为地址已经连在一起了。)

  • 装入时动态链接

    在装入内存时边装入边链接。这样便于修改和更新,因为模块是分开的,所以可以更新。还便于实现对目标模块的共享。

  • 运行时动态链接

    有时候目标模块装入后并不运行,所以这样很低效。所以可以推迟到程序执行时进行链接。也就是说程序不链接直接装入。运行时发现一个被调用的模块尚未装入内存,就让OS去找,找到后装入内存再链接。

3、连续分配存储管理方式

​ 程序装入内存起始就是给程序分配内存空间的过程,所以有一种分配就是连续分配,即分配一段连续的内存。此种分配有以下几类:

1)单一连续分配

​ 单道程序环境下,内存分为系统去和用户区。用户区中只有一个程序,整个内存被该程序独占。这就是单一连续分配。

2)固定分区分配

​ 多道程序环境下,将用户区分为几个固定大小的区域,每个分区只装入一道作业。即有几个用户分区,便允许几个程序并发。

那么如何划分分区:

  • 分区大小相等:缺乏灵活,程序小则浪费,大则无法运行

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值