操作系统教材第6版——个人笔记5

3.2 单连续分区存储管理

3.2.1 单连续分区存储管理

单连续分区存储管理

  • 每个进程占用一个物理上完全连续的存储空间(区域)
  • 单用户连续分区存储管理
  • 固定分区存储管理
  • 可变分区存储管理

单用户连续分区存储管理

  • 主存区域划分为系统区与用户区
  • 设置一个栅栏寄存器界分两个区域,硬件用它在执行时进行存储保护
  • 一般采用静态重定位进行地址转换 硬件实现代价低 适用于单用户单任务操作系统,如DOS

单用户连续分区存储管理示意

静态重定位:在装入一个作业时,把该作业中程序的指令地址和数据地址全部转换成绝对地址

固定分区存储管理的基本思想

  • 支持多个分区
  • 分区数量固定
  • 分区大小固定
  • 可用静态重定位
  • 硬件实现代价低
  • 早期OS采用

固定分区方式的主存分配 

固定分区方式的地址转换

  • 硬件实现机制与动态重定位

可变分区存储管理概述

  • 固定分区存储管理不够灵活,既不适应大尺寸程序,又存在内存内零头,有浪费
  • 能否按照进程实际内存需求动态划分分区,并允许分区个数可变
  • 这就是可变分区存储管理

3.2.2 可变分区存储管理

可变分区存储管理

  • 按进程的内存需求来动态划分分区
  • 创建一个进程时,根据进程所需主存量查看主存中是否有足够的空闲空间
  • 若有,则按需要量分割一个分区
  • 若无,则令该进程等待主存资源
  • 由于分区大小按照进程实际需要量来确定,因此分区个数是随机变化的

可变分区方式的内存分配示例

可变分区方式的主存分配表

 可变分区方式的内存分配

最先适应分配算法

邻近适应分配算法

最优适应分配算法

最坏适应分配算法

可变分区方式的内存回收

地址转换与存储保护

可变分区方式的内存零头

固定分区方式会产生内存内零头 #固定--内存内零头

可变分区方式也会随着进程的内存分配产生一小的不可用的内存分区,称为内存外零头 #可变--小不可用内存分区

最优适配算法最容易产生外零头 #最优--外零头

任何适配算法都不能避免产生外零头

移动技术(程序浮动技术)

移动技术的工作流程

3.3 页式存储管理

3.3.1 页式存储管理的基本原理

页式存储管理的基本原理

  • 分页存储器将主存划分成多个大小相等的页架
  • 受页架尺寸限制,程序的逻辑地址也自然分成页
  • 不同的页可以放在不同页架中,不需要连续
  • 页表用于维系进程的主存完整性

页式存储管理中的地址

  • 页式存储管理的逻辑地址由两部分组成,页号和单元号 #逻辑=页号+单元号
  • 页式存储管理的物理地址也有两部分组成:页架号和单元号 #物理=页架号+单元号
  • 地址转换可以通过查页表完成

页式存储管理的地址转换思路

页式存储管理的内存分配/去配

页的共享

页式存储管理能够实现多个进程共享程序和数据数据共享: #多进程共享程序数据

不同进程可以使用不同页号共享数据页程序共享: #不同页号共享数据页程序

不同进程必须使用相同页号 #不通进程必须同页号

共享代码页共享代码页中的(JMP )指令,使用不同页号是做不到

3.3.2 页式存储管理的地址转换

页式存储管理的地址转换代价

  • 页表放在主存: 每次地址转换必须访问两次主存 #页表>>主存--访问两次主存
  • 按页号读出页表中的相应页架号 #页号>>页表中页架号
  • 按计算出来的绝对地址进行读写
    • 存在问题:降低了存取速度
    • 解决办法:利用Cache存放部分页表

页式存储管理的快表

  • 为提高地址转换速度,设置一个专用的高速存储器,用来存放页表的一部分
  • 快表:存放在高速存储器中的页表部分
  • 快表表项:页号,页架号
  • 这种高速存储器是联想存储器,即按照内容寻址,而非按照地址访问 #块表--联想存储器--内容寻址--存储页表部分

引入快表后的地址转换代价

  • 采用快表后,可以加快地址转换速度
  • 假定主存访问时间为200毫微秒,快表访问时间为40毫微秒,查快表的命中率是90%,平均地址转换代价为 (200+40) *90%+(200+200+40)*10%=260毫微秒
  • 比两次访问主存的时间(400毫微秒)下降了35%

基于快表的地址转换流程

  • 按逻辑地址中的页号查快表
  • 若该页已在快表中,则由页架号和单元号形成绝对地址 #页在快表---页架号单元号=绝对地址
  • 若该页不在快表中,则再查主存页表形成绝对地址,同时将该页登记到快表中 #不在块表--查主存页表=绝对地址---登记块表
  • 当快表填满后,又要登记新页时,则需在快表中按一定策略淘汰一个旧登记项

多道程序环境下的进程表

多道程序环境下的地址转换

3.3.3 页式虚拟存储管理

页式虚拟存储管理的基本思想

  • 把进程全部页面装入虚拟存储器,执行时先把部分页面装入实际内存,然后,根据执行行为,动态调入不在主存的页,同时进行必要的页面调出
  • 现代OS的主流存储管理技术 首次只把进程第一页信息装入主存,称为请求页式存储管理

页式虚拟存储管理的页表

页式虚拟存储管理的实现

CPU处理地址

若页驻留,则获得块号形成绝对地址 #页驻留,块号形成绝对地址

若页不在内存,则CPU发出缺页中断 OS处理缺页中断 #页不在内存,缺页中断

若有空闲页架,则根据辅存地址调入页,更新页表与快表等

若无空闲页架,则决定淘汰页,调出已修改页,调入页,更新页表与快表

页式虚拟存储管理的地址转换

缺页中断的处理流程

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/695668.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

最新下载:Navicat for MySQL 11软件安装视频教程

软件简介: Navicat for MySQL 是一款强大的 MySQL 数据库管理和开发工具,它为专业开发者提供了一套强大的足够尖端的工具,但对于新用户仍然易于学习。Navicat For Mysql中文网站:http://www.formysql.com/ Navicat for MySQL 基于…

基于51单片机俄罗斯方块小游戏

基于51单片机俄罗斯方块游戏 (仿真+程序) 功能介绍 具体功能: 1.用LCD12864显示游戏界面; 2.用四个按键控制游戏(左、右移、下移、翻转); 3.游戏规则和平时玩的俄罗斯方块一样&a…

web前端:作业二

<!DOCTYPE html> <html lang"zh"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title><style>/* 1.将ul的子l…

搭建电商项目||购物商城||APP|小程序|电商独立站系统如何接入JD商品

京东商品采集的步骤和应用场景可以归纳如下&#xff1a; 一、采集步骤 注册账号&#xff1a;首先&#xff0c;需要在京东开放平台注册一个开发者账号。创建应用&#xff1a;登录开放平台后&#xff0c;创建一个应用以获取API密钥和应用凭据。获取权限&#xff1a;根据所需的服…

Docker高级篇之轻量化可视化工具Portainer

文章目录 1. 简介2. Portainer安装 1. 简介 Portianer是一款轻量级的应用&#xff0c;它提供了图形化界面&#xff0c;用于方便管理Docker环境&#xff0c;包括单机环境和集成环境。 2. Portainer安装 官网&#xff1a;https://www.portainer.io 这里我们使用docker命令安装&…

【力扣高频题】003.无重复字符的最长子串

前段时间和小米的某面试官聊天。因为我一直在做 算法文章 的更新&#xff0c;就多聊了几句算法方面的知识。 并且在聊天过程中获得了一个“重要情报”&#xff1a;只要他来面试&#xff0c;基本上每次的算法题&#xff0c;都会去考察关于 子串和子序列 的问题。 的确&#xf…

每日一题——Python实现PAT乙级1099 性感素数(举一反三+思想解读+逐步优化)

一个认为一切根源都是“自己不够强”的INTJ 个人主页&#xff1a;用哲学编程-CSDN博客专栏&#xff1a;每日一题——举一反三Python编程学习Python内置函数 Python-3.12.0文档解读 目录 我的写法 专业点评 时间复杂度分析 空间复杂度分析 综合点评 我要更强 优化点 …

私有化AI搜索引擎FreeAskInternet

什么是 FreeAskInternet FreeAskInternet 是一个完全免费、私有且本地运行的搜索聚合器&#xff0c;并使用 LLM 生成答案&#xff0c;无需 GPU。用户可以提出问题&#xff0c;系统将使用 searxng 进行多引擎搜索&#xff0c;并将搜索结果合并到ChatGPT3.5 LLM 中&#xff0c;并…

⌈ 传知代码 ⌋ 基于曲率的图重新布线

&#x1f49b;前情提要&#x1f49b; 本文是传知代码平台中的相关前沿知识与技术的分享~ 接下来我们即将进入一个全新的空间&#xff0c;对技术有一个全新的视角~ 本文所涉及所有资源均在传知代码平台可获取 以下的内容一定会让你对AI 赋能时代有一个颠覆性的认识哦&#x…

数据库索引压力测试

本实验测试数据库在有索引和五索引内容上的查询时间随着数据量级增长的变化 测试的表结构 使用一个菜单的数据库表&#xff0c;包括菜品的ID&#xff0c;菜品名和价格 CREATE TABLE Menu (dish_id int(6) unsigned zerofill NOT NULL AUTO_INCREMENT,dish_name varchar(255)…

高通Android开关机动画踩坑简单记录

1、下面报错有可能是selinux的原因 Read-only file system 2、接着push 动画 reboot之后抓取logcat出现 &#xff0c;以下这个报错。看着像是压缩格式有问题。 3、于是重新压缩一下报错没有再出现 &#xff0c;压缩格式默认是标准&#xff0c;这里必须要改成存储格式哈 4、修改…

matlab演示地月碰撞

代码 function EarthMoonCollisionSimulation()% 初始化参数earth_radius 6371; % 地球半径&#xff0c;单位&#xff1a;公里moon_radius 1737; % 月球半径&#xff0c;单位&#xff1a;公里distance 384400; % 地月距离&#xff0c;单位&#xff1a;公里collision_tim…

Signac|成年小鼠大脑 单细胞ATAC分析(2)

引言 在本教程中&#xff0c;我们将探讨由10x Genomics公司提供的成年小鼠大脑细胞的单细胞ATAC-seq数据集。本教程中使用的所有相关文件均可在10x Genomics官方网站上获取。 本教程复现了之前在人类外周血单核细胞&#xff08;PBMC&#xff09;的Signac入门教程中执行的命令。…

【linux】进程控制——进程创建,进程退出,进程等待

个人主页&#xff1a;东洛的克莱斯韦克-CSDN博客 祝福语&#xff1a;愿你拥抱自由的风 相关文章 【Linux】进程地址空间-CSDN博客 【linux】详解linux基本指令-CSDN博客 目录 进程控制概述 创建子进程 fork函数 父子进程执行流 原理刨析 常见用法 出错原因 进程退出 概…

7-43 排列问题

排列问题 分数 10 全屏浏览 切换布局 作者 雷丽兰 单位 宜春学院 全排列问题 输出自然数1至n中n个数字的全排列&#xff08;1≤n≤9&#xff09;&#xff0c;要求所产生的任一数字序列中不允许出现重复的数字。 输入格式: 一个自然数 输出格式: 由1到n中n个数字组成的…

Python魔法之旅专栏(导航)

目录 推荐阅读 1、Python筑基之旅 2、Python函数之旅 3、Python算法之旅 4、博客个人主页 首先&#xff0c;感谢老铁们一直以来对我的支持与厚爱&#xff0c;让我能坚持把Python魔法方法专栏更新完毕&#xff01; 其次&#xff0c;为了方便大家查阅&#xff0c;我将此专栏…

freertos中的链表1 - 链表的数据结构

1.概述 freertos中链表的实现在 list.c 和 list.h。旨在通过学习freertos中的链表的数据结构&#xff0c;对freertos中的链表实现有一个整体的认识。freertos使用了三个数据结构来描述链表&#xff0c;分别是&#xff1a;List_t&#xff0c; MiniListItem_t&#xff0c;ListIt…

【Linux】进程6——环境变量

1.什么是环境变量 环境变量(environment variables)一般是指在操作系统中用来指定操作系统运行环境的一些参数 比如&#xff1a;我们在编写C/C代码的时候&#xff0c;在链接的时候&#xff0c;从来不知道我们的所链接的动态静态库在哪里&#xff0c;但是照样可以链接成功&…

Windows 10 找不到Microsoft Edge 浏览器

下载链接 了解 Microsoft Edge 手动下载浏览器 问题说明 一般来说&#xff0c;windows10系统应该是自带浏览器edge的&#xff0c;但有的电脑就是没有找到edge浏览器&#xff0c;可能系统是精简过的&#xff0c;可能是被卸载了。如下&#xff0c;控制面板确实没找到程序。 ​ …

笔记本充电出现了问题。

不知道为什么。电池充电图片一直显示的空。谁能救救我&#xff01;