请求分页系统中页面分配策略与页面置换策略的关系

2024-06-02 06:18

本文主要是介绍请求分页系统中页面分配策略与页面置换策略的关系,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

请求分页系统中页面分配策略与页面置换策略的关系

@(OS)

回顾几种分配策略:

  • 固定分区分配
  • 动态分区分配
  • 伙伴系统
  • 可重定位分区分配

页面置换策略:

  • 全局置换
  • 局部置换

其中,关于分区分配策略已经很熟悉了,需要特别说明的是页面置换策略。这是我们在课本上不太强调的。

局部置换只置换本进程内的物理页面。一个进程占用的物理页面总数是限定的,当需要置换时,即总数已经用完,新进来一个页面,本进程就需要出去一个老的页面。所谓,朋友圈就那么大,有人进来自然需要有人出去。但是需要注意的是,如果分配给你的总数还没用完,自然是不用置换的,那是最初的红利时期,竞争还不激烈,先到先得。

全局置换指的是进程缺页时,可能置换的是内存中所有可换出的物理页面。即要换进的是A进程的页面,出去的可以是B进程的页面,因此分配给进程的页面总数是动态变化的。

这两种总的置换策略下有各自的方法:

局部置换:

  • 最优算法
  • 先进先出算法(有Belady异常)
  • Least Recently Used(最近最久未使用算法)
  • 时钟算法
  • 最不常用算法(Least Frequently Used)算法

全局置换:

  • 工作集算法
  • 缺页率算法

(2015.30) 请求分页系统中,页面分配策略和页面置换策略不能组合使用的是: C
A. 可变分配,全局置换
B. 可变分配,局部置换
C. 固定分配,全局置换
D. 固定分配,局部置换

固定分配:将内存用户空间划分为多个固定大小的区域,在每个分区中只装入一个作业
划分分区的方法有两种:

  • 分区大小相等
  • 分区大小不等

内存分配方法:按照分区大小建立分区使用表。记录每个分区的起始地址,大小和状态。
因此,固定分配不可能实现跨越进程的页面分配,个人自扫门前雪类型。

动态分区分配:根据进程的实际需要,动态地为之分配内存空间。
这句话不可以简单跳过,根据的是进程的需要,进程是动态的,是一次静态程序的执行过程。

为了实现这个,需要建立空闲分区表和空闲分区链。空闲分区表自然也是记录分区区号,分区起始地址和大小等。分区可以是离散的,因此需要链表来维护分区之间的关系。

分配内存:根据某种分配算法(首次适应,循环首次适应,最佳适应,最坏适应,快速适应等),从空闲分区链中找到需要的分区,根据一个算式:
m.sizeu.sizesize ,其中m.size是每个空闲分区的大小,u.size是请求的分区大小,size是规定的不可再切割的剩余分区的大小。即,如果分配完以后,剩余部分小于size这条线了,那么就把整个分区给你,否则,你只能拿到你所需要的。也即是超过一定量的交易额是大客户,待遇要好于小客户。

从这个过程中我们可以看到,空闲分区没有属于哪个进程的概念,即大家是吃大锅饭的。则在实现分页系统时,可以实现全局分配。局部分配是基础配置,自然不必多说。

因此,C项是无法组合在一起使用的。

这篇关于请求分页系统中页面分配策略与页面置换策略的关系的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1023190

相关文章

SpringRetry重试机制之@Retryable注解与重试策略详解

《SpringRetry重试机制之@Retryable注解与重试策略详解》本文将详细介绍SpringRetry的重试机制,特别是@Retryable注解的使用及各种重试策略的配置,帮助开发者构建更加健... 目录引言一、SpringRetry基础知识二、启用SpringRetry三、@Retryable注解

MySQL 分区与分库分表策略应用小结

《MySQL分区与分库分表策略应用小结》在大数据量、复杂查询和高并发的应用场景下,单一数据库往往难以满足性能和扩展性的要求,本文将详细介绍这两种策略的基本概念、实现方法及优缺点,并通过实际案例展示如... 目录mysql 分区与分库分表策略1. 数据库水平拆分的背景2. MySQL 分区策略2.1 分区概念

利用Python快速搭建Markdown笔记发布系统

《利用Python快速搭建Markdown笔记发布系统》这篇文章主要为大家详细介绍了使用Python生态的成熟工具,在30分钟内搭建一个支持Markdown渲染、分类标签、全文搜索的私有化知识发布系统... 目录引言:为什么要自建知识博客一、技术选型:极简主义开发栈二、系统架构设计三、核心代码实现(分步解析

Python FastAPI+Celery+RabbitMQ实现分布式图片水印处理系统

《PythonFastAPI+Celery+RabbitMQ实现分布式图片水印处理系统》这篇文章主要为大家详细介绍了PythonFastAPI如何结合Celery以及RabbitMQ实现简单的分布式... 实现思路FastAPI 服务器Celery 任务队列RabbitMQ 作为消息代理定时任务处理完整

Linux系统中卸载与安装JDK的详细教程

《Linux系统中卸载与安装JDK的详细教程》本文详细介绍了如何在Linux系统中通过Xshell和Xftp工具连接与传输文件,然后进行JDK的安装与卸载,安装步骤包括连接Linux、传输JDK安装包... 目录1、卸载1.1 linux删除自带的JDK1.2 Linux上卸载自己安装的JDK2、安装2.1

Tomcat版本与Java版本的关系及说明

《Tomcat版本与Java版本的关系及说明》:本文主要介绍Tomcat版本与Java版本的关系及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Tomcat版本与Java版本的关系Tomcat历史版本对应的Java版本Tomcat支持哪些版本的pythonJ

SpringBoot如何通过Map实现策略模式

《SpringBoot如何通过Map实现策略模式》策略模式是一种行为设计模式,它允许在运行时选择算法的行为,在Spring框架中,我们可以利用@Resource注解和Map集合来优雅地实现策略模式,这... 目录前言底层机制解析Spring的集合类型自动装配@Resource注解的行为实现原理使用直接使用M

Linux系统之主机网络配置方式

《Linux系统之主机网络配置方式》:本文主要介绍Linux系统之主机网络配置方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、查看主机的网络参数1、查看主机名2、查看IP地址3、查看网关4、查看DNS二、配置网卡1、修改网卡配置文件2、nmcli工具【通用

Linux系统之dns域名解析全过程

《Linux系统之dns域名解析全过程》:本文主要介绍Linux系统之dns域名解析全过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、dns域名解析介绍1、DNS核心概念1.1 区域 zone1.2 记录 record二、DNS服务的配置1、正向解析的配置

Linux系统中配置静态IP地址的详细步骤

《Linux系统中配置静态IP地址的详细步骤》本文详细介绍了在Linux系统中配置静态IP地址的五个步骤,包括打开终端、编辑网络配置文件、配置IP地址、保存并重启网络服务,这对于系统管理员和新手都极具... 目录步骤一:打开终端步骤二:编辑网络配置文件步骤三:配置静态IP地址步骤四:保存并关闭文件步骤五:重