zoukankan      html  css  js  c++  java
  • 内存管理中的分段和分页

    分段(Segmentation)

    分段的思想很简单,之前不是一大块都是连在一起的么,现在要把你们都分开,code / stack / heap 各自成为一段,段内的空间是连续的,段与段之间不必连续,这样空间利用率上就更高了。

    接下来问题就来了,一个进程会有多个段,如何知道一个内存地址对应的是哪个段呢?一个方法是用地址的前两个字节来表示:

    比如 00 表示 code, 01 表示 heap

    分页(Paging)

    Paging 的思想是把地址空间切分成固定大小的单元。比如下面一个只有 64 字节的地址空间,每个 Page 16 个字节.

    地址空间是连续的,但物理地址并不是。这样的好处是,不用去考虑 heap / stack 会被申请多少 size,比如要申请 64 字节地址空间,只要给 4 个 free 的 page 即可,这样 OS 管理起来也很简单,比如只要维护一份 free pages list,然后给出前 4 个。为了记录虚拟页(Virtual Page)跟物理地址之间的关系,OS 需要维护给每个进程维护一份 Page Table,它的作用就是地址翻译

    新战场:https://blog.csdn.net/Stephen___Qin
  • 相关阅读:
    算法训练 P1103
    算法训练 表达式计算
    算法训练 表达式计算
    基础练习 时间转换
    基础练习 字符串对比
    Codeforces 527D Clique Problem
    Codeforces 527C Glass Carving
    Codeforces 527B Error Correct System
    Codeforces 527A Glass Carving
    Topcoder SRM 655 DIV1 250 CountryGroupHard
  • 原文地址:https://www.cnblogs.com/Stephen-Qin/p/11821857.html
Copyright © 2011-2022 走看看