进程状态之间的关系:

1.分段式内存管理:

分段:进程地址空间按照逻辑关系将自身划分为若干个段,每个段都有自己的段名,从0开始编址。

内存分配规则:以段为单位进行分配,每个段在内存中占据连续空间,但各段不相邻。

组成:段号--段号的位数决定每个进程最多可分为几段。

段内地址--段内地址位数决定每个段最大长度是多少

段表:一张映射表,是为了程序正常运行,从物理内存中找到逻辑段的存放位置。

2.分页式内存管理

将虚拟地址空间和物理内存划分为大小相同的页面,linux下4K。

虚拟地址由两部分组成:页号(20位)+页内偏移(12位)

地址翻译(通过查页表):虚拟地址->通过映射->物理地址

页表:从虚拟页面到物理页面的映射,内存管理单元MMU依赖于页表。

缓存禁止   访问位   修改位   保护标识区  在内存否  物理页面号

分页系统的优点与缺点:

优点:不产生外部碎片,内存空间可以不连续,可页面共享。

缺点:页表很大,占用大量内存空间。

缺页中断处理:

若CPU发出的虚拟地址对应的页面不在物理内存,就会产生一个缺页中断。

缺页中断处理就是将需要的虚拟页面找到并加载到内存中

页面置换算法:

页面置换:在缺页中断下,若内存无多余空间,就需要置换一个页面。为了降低随后发生缺页中断的次数。

算法:随机更换算法、先进先出算法、第二次机会算法、时钟算法、最优更换算法、NRU(最近未使用)算法、LRU(最近少使用)算法、工作集算法、工作集始终算法。

NRU算法:

选择一个最近时间内没有被访问过的页面置换。实现方式是利用页面的访问和修改位。基于程序访问的时空局域性。

缺点:在同一类页面无法分辨哪一类被访问的时间近。

LRU算法:基于过去的数据预测未来。不仅考了是否用过,还考虑最近使用频率。

LRU算法的实现必须以某种方式记录每个页面被访问的次数。有2种方式,一种是页表记录项增加计数域,一种是链表将所有页面链接起来。最近被使用的页面在链表头,最近未被使用的放在链表尾。在每次页面访问时对这个链表进行更新,使其保持最近被使用的页面在链表头。

3.段页式内存管理:

先按照程序分段,再按照程序分页,内存页和段页大小一样。

段页式逻辑地址由段号、页号、页内地址、(页内偏移量)组成

段表和段式存储不一样:段式里面是段长和段初始地址。段页式中是页表长度和页表存放块号。页表是一样的。

一个进程一个段表,可能对应多个页表。

段号--段号的位数决定每个进程最多可分为几段。

页号位数绝对每个段最大有多少页

页内偏移量绝对页面大小、内存块大小是多少。

若系统按字节寻址,则段号16位,每个进程最多有2^16=64K个段

页号占4位,每个段最多有2^4=16页

页内偏移占12位,每个页面/每个内存块大小为2^12=4096=4K

例题:在请求分页存储管理方案中,若某用户空间为16个页面,页长1KB,现有页表如下,则逻辑地址0A1F(H)所对应的物理地址为(0E1FH  )。

解析:

地址偏移量=逻辑地址%页面大小(1024)=0A1F(H)(2591)%1024=543

页号=逻辑地址/页面大小=2591/1024=2

查页表得到块号为3,

故物理地址=3*1024+543=3615=0E1F(H)

操作系统类型:除了单道批处理,都可执行多个程序

单道批处理系统:系统对作业的处理是成批进行的,但内存中始终保持一道作业。

多道批处理系统:允许多个程序同时进入内存并运行。即同时把多个程序放入内存,并允许它们交替在CPU中运行,它们共享系统中的各种硬、软件资源。

分时操作系统:在操作系统中釆用分时技术就形成了分时系统。所谓分时技术就是把处理器的运行时间分成很短的时间片,按时间片轮流把处理器分配给各联机作业使用。

实时操作系统:为了能在某个时间限制内完成某些紧急任务而不需时间片排队,诞生了实时操作系统。

详细剖析linux的内存管理方式(分段式、分页式、段页式),以及进程状态的具体关系相关推荐

  1. 剖析linux的内存管理与分配

    文章目录 伙伴算法 **1.伙伴算法原理** **2.物理页的分配** **3. 物理页的释放 ** **总结** Slab分配机制 **1.Slab如何对内存进行管理?** **2.Slab中如何实 ...

  2. linux C 内存管理方式之半动态

    看到半动态申请内存,第一反应这是什么鬼? 实际上半动态内存申请很容易理解,在GNU C中使用alloca函数来实现 #include <stdlib.h> void *alloca (si ...

  3. Linux 操作系统原理 — 内存 — 页式管理、段式管理与段页式管理

    目录 文章目录 目录 前文列表 页式管理 快表 多级页表 基于页表的虚实地址转换原理 应用 TLB 快表提升虚实地址转换速度 页式虚拟存储器工作的全过程 缺页中断 为什么 Linux 默认页大小是 4 ...

  4. 转:浅谈Linux的内存管理机制

    一 物理内存和虚拟内存          我们知道,直接从物理内存读写数据要比从硬盘读写数据要快的多,因此,我们希望所有数据的读取和写入都在内存完成,而内存是有限的,这样就引出了物理内存与虚拟内存的概 ...

  5. 浅谈Linux的内存管理机制

    一 物理内存和虚拟内存          我们知道,直接从物理内存读写数据要比从硬盘读写数据要快的多,因此,我们希望所有数据的读取和写入都在内存完成,而内存是有限的,这样就引出了物理内存与虚拟内存的概 ...

  6. Linux 内存管理 | 地址映射:分段、分页、段页

    文章目录 分段 分页 多级页表 快表(TLB) 段页式 Linux Linux 内存管理 | 物理内存管理:内存碎片.伙伴系统.slab分配器 Linux 内存管理 | 虚拟内存管理:虚拟内存空间.虚 ...

  7. 【Linux 内核 内存管理】物理分配页 ⑦ ( __alloc_pages_slowpath 慢速路径调用函数源码分析 | 判断页阶数 | 读取 mems_allowed | 分配标志位转换 )

    文章目录 一.__alloc_pages_slowpath 慢速路径调用函数 二.判断页阶数 三.读取进程 mems_allowed 成员 四.分配标志位转换 五.__alloc_pages_slow ...

  8. 操作系统的内存管理机制(连续分配管理、页式、段式、段页式、快表、二级页表)

    来源:https://www.bilibili.com/video/BV1YE411D7nH 操作系统的内存管理机制(连续分配管理.页式.段式.段页式.快表.二级页表) 内存被分为系统区和用户区,系统 ...

  9. python基于值的自动内存管理方式是什么_Python采用的是基于值得自动内存管理方式。(2.0分)_学小易找答案...

    [多选题]下列有关关键绩效指标表述正确的是( ) [单选题]上级和员工之间以持续沟通来预防和解决员工实现绩效时可能发生的各种问题的过程,这是绩效管理的( )环节 [单选题]下列有关双因素理论的描述中, ...

最新文章

  1. 开源 java CMS - FreeCMS2.8 数据对象 applyopen
  2. oracle opatch那个回退,下面是我在打OPatch时使用的一般步骤,供大家参考
  3. DataFountain新上计算机视觉比赛-20万巨奖数钢筋
  4. 0x08标志类型的RTMPE、RTMPTE协议分析
  5. [Python学习25] 关于函数更多的练习
  6. 云服务器查看服务端口,云服务器如何查看端口是否连通
  7. 边工作边刷题:70天一遍leetcode: day 34-1
  8. Excel中的单元格引用
  9. 商务个人邮箱,vip邮箱哪个最好用?外贸邮箱哪个是安全邮箱?
  10. [SOC]clock与reset设计
  11. Java— AWT 绘图(一)
  12. PD快充方案:极具性价比的苹果iphone12 PD20W快充方案来了!
  13. python panda3d教程_panda3d学习笔记(一)Hello World
  14. Beyond Compare文件对比工具中文网站来啦
  15. 深克隆和浅克隆的区别
  16. 印度IT业迎来新生:大数据催生大批分析公司
  17. 一文看懂BT5.2 LE Audio新特性
  18. 实战捕获局域网ARP病毒
  19. 【困难】分糖果问题-Java:原问题
  20. ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY

热门文章

  1. flink java旁路输出(Side Output),对原始流进行分流、复制
  2. 自动爬取中国大学mooc的pdf文档
  3. 定位插件_谷歌官方发布了一款全新超实用Chrome插件,支持国内使用!
  4. 计算机2级c 语言题库,计算机2级C语言题库.doc
  5. java 只有日期的类_【你不知道的事系列】Java中处理日期的类
  6. HDU 2154 跳舞毯
  7. 推荐一些C#相关的网站、资源和书籍
  8. (一)问候 Log4j 你好
  9. VC++用异或(XOR)方式实现拖放画动态直线
  10. python虚拟机 基于寄存器_虚拟机随谈(一):解释器,树遍历解释器,基于栈与基于寄存器,大杂烩...