zoukankan      html  css  js  c++  java
  • 一、linux IO 编程---内存管理

    1.1 进程在虚拟空间中的布局

      32位的操作系统虚拟空间的大小为 4GB,即每个进程在系统中分配的虚拟空间大小为4GB。这4GB的大小被分为了两个部分:

    • 内核空间:1GB,内核起的进程
    • 用户空间:3GB,主要是普通用户起的进程

          

      

       

      物理内存和虚拟内存之间的交互:

      

      虚拟地址和物理地址通过 CPU 的内存管理单元(MMU)进行转换。

    1.1.1 虚拟地址

      

      辅存:物理内存不够用时,在硬盘上临时创建的一个分区,用来存放进程使用率很低的数据,要用的时候再从辅存中提取进硬盘中,比如ubuntu 中的交换空间

    1.2 内存管理

    1.2.1 作用

    • 进程隔离:保护独立的进程,防止互相干涉数据和存储控件
    • 自动分配和管理:动态的分配,分配对程序员是透明的
    • 支持模块化的程序设计:能够定义程序模块,并且动态地创建、销毁,改变模块大小
    • 保护和访问控制:允许一部分内存可以由各种用户以各种方式进行访问
    • 长期存储:关机后长时间保存信息  

    1.2.2 段页式管理

    • 进程在虚拟内存中分为代码段、数据段和堆栈段

    • 进程在段中有许多固定大小的块组成,这些块称为页

    • 虚拟地址由段号、页号和页中偏移量构成

    • 虚地址和主存中实地址(物理地址)进行动态映射,映射的单位就是页,一般的系统一页为4K的大小

    • 换页过程:
      • 换出:物理内存到辅存
      • 换入:辅存到物理内存  
      • 消除了进程全部载入内存中
      • 按需调页     
  • 相关阅读:
    理解Golang包导入
    go语言执行windows下命令行的方法
    Go中使用动态库C/C++库
    MongoDB · 引擎特性 · MongoDB索引原理
    Linux中more和less命令用法
    修改Linux文件句柄限制
    MongoDB自动删除过期数据--TTL索引
    mongodb可以通过profile来监控数据 (mongodb性能优化)
    MongoDB学习笔记(索引)
    查看nginx cache命中率
  • 原文地址:https://www.cnblogs.com/kele-dad/p/8980972.html
Copyright © 2011-2022 走看看