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

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

相关文章

JWT + 拦截器实现无状态登录系统

《JWT+拦截器实现无状态登录系统》JWT(JSONWebToken)提供了一种无状态的解决方案:用户登录后,服务器返回一个Token,后续请求携带该Token即可完成身份验证,无需服务器存储会话... 目录✅ 引言 一、JWT 是什么? 二、技术选型 三、项目结构 四、核心代码实现4.1 添加依赖(pom

基于Python实现自动化邮件发送系统的完整指南

《基于Python实现自动化邮件发送系统的完整指南》在现代软件开发和自动化流程中,邮件通知是一个常见且实用的功能,无论是用于发送报告、告警信息还是用户提醒,通过Python实现自动化的邮件发送功能都能... 目录一、前言:二、项目概述三、配置文件 `.env` 解析四、代码结构解析1. 导入模块2. 加载环

linux系统上安装JDK8全过程

《linux系统上安装JDK8全过程》文章介绍安装JDK的必要性及Linux下JDK8的安装步骤,包括卸载旧版本、下载解压、配置环境变量等,强调开发需JDK,运行可选JRE,现JDK已集成JRE... 目录为什么要安装jdk?1.查看linux系统是否有自带的jdk:2.下载jdk压缩包2.解压3.配置环境

Springboot项目构建时各种依赖详细介绍与依赖关系说明详解

《Springboot项目构建时各种依赖详细介绍与依赖关系说明详解》SpringBoot通过spring-boot-dependencies统一依赖版本管理,spring-boot-starter-w... 目录一、spring-boot-dependencies1.简介2. 内容概览3.核心内容结构4.

MySQL设置密码复杂度策略的完整步骤(附代码示例)

《MySQL设置密码复杂度策略的完整步骤(附代码示例)》MySQL密码策略还可能包括密码复杂度的检查,如是否要求密码包含大写字母、小写字母、数字和特殊字符等,:本文主要介绍MySQL设置密码复杂度... 目录前言1. 使用 validate_password 插件1.1 启用 validate_passwo

Linux查询服务器系统版本号的多种方法

《Linux查询服务器系统版本号的多种方法》在Linux系统管理和维护工作中,了解当前操作系统的版本信息是最基础也是最重要的操作之一,系统版本不仅关系到软件兼容性、安全更新策略,还直接影响到故障排查和... 目录一、引言:系统版本查询的重要性二、基础命令解析:cat /etc/Centos-release详

更改linux系统的默认Python版本方式

《更改linux系统的默认Python版本方式》通过删除原Python软链接并创建指向python3.6的新链接,可切换系统默认Python版本,需注意版本冲突、环境混乱及维护问题,建议使用pyenv... 目录更改系统的默认python版本软链接软链接的特点创建软链接的命令使用场景注意事项总结更改系统的默

Java中数组与栈和堆之间的关系说明

《Java中数组与栈和堆之间的关系说明》文章讲解了Java数组的初始化方式、内存存储机制、引用传递特性及遍历、排序、拷贝技巧,强调引用数据类型方法调用时形参可能修改实参,但需注意引用指向单一对象的特性... 目录Java中数组与栈和堆的关系遍历数组接下来是一些编程小技巧总结Java中数组与栈和堆的关系关于

在Linux系统上连接GitHub的方法步骤(适用2025年)

《在Linux系统上连接GitHub的方法步骤(适用2025年)》在2025年,使用Linux系统连接GitHub的推荐方式是通过SSH(SecureShell)协议进行身份验证,这种方式不仅安全,还... 目录步骤一:检查并安装 Git步骤二:生成 SSH 密钥步骤三:将 SSH 公钥添加到 github

Python实现网格交易策略的过程

《Python实现网格交易策略的过程》本文讲解Python网格交易策略,利用ccxt获取加密货币数据及backtrader回测,通过设定网格节点,低买高卖获利,适合震荡行情,下面跟我一起看看我们的第一... 网格交易是一种经典的量化交易策略,其核心思想是在价格上下预设多个“网格”,当价格触发特定网格时执行买