zoukankan      html  css  js  c++  java
  • 操作系统----内存管理

     

     

    一个字符就是一个字节,也就是8位。

    每一个进程有PCB,程序段和数据段,程序的代码会被翻译成指令,CPU会根据指令的要求去找相应的物理地址,然后进行计算。

    编译生成的是逻辑地址。

    相对地址---->逻辑地址,绝对地址---->物理地址

     编译:先编译成若干个目标模块,然后链接,形成完整的装入模块,然后由装入程序装入内存。

    链接:静态链接(先连接好),装入时动态链接(装入的时候动态依次链接),运行时动态链接(当程序执行过程中需要目标模块的时候才进行链接,便于修改和更新,实现对模块的共享)。

    装入方式:

    绝对装入:

    只适用于单道程序,只有一道程序,所以可以确定程序装入位置。编译的时候产生最后的装入位置。

    :一次性装入内存,当内存空闲地址不够的时候不能装入内存中。当装入之后就不能进行修改,也不能再申请空间。初始地址为80,同意进行+100操作,这样进行静态重定位。

    :(分页存储和分段存储那里细讲)就是采用重定位寄存器,将地址转化推迟到真正执行的时候才进行物理地址的转化。动态重定位可以允许程序在内存中的移动。

    动态重定位:重定位寄存器:存放装入模块的起始地址,后面将程序转化存放地址改变寄存器中的起始值,

    -------------------------------------------------------《内存的空间分配》-------------------------------------------------

    内存空间的分配与回收

    虚拟性,操作系统提供某种技术从逻辑上进行对内存空间的扩充。

    操作系统提供地址转化功能,负责程序的逻辑地址与物理地址的转化。

    操作系统提供内存保护,互不干扰:

       1.设计上下限寄存器,存放进程的上下限,用来查看是否越界

       2.采用重定位寄存器(基址寄存器),和界地址寄存器(限长寄存器)。界地址存放进程的最大逻辑地址、重定向寄存器存放起始地址,看看80+重定向起始地址是不是超过了界地址寄存器。

    覆盖技术:解决程序大小超过内存总和。

    分区表中:如果用完了,空闲的格子要合并。

    分配:

    外部碎片:太小了,谁也用不上。

    动态重定位,然后修改PCB起始地址。

    首次适应算法:按照地址递增,第一个适合的放进去。

     最佳适应算法:空闲分区依次递增,每次顺序查找空闲分区链,找到第一个满足的空闲分区。留下大块的内存。产生超级多的外部碎片。

    最坏适应算法(最大适应算法):按照容量依次递减,找大的用,留下来的小的就概率低。空闲分区链。第一个满足不了,后面的肯定满足不了。大进程没有内存用

    临近适应算法:首次适应算法中会出现前面的很小,增加查找开销。临近适应算法就是从上一次找到的地方往后找第一个适应的地方。弄一个循环链表。一个环来查找适合的内存。算法开销小,不需要重新对链表进行排列。导致改地址有概率会被划分掉,形成大程序没有内存运行的情况。

    连续分配的缺点:

    --------------------------------------------------------《分页存储管理》----------------------------------------------

    将内存分成一个一个的小分区,然后把进程分成一个一个的小部分放进去。

     

    前面+后面的

    页号+页内偏移量

     由于把每一个进程分开了,所以需要一个页表来存放各个块号的地址,有页号和块号来决定在内存中的地址。

    内存块号*内存块大小=块内地址

    页表放在内存中,访问内存的时候需要访问两次内存。

     

     这个公式是干嘛用的。。。。。。

    这个公式:就是算一个页表的大小。看下面。

    ---------------------------------------《块表》---------------------------------------------------------

     

    访问页表的时候需要两次访问内存。 加快访问用到快表。联想寄存器TLB。内存中的页表叫做慢表。

    先检查块表,然后检查慢表。

     

    单级页表:

    将页表进行分页,然后用一个内存地址存放各个小列表。 

    asdfasdf

     

     

    无快表:n级页表查询你n+1次内存,依次访问页面。

  • 相关阅读:
    进阶篇:3.1.8)DFM塑胶-注射模具和设备
    PAT-甲级-1001-A+B Format
    腾讯-004-两个排序数组的中位数
    机器学习三 决策树
    腾讯-002-两数相加
    2018.3.15
    2018.3.14
    2018.3.13
    废代码合集
    边缘检测程序(matlab)
  • 原文地址:https://www.cnblogs.com/0123wtdd/p/10936308.html
Copyright © 2011-2022 走看看