zoukankan      html  css  js  c++  java
  • 虚拟内存技术的诞生(程序加载运行发展史)

    无存储器抽象

    早期大型计算机(20世纪60年代之前),小型计算机(20世纪70年代之前),个人计算机(20世纪80年代)
    不能同时运行2个以上程序,比如第一个程序在地址2000处存放了一个数据,第二个程序向2000也写入数据,那么之前2000地址处的数据会被擦除
    将物理地址暴露的缺点:1、容易破坏操作系统 2、运行多个程序是困难的

    嵌入式系统和智能卡系统中无存储器抽象还是很常见的,比如收音机、洗衣机、微波炉。
    因为他们通常只有一个程序。

    一种存储器抽象:地址空间

    地址空间:一个进程可用于寻址内存的一套地址集合

    主要解决2个问题:保护和重定位

    通过在CPU中增加基址寄存器界限寄存器来实现
    每加载一个程序到内存中,基址寄存器保存程序的起始地址,界限寄存器保存程序的长度
    这样做的问题就是如果程序大小超过内存大小就无法运行

    交换技术

    2种处理内存超载的方法:
    交换技术:进程调入内存,运行一段时间,然后存回磁盘
    虚拟内存:程序的一部分调入内存

    20世纪60年代把程序分为许多段,称为覆盖
    由程序员必须把程序分割成多个片段,费时枯燥,易于出错
    解决办法:让计算机去做这些事情

    虚拟内存基本思想

    小例子

    把一个程序抽象为一个班级,地址抽象为每个座位,内存抽象为坐在座位上的学生
    有一个演出活动,由多个班级参加,在一个大会场,会场的座位区域抽象为虚拟内存
    每个参与演出的班级都会来到会场对应的座位,人是教师的人,但是地址变了,这个地址是虚拟地址,在操作系统中是一个结构体保存着虚拟内存和物理内存之间的映射关系
    表演场地抽象为内存
    操作系统抽象为工作人员,工作人员会记录哪个班级进行表演
    到某一个班级表演时,如果表演人员没有到位,那对应的几个学生先去表演,即部分程序加载到内存
    同时有多个班级在表演,表示系统可以同时进行多个进程的执行
    当场地不够时,场上许久没有进行表演的同学可以回到会场座位上了,为最近最久未使用算法

  • 相关阅读:
    在zookeeper集群的基础上,搭建伪solrCloud集群
    Spring Data Solr操作solr的简单案例
    solr的客户端操作:使用solrj进行curd操作
    solr配置相关:约束文件及引入ik分词器
    solr的简单部署:在tomcat中启动slor
    Lucene的查询及高级内容
    淘淘商城部署文档
    服务器负载均衡的部署方式
    反向代理和负载均衡有何区别?
    毕向东_Java基础视频教程第21天_IO流(1)
  • 原文地址:https://www.cnblogs.com/huangsitao/p/11406434.html
Copyright © 2011-2022 走看看