首页 > 其他分享 >操作系统:实验三:存储器管理

操作系统:实验三:存储器管理

时间:2024-10-14 08:51:23浏览次数:3  
标签:存储管理 主存 操作系统 装入 分区 存储器 作业 实验 分配

1. 实验目的

    1.理解固定式分区及可变式分区两种存储管理模式,知道各自的优缺点;

    2.验证型实验需理解可变式分区方式的三种算法最先适应算法、最佳适应算法和最坏适应算法的工作原理,理解内存释放的具体实现过程;

    3.提高型实验需在提供的代码框架下根据提示自主编程实现2所述三种算法及内存释放过程。

2. 固定分区存储管理

    固定分区管理方式是把主存中可分配的用户区域预先划分成若干个连续的分区,每个连续区的大小可以相同,也可以不同。但是,一旦划分好分区之后,主存中分区的个数就固定了,且每个分区的大小也固定不变。这种分区法属于一种静态分区法。

    在固定分区方式管理下,每个分区用来装入一个作业或进程。由于主存中有多个分区,所以这种存储管理方式适用于多道程序系统。

    现在以批处理系统中的作业进出内存为例,介绍固定式分区存储管理的具体实现。等待进入主存的作业排成一个作业队列。当主存中有空闲的分区时,以此从作业队列中选择一个能装入该分区的作业。当所有的分区都已装有作业时,其他的作业暂时不能再装入,绝对不允许在同一分区中同时装入两个或两个以上的作业。已经装入主存的作业在获得处理机运行时,要限定它只能在所占的分区中执行。下图是划分成三个分区的固定分区存储管理方式示意图。

                固定分区存储管理示意图

一、主存空间的分配与释放

    为了管理主存空间,必须设置一张“主存分配表”,以说明各分区的分配情况。主存分配表中应指出各分区的起始地址和长度,并未每个分区设置一个标志位。当标志位为0时,表示对应的分区是空闲分区;当标志位非0时,表示对应的分区已被某作业占用。空闲分区可以用来装作业。下表表示主存被静态划分成三个分区,其中分区2已装入一个名为Job1的作业。

    当作业队列中有作业需要装入主存时,存储管理可采用“顺序分配算法”进行主存空间的分配。顺序查看主存分配表,若找到一个标志位为0并且长度大于或等于待装入作业的地址空间长度的分区,则把此分区分配给该作业,相应表目的标志改成作业名的标识;若找不到一个这样的空闲分区,则改作业暂时不能装入主存。

    主存空间的释放很简单。某作业执行结束后必须归还所占的分区,这时存储管理根据作业名查看主存分配表,找到相应的表目后,把其中的标志位重新置成0即可。

      三个分区的主存分配表

标签:存储管理,主存,操作系统,装入,分区,存储器,作业,实验,分配
From: https://blog.csdn.net/2201_75721523/article/details/142908491

相关文章

  • 通信工程学习:什么是SDRAM同步动态随机存取存储器
    SDRAM:同步动态随机存取存储器    SDRAM,全称为SynchronousDynamicRandomAccessMemory,即同步动态随机存取存储器,是一种广泛应用于计算机和嵌入式系统中的内存技术。以下是对SDRAM的详细介绍:一、SDRAM的定义与特点        SDRAM的定义:   SDRAM是一......
  • 实验1 现代c++编程初体验
    任务1:task1.cpp//现代C++标准库、算法库体验//本例用到以下内容://1.字符串string,动态数组容器类vector、迭代器//2.算法库:反转元素次序、旋转元素//3.函数模板、const引用作为形参#include<iostream>#include<string>#include<vector>#include<algorithm>......
  • 实验1
    实验任务1代码:1//现代C++标准库、算法库体验2//本例用到以下内容:3//1.字符串string,动态数组容器类vector、迭代器4//2.算法库:反转元素次序、旋转元素5//3.函数模板、const引用作为形参67#include<iostream>8#include<string>9#......
  • 面向对象程序设计-实验1
    任务一: #include<iostream>#include<string>#include<vector>#include<algorithm>usingnamespacestd;template<typenameT>voidoutput(constT&c);voidtest1();voidtest2();voidtest3();intmain(){cout&l......
  • 实验1 现代c++编程初体验
    实验任务一task1.cpp1//现代C++标准库、算法库体验2//本例用到以下内容:3//1.字符串string,动态数组容器类vector、迭代器4//2.算法库:反转元素次序、旋转元素5//3.函数模板、const引用作为形参6#include<iostream>7#include<string>8#includ......
  • openssl实验截图记录
                                    ......
  • 实验1 C++
    task1:代码:1//现代C++标准库、算法库体验2//本例用到以下内容:3//1.字符串string,动态数组容器类vector、迭代器4//2.算法库:反转元素次序、旋转元素5//3.函数模板、const引用作为形参67#include<iostream>8#include<string>9#......
  • 实验1
    实验任务1:1#include<iostream>2#include<string>3#include<vector>4#include<algorithm>56usingnamespacestd;78template<typenameT>9voidoutput(constT&c);1011voidtest1();12voidtest2();13voi......
  • c++实验1
    实验1://现代C++标准库、算法库体验//本例用到以下内容://1.字符串string,动态数组容器类vector、迭代器//2.算法库:反转元素次序、旋转元素//3.函数模板、const引用作为形参#include<iostream>#include<string>#include<vector>#include<algorithm>usin......
  • 实验1
    //任务11#include<iostream>2#include<string>3#include<vector>4#include<algorithm>56usingnamespacestd;78//声明9//模板函数声明1011template<typenameT>12voidoutput(constT&c);131......