操作系统内存管理知识
什么是内存管理?总的来说系统内存管理包括物理内存管理和虚拟内存管理。这里给大家分享一些关于操作系统内存管理知识,希望对大家能有所帮助。
物理内存管理概述:
操作系统负责内存空间的分配与回收
内存空间的扩展:操作系统需要提供某种技术从逻辑上对内存空间进行扩充
操作系统需要提供地址转换功能,负责程序的逻辑地址与物理地 址的转换
操作系统需要提供内存保护功能。保证各进程在各自存储空间内 运行,互不干扰
内存空间的扩展:
覆盖技术:将程序分为多个段(多个模块)。 常用的段常驻内存,不常用的段在需要时调入内存。内存中分为一个“固定区”和若干个“覆盖区”。 需要常驻内存的段放在“固定区”中,调入后就不再 调出(除非运行结束) 不常用的段放在“覆盖区”,需要用到时调入内存, 用不到时调出内存。
交换技术:交换(对换)技术的设计思想:内存空间紧张时,系统将内存中某些进程暂时换出外存,把外存中 某些已具备运行条件的进程换入内存(进程在内存与磁盘间动态调度)
于操作系统内存管理知识,希望对大家能有所帮助。
非连续分配管理方式
连续分配:为用户进程分配的必须是一个连续的内存空间。
非连续分配:为用户进程分配的可以是一些分散的内存空间。
什么是分页存储:
将内存空间分为一个个大小相等的分区(比如:每个分区4KB),每个分区就是一个“页框”(页框=页帧=内存块=物理 块=物理页面)。每个页框有一个编号,即“页框号”(页框 号=页帧号=内存块号=物理块号=物理页号),页框号从0开始。
将进程的逻辑地址空间也分为与页框大小相等的一个个部分, 每个部分称为一个“页”或“页面” 。每个页面也有一个编号, 即“页号”,页号也是从0开始。
操作系统以页框为单位为各个进程分配内存空间。进程的每个页面分别放入一个页框中。也就是说,进程的页面与内存的页 框有一一对应的关系。 各个页面不必连续存放,可以放到不相邻的各个页框中。
(注:进程的最后一个页面可能没有一个页框那么大。也就是 说,分页存储有可能产生内部碎片,因此页框不能太大,否则 可能产生过大的内部碎片造成浪费)
具有快表的地址变换机 构:
快表,又称联想寄存器(TLB, translation lookaside buffer ),是一种访问速度比内存快很多的高速缓存(TLB不是内存!),用来存放最近访问的页表项的副本,可以加速地址变换的速度。 与此对应,内存中的页表常称为慢表。
引入快表后,地址的变换过程:
① CPU给出逻辑地址,由某个硬件算得页号、页内偏移量,将页号与快表中的所有页号进行比较。
② 如果找到匹配的页号,说明要访问的页表项在快表中有副本,则直接从中取出该页对应的内存块 号,再将内存块号与页内偏移量拼接形成物理地址,最后,访问该物理地址对应的内存单元。因此, 若快表命中,则访问某个逻辑地址仅需一次访存即可。
③ 如果没有找到匹配的页号,则需要访问内存中的页表,找到对应页表项,得到页面存放的内存块 号,再将内存块号与页内偏移量拼接形成物理地址,最后,访问该物理地址对应的内存单元。因此, 若快表未命中,则访问某个逻辑地址需要两次访存(注意:在找到页表项后,应同时将其存入快表, 以便后面可能的再次访问。但若快表已满,则必须按照一定的算法对旧的页表项进行替换)
局部性原理:
时间局部性:如果执行了程序中的某条指令,那么不久后这条指令很 有可能再次执行;如果某个数据被访问过,不久之后该数据很可能再 次被访问。(因为程序中存在大量的循环)
空间局部性:一旦程序访问了某个存储单元,在不久之后,其附近的 存储单元也很有可能被访问。(因为很多数据在内存中都是连续存放 的)
分段存储管理方式:
进程的地址空间:按照程序自身的逻辑关系划分为若干个段,每个段都有一个段名(在低级语言 中,程序员使用段名来编程),每段从0开始编址 内存分配规则:以段为单位进行分配,每个段在内存中占据连续空间,但各段之间可以不相邻。
分段、分页管理的对比:
页是信息的物理单位。分页的主要目的是为了实现离散分配,提高内存利用率。分页仅仅是系统管 理上的需要,完全是系统行为,对用户是不可见的。
段是信息的逻辑单位。分段的主要目的是更好地满足用户需求。一个段通常包含着一组属于一个逻辑模块的信息。分段对用户是可见的,用户编程时需要显式地给出段名。
页的大小固定且由系统决定。段的长度却不固定,决定于用户编写的程序。
分页的用户进程地址空间是一维的,程序员只需给出一个记忆符即可表示一个地址。
分段的用户进程地址空间是二维的,程序员在标识一个地址时,既要给出段名,也要给出段内地址。
分段比分页更容易实现信息的共享和保护。不能被修改的代码称为纯代码或可重入代码(不属于临 界资源),这样的代码是可以共享的。可修改的代码是不能共享的。
虚拟内存管理
传统存储管理方式的特征、缺点:
一次性:作业必须一次性全部装入内存后才能开始运行。这会造成两个问题:
①作业很大时,不能全 部装入内存,导致大作业无法运行;
②当大量作业要求运行时,由于内存无法容纳所有作业,因此只 有少量作业能运行,导致多道程序并发度下降。
驻留性:一旦作业被装入内存,就会一直驻留在内存中,直至作业运行结束。事实上,在一个时间段 内,只需要访问作业的一小部分数据即可正常运行,这就导致了内存中会驻留大量的、暂时用不到的 数据,浪费了宝贵的内存资源。
虚拟内存的定义和特征:
基于局部性原理,在程序装入时,可以将程序中很快 会用到的部分装入内存,暂时用不到的部分留在外存, 就可以让程序开始执行。
在程序执行过程中,当所访问的信息不在内存时,由 操作系统负责将所需信息从外存调入内存,然后继续 执行程序。
若内存空间不够,由操作系统负责将内存中暂时用不 到的信息换出到外存。
在操作系统的管理下,在用户看来似乎有一个比实际 内存大得多的内存,这就是虚拟内存
虚拟内存有三个主要特征:
多次性:无需在作业运行时一次性全部装入内存,而是允许被分成多次调入内存。
对换性:在作业运行时无需一直常驻内存,而是允许在作业运行过程中,将作业换 入、换出。
虚拟性:从逻辑上扩充了内存的容量,使用户看到的内存容量,远大于实际的容量。
操作系统内存管理知识相关文章:
★ 全国统考计算机真题及答案解答
★ c语言学习心得
★ 电脑学习
★ 如何合理设置电脑虚拟内存,提高电脑运行速度
★ BIOS常见字母对照表附带解释
★ 关于毕业软件专业实习报告范文大全
★ 2020疫情期间各行业总结范文五篇
★ linux实习心得范文
★ 最新计算机实训心得体会5篇
★ 关于最新计算机电脑维修专业实习报告总结{范文}