代码先锋网 代码片段及技术文章聚合

操作系统实验——内存管理

技术标签: 操作系统  内存管理  内存分配

内存为什么要管理

在OS中,每个运行的进程都会占用内存,那么操作系统势必要做好两件事:内存分配和内存回收。这便是本次实验要做的模拟实验了。

内存分配策略

FF(首次适应算法)

这种策略旨在从最低地址的空闲分区开始找起,找到合适的便进行分配。内存空间按起始地址从小到大排序。
优点:查找速度快
缺点:低地址会留下较多的内存碎片,高地址则会存留大块空闲分区。

BF(最佳适应算法)

这种策略每次分配都将最小块的满足需求空闲分区拿去分配。内存空间按空闲区从小到大排序。
优点:保留大的空闲分区。
缺点:造成很多小的空闲分区。

WF(最差适应算法)

这种策略每次分配都将最大块的满足需求空闲分区拿去分配。内存空间按空闲区从大到小排序。
优点:不会留下许多小的内存碎片。往往可以装入多个大内存程序。
缺点:留下大空闲区的可能减少了。

内存管理实验内容

模拟操作系统,既然是模拟,那么自然比真正的内存分配简单很多。
程序中两个链表:
空闲内存区块表,包含该空闲区的起始地址以及大小。程序初始化链表仅一个节点,大小为默认大小。
一分配内存区块表,包含被分配的内存区起始地址及大小和使用该内存的进程pid。

程序初始,可以选择修改内存总大小。仅能修改一次。并且分配过内存后就不能再修改大小了。
之后可以随时选择分配算法。
创建新进程并且杀死进程,观察内存占用。

流程图

下次补上

程序代码

宏定义配置文件:https://github.com/City-Zero/LinuxTest/blob/master/OSex/mem_manager/conf.h
程序代码:https://github.com/City-Zero/LinuxTest/blob/master/OSex/mem_manager/mm.c

版权声明:本文为baidu_35085676原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/baidu_35085676/article/details/78502503

智能推荐

操作系统实验之进程管理

操作系统实验之进程管理 纯C语言实现,仅作记录学习用途,欢迎大家改良。...

操作系统 磁盘管理实验

实验内容: 要求模拟先来先服务法(First-Come, First-Served,FCFS),最短寻道时间优先法(Shortest Seek Time First, SSTF),电梯法三种磁盘调度算法,输入为一组请求访问磁道序列,输出为每种调度算法的磁头移动轨迹和移动的总磁道数 测试样例(磁头起始位置是53) 8 98 183 37 122 14 124 65 67    ...

操作系统-存储管理实验

1、最近最久未使用置换算法LRU是根据页面调入内存后的使用情况进行决策的,它是利用“最近的过去”作为“最近的将来”的近似,选择最近最久未使用的页面予以淘汰。 2、最佳淘汰算法OPT:也称最佳置换算法。它所选择的被淘汰的页面,将是以后永不使用的,或是在最长(未来)时间内不再被访问的页面。...

操作系统-进程管理实验(1)

实验一  进程管理 一、实验目的 加强对进程概念的理解。 二、实验内容 创建新的进程;查看运行进程;中止运行进程等功能。 三、实验环境 Windows7 系统 TC 3.0或者VC++6.0 四、实验提示 PCB结构通常包括以下信息:进程名,进程优先数,轮转时间片,进程所占用的CPU时间,进程的状态,当前队列指针等。可根据实验的不同,PCB结构的内容可以作适当的增删。 主体程序...

操作系统实验:Windows进程管理

实验项目名称: Windows进程管理 一、实验目的 1、学习windows系统提供的线程创建、线程撤销、线程同步等系统调用; 2、利用C++实现线程创建、线程撤销、线程同步程序; 3、完成思考、设计与练习。 二、实验内容 1、写一个windows控制台程序(需要MFC),创建子线程,显示Hello, This is a Thread. 然后撤销该线程。 2、向线程对应的函数传递参数,如字符串&l...

猜你喜欢

操作系统实验一 进程管理

实验一  进程管理 1.目的和要求 通过实验理解进程的概念,进程的组成(PCB结构),进程的并发执行和操作系统进行进程管理的相关原语(主要是进程的创建、执行、撤消)。 2.实验内容 用C语言编程模拟进程管理,至少要有:创建新的进程;查看运行进程;换出某个进程;杀死运行进程以及进程之间通信等功能。 3.实验环境 Windows操作系统、VC++6.0 C语言 4.实验提示 PCB结构通常包...

操作系统实验-动态分区管理

实验内容 (1)动态分区管理的主存分配模拟系统的设计—最先适应法、最佳适应法、最坏适应法(选择1~3种),模拟实现内存的分配回收; (2)能够输入给定的内存大小,进程的个数,每个进程所需内存空间的大小等; (3)能够选择分配或回收操作;并能显示完成内存分配或回收后内存空间的使用情况; (4)能够显示进程在内存的存储地址、大小等 实验代码 1,c++ 2,ConsoleApplicati...

操作系统实验:主存管理

题目: 在可变分区管理方式下采用最先适应算法实现主 存分配和实现主存回收。 [提示]: (1)可变分区方式是按作业需要的主存空间大小来分割分 区的。当要装入一个作业时,根据作业需要的主存量查看是 否有足够的空闲空间,若有,则按需要量分割一个分区分配 给该作业;若无,则作业不能装入。随着作业的装入、撤离 ,主存空间被分成许多个分区,有的分区被作业占用,而有 的分区是空闲的。例如: 为了说明哪些区是空...

操作系统文件管理实验代码

实现了简单的文件系统的操作。 没有实现磁盘块之间的连接,目录与磁盘属于一对一链接,没法指定磁盘块存放并且文件内容超出磁盘块就无法存储了。...