操作系统——分区存储管理

分区存储管理是把主存储器中的用户区作为一个连续区或分成若干个连续区进行管理,每个连续区中可装入一个作业。

多道程序系统一般都采用多个分区的存储管理,具体可分为固定分区可变分区 两种方式。

一、固定分区存储管理

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

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

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

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

当作业队列中有作业要装入主存时,存储管理可采用“顺序分配算法”进行主存空间的分配。

顺序查看主存分配表,找到一个标志为“0”的并且长度大于或等于欲装入作业的地址空间长度的分区 ,则把此分区分配给该作业,相应表目的标志位改成作业名的标识;若找不到一个这样的空闲分区,则该作业暂时不能装入主存。

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

2、地址转换

固定分区管理方式下作业的地址转换常采用静态重定位技术。

3、存储保护

固定分区管理方式下只考虑判断其物理地址即可。常采用“界限寄存器对”法。

If 下限地址<=物理地址<=上限地址

Then 继续

Else 产生“越界中断” ,转越界中断的处理子程序

4.内存扩充

采用覆盖技术

5.固定分区的优缺点

优点:实现简单,无外部碎片

缺点:

a.当用户程序太大时,可能所有的分区都不能满足需求,此时不得不采用覆盖技术解决,但这又会降低性能

b.会产生内部碎片,碎片大,存在小分区占用大作业的情况,内存利用率低。

解决办法:采用可变分区存储管理

二、可变分区存储管理

内存管理的可变分区模式,又称变长分区模式、动态分区分配模式。这种分配方式不会预先划分内存分区,而是在进程装入内存时,根据进程的大小动态地建立分区 ,并使分区的大小正好适合进程的需要。因此系统分区的大小和数目是可变的

与固定分区的区别就是:动态的划分分区。

克服固定分区管理的“内碎片”问题。

1.可变分区模式下,刚开始,OS就绪,但任何用户程序未进入内存前整个用户内存区是一大空间。已占用区和空闲分区并不是绝对的

2.必须有表来记录分区的情况。

3.程序进入内存时的例行工作就是分配空闲区和装入程序,并修改相应的空闲表和已分配区表。

4.一旦一个内存分区被分配给一个进程,该进程可以被装入该块中执行,装入时需重定位。

可变分区分配的数据结构

系统要使用什么样的数据结构来记录内存的使用情况?

可变分区分配算法

把一个新作业装入内存时,需要按照一定的可变分区分配算法,从空闲分区表(或空闲分区链)中选出一个分区分配给该作业。

在可变分区分配方式中,当有很多空闲分区都满足需求时,应该使用哪个分区进行分配?

这里介绍三种可变分区分配算法

最先适应分配算法

算法思想: 每次都从低地址开始查找,找到第一个能满足大小的空闲分区。

实现步骤:

空闲区地址由低到高排序

=>1.顺序查找各个空闲区,把第一个找到能容纳申请要求的内存区分配给申请者.(若空闲区比作业长度大,则分割该空闲区。一部分分配给作业一部分空闲。)

=>2.调整相应的空闲分区表和已分配分区表。

评价:性能一般但实现比较简单直接,易于释放时合并相邻空间分区。比较容易的满足大作业的需要。完成一次分配平均需要的搜索次数较大,影响了工作效率。

尽可能地利用存储器中低地址的空闲区,而尽量保存高地址的空闲区。

内核资料直通车:Linux内核源码技术学习路线+视频教程代码资料

学习直通车:Linux内核源码/内存调优/文件系统/进程管理/设备驱动/网络协议栈

最佳适应算法

算法思想: 由于可变分区分配是一种连续分配方式,为各进程分配的空间必须是连续的一整片区域。因此为了保证当“大进程”到来时能有连续的大片空间,优先使用更小的空闲区。

实现步骤:

空闲分区按容量递增次序链接 。每次分配内存时顺序查找空闲分区表,找到大小能够满足要求的第一个空闲分区。

评价:尽可能地保留了较大的空间。 产生大量的不能被使用的很小的空闲区。因此这种方法会产生很多的外部碎片。所以该算法分配效果不一定是最佳的。

尽可能地利用存储器中小的空闲区,而尽量保存大的空闲区。

最坏适应算法

算法思想: 为了解决最佳适应算法的问题——即留下太多难以利用的小碎片,可以在每次分配时,优先使用最大的连续空闲区,这样分配后的空闲区就不会太小,更方便使用。

实现步骤:

空闲分区按照容量递减次序链接。 每次分配内存时顺序查找空闲分区表,找到大小能满足要求的第一个空闲分区。

评价:分割后产生的空闲区一般仍可以供以后分配使用。工作一段时间后,不能满足大作业对空闲区的请求。

尽可能地利用存储器中大的空闲区。

三种算法的比较:

可变分区内存回收

只比固定分区管理增加了合并相邻空闲区 的操作。

主要是为了及时减少“外碎片”,利于今后大作业的到来。

实现回收内存空间,关键是修改空闲分区表和已分配分区表。

回收内存分区时可能会遇到的四种情况:

(a)若释放区R既有上邻空闲区,又有下邻空闲区。将三个空闲区合并成一个大空闲区。

先将R与F2合并记为F2,

再将F2与F1合并记为F1 ,并将F2从链中删除。

IF (B+H1=C) AND (C+L2=D)

THEN 修改空闲表,分配表。

(b)若释放区R只有上邻空闲区F1。

则只修改空闲区F1大小即可。

IF (D+H2=E)

THEN 修改空闲表,分配表。

(c)只有下邻空闲区

修改空闲区F2的首地址。

F2的大小=F2的大小+R的大小

(d)既无上邻又无下邻空闲区

Else 修改释放区的首地址为空闲区的起始地址

地址转换

动态重定位

分区的存储保护

If 下限地址<=物理地址<=上限地址

Then 继续

Else 产生“越界中断” ,转越界中断的处理子程序

内存扩充

消除了固定分区管理造成的“内碎片”,但是不可避免的在内存空间造成“外碎片”。

采用移动(紧缩)技术。定时的或在内存紧张时,将内存中所有作业移到内存的一端,使其相邻。

经过紧缩后的进程在内存中的位置发生了变化,若不对程序和数据的地址进行修改,在进程就无法运行。

要使其运行,必须进行“动态重定位”

注意:

=》紧缩的时机:

(1)一旦有归还的分区便进行紧缩,系统开销大。

(2)分配算法发现各空闲区不够用,但其和够用时。此法紧缩开销小,更实用。因此,实际的可变分区分配算法比固定分区分配算法主要增加了“紧缩”操作

三、 伙伴系统(buddy system)

伙伴系统可看作固定分区分配和可变分区分配的一种折中方案。

采用伙伴系统时,内存是以2的幂次个字节大小的空闲块为分配单位的。系统初启时,只有1个最大的2的幂次的空闲块,它就是整个可用的内存空间。当1个进程申请内存时,系统就分给它1个大于或等于进程所申请尺寸的最小的2的幂次的空闲块。

例如,某进程提出的50KB的内存请求,将首先被系统向上取整,转化为对1个64KB的空闲块的请求。如果此时不存在如此大小的空闲块,则此时可获得的1个最小的比该空闲块大的空闲块将被对分成2个“伙伴”单位。对其中1个伙伴单位的对分过程可能还要继续下去,直到获得1个64KB的空闲块为止。

伙伴系统的内存释放算法考虑将两个伙伴单位合并成1个大1倍的空闲单位。且这个合并过程会递归下去,直到不能继续合并为止。

注意观察下图,合并后的空闲区块也必须是2的幂次个字节

为了实现伙伴系统,系统要为每一种可能的空闲块维护1个空闲块链表。设系统管理的可用内存空间共为2^N^ 个字节,则1个伙伴系统最多需要维护N个空闲块链表。由于每种尺寸的空闲块都有一个空闲块队列,因此内存的分配与释放可以有效地进行。

伙伴系统的最大缺陷是不能有效地利用内存,特别是内碎片严重。例如,1个257KB的进程需要占用1个512KB的分配单位,其中将产生255KB的内碎片。另外,每次释放内存时都尽可能地合并伙伴单位的做法也会降低系统性能,因为刚合并好的块可能马上又要对分。一种改进的做法是延迟合并的时机。如今Linux用它。

原文作者:首页 - 内核技术中文网 - 构建全国最权威的内核技术交流分享论坛

原文地址:操作系统--分区存储管理 - 圈点 - 内核技术中文网 - 构建全国最权威的内核技术交流分享论坛(版权归原文作者所有,侵权留言联系删除)

  • 0
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 仓储管理系统(WMS)的流程设计是为了提高仓库运作效率和准确性,确保货物的及时存储和发货。以下是WMS的典型流程设计: 接收货物:流程开始于收货区,货物根据其来源和特性进行分类和分配。采用自动扫描和识别技术来准确记录货物的到货时间和数量。 入库管理:在入库阶段,WMS将检查货物的完整性和质量,并为其分配适当的仓位。通过条码或RFID技术,WMS将货物与储存位置关联起来,以便于日后查找和管理。 库存管理:WMS提供实时的库存信息,包括货物的数量、位置和状态。通过定期盘点,WMS确保库存信息的准确性,并管理过期和损坏货物的处理。 拣货和上架:WMS利用优化的拣货算法,指导仓库工人在拣货区按照订单要求快速选取货物。同时,WMS还提供指导和优化上架货物的流程,以便于将新货物放置到已有库存的合适位置。 包装和发货:WMS会根据订单要求,自动生成包装清单,并提供适当的包装说明。一旦货物正确包装,WMS将根据设定的优先级和交通运输模式生成发货顺序,并生成相应的发货单据。 报告和分析:WMS记录和分析所有仓库相关的数据,包括货物流转时间、库存周转率和仓库工人的工作效率等。这些数据可以用于优化仓库流程、改进计划和预测需求。 通过上述流程设计,WMS能够实现更高的仓库运作效率和准确性。它不仅可以提高货物的存储和发货速度,还可以减少错误和损失。同时,WMS的数据分析功能也可以提供仓库经营决策的依据。 ### 回答2: 仓储管理系统(WMS)是一个涵盖仓库运营管理的综合性软件系统。它将仓库的各个环节进行整合和优化,以实现高效的仓储管理流程。以下是WMS流程设计的一般步骤: 1. 入库流程设计: a. 接收商品:将到货的商品进行验收、计数和质量检查。 b. 上架商品:将验收合格的商品按照规定的货位进行分类、分区,记录存放位置。 c. 更新库存信息:记录入库商品的相关信息,包括数量、批次、生产日期等。 d. 生成入库报告:生成入库报告,包括入库商品的具体信息和存放位置。 2. 出库流程设计: a. 接收出库指令:接收出库指令,从系统中获取要出库的商品信息。 b. 拣选商品:根据出库指令,从仓库中拣选对应商品,并进行复核确认。 c. 包装和标识:将拣选出来的商品进行包装,并进行标识,准备出库。 d. 更新库存信息:记录出库商品的相关信息,包括数量和出库日期等。 e. 生成出库报告:生成出库报告,包括出库商品的具体信息和出库时间。 3. 库存管理流程设计: a. 盘点库存:定期对仓库中的商品进行盘点,核对实际库存和系统记录的库存是否一致。 b. 库存调整:对存在库存异常的商品进行调整,包括报损、报溢或者转移货位等操作。 c. 库存查询:根据需要,随时查询特定商品或整体库存状况,并实时更新库存信息。 4. 数据分析与报表设计: a. 数据分析:对仓储运营的各个环节的数据进行分析,发现问题和瓶颈,并提供优化建议。 b. 报表设计:根据管理需求,设计和生成各类报表,用于评估仓储业务的绩效和效益。 综上所述,仓储管理系统WMS的流程设计包括入库流程、出库流程、库存管理流程以及数据分析与报表设计。通过合理设计和优化这些流程,可以提高仓储运营的效率和精度,降低成本,提供更好的服务。 ### 回答3: 仓储管理系统(WMS)是一种用于管理和控制仓库操作的软件系统。在设计WMS的流程时,需要考虑以下几个方面。 首先,仓储管理系统的流程设计应该从物料收货开始。当货物到达仓库时,首先需要进行验收和检验。验收包括核对货物数量和质量,检验则是对货物进行外观和品质检测。只有通过验收和检验的货物才能被接收入库,否则需要退货或进行处理。 接下来是货物的上架流程。上架是指将货物放置在仓库中指定的存储位置。在这一流程中,需要根据仓库设定的储存策略,将货物按照类型、特性、过期日期等进行分类,并确定合适的储存位置。上架时还需要更新库存信息,确保系统中的库存数据准确无误。 随后是订单处理流程。当客户下单时,需要对订单进行处理,包括库存查询、分配货物、拣货、包装和发货等环节。在这个过程中,WMS需要根据库存情况对订单进行预测,分配合适的货物,并指导工作人员进行拣货和包装操作,最后确保货物按时送达客户。 此外,还需要考虑到仓库盘点流程。定期对仓库进行盘点,可以帮助确认实际库存与系统中库存数据的一致性。WMS可以提供盘点工具和报告,帮助工作人员快速准确地完成盘点操作,并分析盘点结果,及时调整库存。 最后,仓储管理系统的流程还应包括退货和退款流程。当客户退回货物时,需要对退货请求进行处理,并根据退货原因和货物状况进行退款或其他处理措施。 综上所述,仓储管理系统的流程设计涵盖了物料收货、货物上架、订单处理、仓库盘点、退货和退款等多个环节,旨在通过优化流程,提高仓库效率和准确性,满足客户需求,实现高效的仓储管理

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值