采用虚拟存储技术_虚拟存储管理

采用虚拟存储技术_虚拟存储管理虚拟存储技术(VIRTUALMEMORY)所谓的虚拟存储技术是指:当进程运行时,先将其一部分装入内存,另一部分暂留在磁盘,当要执行的指令或访问的数据不存在内存中时,由操作系统自动完成将它们从磁盘调入内存的工作。虚拟地址空间—–分配给进程的虚拟内存虚拟地址—–在虚拟内存中指令或数据的位置,该位置可以被访问,仿佛它是内存的一部分。

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

虚拟存储技术(VIRTUAL MEMORY)

   所谓的虚拟存储技术是指:当进程运行时,先将其一部分装入内存,另一部分暂留在磁盘,当要执行的指令或访问的数据不存在内存中时,由操作系统自动完成将它们从磁盘调入内存的工作。

虚拟地址空间—–分配给进程的虚拟内存
虚拟地址—–在虚拟内存中指令或数据的位置,该位置可以被访问,仿佛它是内存的一部分。


存储器的层次结构

这里写图片描述


虚存 与 存储体系

  • 把内存和磁盘有机地结合起来使用,从而得到一个容量很大的“内存”,即虚存。

  • 虚存是对内存的抽象,构建在存储体系之上,由操作系统协调个存储器的使用

  • 虚存提供了一个比物理内存空间大得多的地址空间

    -send & receive 原语


地址保护

  • 确保每个进程有独立的地址空间
  • 确保进程访问合法的地址空间,防止地址越界
    这里写图片描述
    注意: 上图中的基地址寄存器和界限寄存器操作系统通过特殊的特权指令加载
  • 确保进程的操作合法

虚拟页式(PAGING)

**虚拟存储技术 + 页式存储管理方案
-> 虚拟页式存储管理系统
主要包括:1. 请求调页(demand paging) 2. 预先调页(prepaging)

基本思想

  • 进程开始运行之前,不是装入全部页面,二是装入一个或零个页面

  • 之后,根据进程运行需要,动态装入其他页面

  • 当内存空间已满,而有需要装入新的页面时,则根据某种算法置换内存中的某个页面,以便装入新的页面

    其实就是以CPU时间和磁盘空间换取昂贵的内存空间,这是操作系统中的资源转换技术


页表与页表项的设计

这里写图片描述

页表表项设计

  • 页表由页表项组成
  • 页框号、有效位、访问位、修改位、保护位
    • 页框号(内存块号、物理页面号、页帧号)
    • 有效位(驻留位、中断位):表示该页是内存还是磁盘
    • 访问位:引用位
    • 修改位:此页在内存中是否修改过
    • 保护位:读/可读写

通常,页表项是硬件设计


关于页表

  • 32位虚拟地址空间的页表规模

    • 如果页面大小为4k;页表项大小为4字节,则一个进程地址空间有2^20页,其页表需要占1024页(页表页)
  • 64位虚拟地址空间
    页面大小为4k; 页表项大小为8字节,则一个进程的页表规模:就达到了 32,000TB

  • 页表页在内存中若不连续存放,则需要引入页表页的地址索引表-> 页目录(Page Directory)

    这里写图片描述
    注意 二级页表可以表示4G的虚拟地址空间

这里写图片描述


引入反转(倒排)页表

  • 地址转换
    从虚拟地址空间出发: 虚拟地址->查页表->得到页框号->形成物理地址
    每个进程一张页表
  • 解决思路
    • 从物理地址出发,系统建立一张页表
    • 页表项记录进程i的某虚拟地址(虚页号)与页框号的映射关系
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/189353.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • JAVA对象转JSON字符串时格式化日期_oracle clob转字符串

    JAVA对象转JSON字符串时格式化日期_oracle clob转字符串本案例所有代码均为原创,使用Java手写,没有借鉴其他类似工具库和网上论坛博客,也许没有经过充分测试,可能出现未知bug,因此不建议拿到正式的项目里使用。Java对象就像一个文件夹一样,没有办法知道其深度,所以采用了递归。性能方面没有测试,个人认为没有特别耗费性能的地方,除非你的对象包含很多层级。它可以支持null,字符串,数字、日期、集合等多种类型,包括以上类型的多层嵌套,都没有问题。源码不多,如下:importjava.lang.reflect.Field;importjava.lang

    2022年9月21日
    0
  • threadlocal底层实现_什么是底层

    threadlocal底层实现_什么是底层ThreadLocal作用:提供线程内的局部变量,不同的线程之间不会相互干扰,这种变量在线程的生命周期内起作用,减少同一个线程内多个函数或组件之间一些公共变量传递的复杂性。package com.mupack;public class App{ private String content; public void setContent(String content) { this.content = content; } public Stri

    2022年8月9日
    4
  • ExtJs–02–MessageBox相关弹出窗口alert,prompt,confirm采用

    ExtJs–02–MessageBox相关弹出窗口alert,prompt,confirm采用

    2022年1月11日
    36
  • python3网络爬虫开发实战PDF(python3网络爬虫开发实战)

    请在电脑的陪同下,阅读本文。本文以实战为主,阅读过程如稍有不适,还望多加练习。本文的实战内容有:网络小说下载(静态网站)、优美壁纸下载(动态网站)、爱奇艺VIP视频下载PS:本文为Gitchat线上分享文章,该文章发布时间为2017年09月19日。

    2022年4月11日
    52
  • 实例分割简述_图像实例分割

    实例分割简述_图像实例分割针对图像目标我们可以利用目标检测算法将其框出来也可以利用语义分割算法将属于猫的像素标记出来存在的弊端:1、目标检测可以区分个体但不够准确2、语义分割可以划分像素但不可以区分个体实例分割0、实例分割可以解决以上问题1、利用先验框获得建议框2、利用建议框获得预测框3、利用预测框获得语义分割结果…

    2022年8月23日
    3
  • mac 显示 sh-3.2# 的

    mac 显示 sh-3.2# 的

    2022年2月19日
    104

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号