操作系统基础:内存管理概述【中】

简介: 操作系统基础:内存管理概述【中】



🏝️1 基本分页存储管理

🏖️1.1 总览

🏖️1.2 什么是分页存储

🏰1.2.1 将物理空间分页

🏰1.2.2 将逻辑空间分页

方便管理员进行管理

🏰1.2.3 空间的分配

🏰1.2.4 区分概念

🏖️1.3 页表

🏰1.3.1 概述

(1) 必要性

(2) 示意图

(3) 注意

🏰1.3.2 页表项的大小

(1)块号的字节

假设:

由于内存块的大小(物理)=页面大小(逻辑) = 4KB = 212B,则一个4GB的内存总共会被分为232/2^12 = 220块,则内存块号的范围应该是0-220-1,需要使用20个Bit存储,也就是至少需要3个字节(24B)进行存储。

(2)页号的字节

由于页表项是连续存储的,因此只要知道页号以及页表的起始地址就可以计算得到目的页号的块号,因此页表不需要存储页号,字节为0。

(3)综上,每一个页表项占3字节(在题中所给条件上)

(4)注意

并不存储物理地址

🏰1.3.3 如何实现地址的转换

(1)虽然进程的各个页面是离散存放的,但是页面内部是连续存放的

(2)转换步骤:

🏰1.3.4 如何确定一个逻辑地址对应的页号、页内偏移量

(1)例子:

我们知道,对于一个进程来说,各页面是离散存放的,但是在逻辑上各页面是连续存放的。页面内部不管是物理上还是逻辑上都是连续存放的。如图:

据此可以快速得到地址的转换逻辑:

(2)拓展

假设一个计算机是用32个二进制位表示逻辑地址,页面大小位4KB = 2^12B = 4096B

那么,进程数据的逻辑地址的后12位为页面偏移量,逻辑地址的前20位是页号,比如:

(3)我们知道,n号内存块的起始地址 = n*内存块大小。以我们刚才的例子为例:

则逻辑地址的后12位为业内偏移量,前20位为页号。由此我们可以得到结论:

🏖️1.4 总结

🏝️2 基本地址变换机构

🏔️2.1 概念

基本地址变换机构是一组用于实现逻辑地址到物理地址转换的硬件机构

🏔️2.2 变换步骤

🗽2.2.1 页表寄存器(PTR)

🗽2.2.2 变换步骤

假设页面的大小为2的整数次幂。当一个进程发生调度需要上处理机运行时,操作系统会将恢复进程的运行环境,将进程的PCB(存放页表的地址与页表的长度)放入页面寄存器中以方便操作系统进行管理,此外,程序计数器PC也会将进程下一条需要执行的指令的逻辑地址A放入,那么如何知道进程下一条指令的物理地址呢?

🗽2.2.3 获取物理地址

(1)转换机构根据逻辑地址计算出页号P、页内偏移量W。假如页面大小为2的整数次幂,那么这个过程是很方便的

(2)假如一个进程的页表长度为M,意味着这个进程有M个页面,假如P>M,那么说明出错,操作系统会发生越界终端(内中断)

(3)确定M合法后,操作系统查询页表并找到页号对应的页表项,确定页面存放的内存块号。

(4)使用内存块号和页内偏移量计算得到物理地址(直接拼接),此时就可以访问内存单元了。

变换步骤如图:

🗽2.2.4 几个基本概念

页表项长度、页表长度、页面大小。

🏔️2.3 转换例题

🏔️2.4 注意

🏔️2.5 页表项大小

所以,尽管3个字节已经可以表示所有的内存块,但是为了计算方便,经常会将页表项扩充为四个字节

🏔️2.6 总结

🏝️3 具有快表的地址变换机构

🏜️3.1 总览

🏜️3.2 什么是快表

🏜️3.3 引入快表后,地址的变换过程

1. 快表是一种硬件设备,它的内容在每次进程切换之后都会删除,它的访问速度虽然很快,但是由于成本的限制,快表的存储空间不会很大。

2. 引入快表后,操作系统在得到逻辑地址后会分离得到页号,接着进入快表去寻找页号对应的内存块号,假如没找到就会进入慢表(也就是之前的页表)进行寻找,并将寻找结果复制一份存入快表有方便下次寻找。其他步骤与无快表的地址变换过程类似。

3. 示意图如下所示:

🏜️3.4 与快表命中率有关的题目

🏜️3.5 局部性原理

我们以下面这段代码为例:

🗽3.5.1 时间局部性

对于while(i<100)这一条指令,程序在不久的将来是会频繁访问的,对于i这个变量,程序在不久的将来也是会频繁访问。这就是时间局部性。

🗽3.5.2 空间局部性

对于a数组,它在内存中是连续存放的,假如此时系统访问了a[10],那么a[10]周围的数据就很有可能会被频繁访问。这是空间局部性。

3. 正是因为局部性原理,引入快表之后系统的速度就会快很多

🏜️3.6 知识总结

🕮 4 总结

操作系统,如默默守护的守夜者,无声地管理硬件与软件的交流,为计算机创造和谐秩序。

它是无形的引导者,让复杂的任务变得井然有序,为用户提供无忧体验。

操作系统的巧妙设计,让计算机变得更加智能高效,让人与科技之间的交流更加顺畅。

在每一次启动中,它如信任的伙伴,带领我们进入数字世界的奇妙旅程。

渴望挑战操作系统的学习路径和掌握进阶技术?不妨点击下方链接,一同探讨更多操作系统的奇迹吧。我们推出了引领趋势的💻OS专栏:《OS从基础到进阶》 ,旨在深度探索OS的实际应用和创新。🌐🔍

相关文章
|
3天前
|
算法 UED
深入理解操作系统:虚拟内存管理机制
【7月更文挑战第4天】在数字时代的浪潮中,操作系统的虚拟内存管理机制如同一座精巧的时间桥梁,连接着有限的物理资源与无限的程序需求。本文将揭开这座桥梁的秘密,从虚拟内存的基本概念出发,逐步深入到页面置换算法的世界,探讨它们如何影响系统性能和用户体验。通过对比分析不同的页面置换策略,我们旨在为读者提供一种全新的视角,以理解和评估现代操作系统中这一至关重要的功能。
6 1
|
5天前
|
存储 缓存 算法
操作系统的内存管理机制及其对系统性能的影响
本文深入探讨了操作系统中内存管理的关键技术和策略,以及它们如何影响计算机系统的整体性能。通过分析不同的内存分配算法、虚拟内存技术、以及缓存策略,本文旨在揭示这些机制对于提高资源利用效率、减少延迟和优化用户体验的重要性。结合最新的研究成果和实际案例,本文为读者提供了对操作系统内存管理深度理解的视角,并讨论了未来可能的发展趋势。
|
6天前
|
存储 安全 Linux
深入理解操作系统:从进程管理到内存分配
【6月更文挑战第30天】在数字时代的心脏,操作系统是现代计算不可或缺的组成部分。本文将深入探讨操作系统的核心功能,包括进程管理、内存分配以及文件系统管理。我们将通过实际案例分析,揭示这些机制如何在提高计算机性能的同时保证资源的有效利用。文章旨在为读者提供对操作系统工作原理的深刻理解,并展示其在现代技术中的应用价值。
|
11天前
|
存储 缓存
操作系统的虚拟内存管理机制
在现代计算机系统中,虚拟内存是一种至关重要的内存管理技术。它允许操作系统使用硬盘空间来扩展物理内存容量,从而支持更多并发运行的程序。本文将深入探讨虚拟内存的概念、实现方式以及其在操作系统中的作用和重要性。
|
11天前
|
存储 算法
探索现代操作系统中的虚拟内存管理技术
在数字时代的浪潮中,操作系统的心脏——虚拟内存管理技术,正以它独有的韵律跳动。本文将带你穿梭于操作系统的迷宫,揭开虚拟内存如何巧妙地扩展有限的物理内存之谜。从分页机制的精妙设计到交换空间的策略运用,我们将一探究竟。你将看到,虚拟内存不仅仅是一个存储数据的地方,它是速度与效率的协调者,是多任务处理的幕后英雄。随着技术的演进,虚拟内存管理不断优化,为应用程序提供了一片更为广阔的运行天地。让我们一同走进这个充满智慧的世界,感受操作系统中虚拟内存管理的魅力所在。
13 1
|
3天前
|
存储 算法 数据安全/隐私保护
探索现代操作系统的内存管理技术
【7月更文挑战第4天】本文将深入探讨现代操作系统中内存管理的关键技术和策略,包括虚拟内存、分页与分段、以及内存分配算法。我们将了解这些技术如何优化资源使用,提高系统性能,并确保数据安全和完整性。
|
4天前
|
缓存 算法 UED
操作系统中的内存管理技术及其性能影响
在现代计算机系统中,操作系统的内存管理机制对系统性能有着至关重要的影响。本文将深入探讨内存管理的关键技术,包括虚拟内存、分页和分段,以及它们如何影响系统的响应速度和资源利用效率。通过分析不同内存管理策略的性能表现,并结合最新的研究成果,本文旨在为读者提供关于优化内存管理以提高系统性能的实用指导。
|
5天前
|
算法 安全 UED
深入理解操作系统的虚拟内存管理机制
【7月更文挑战第2天】在现代计算机系统设计中,虚拟内存是实现内存管理高效、安全和可扩展的关键技术。本文将深入探讨虚拟内存的管理机制,包括分页技术、内存分配策略以及页面替换算法等核心概念。通过分析虚拟内存如何优化物理内存的使用,提高系统的运行效率,并讨论其在实际操作系统中的应用和面临的挑战,旨在为读者提供对虚拟内存管理机制的全面理解。
|
6天前
|
存储 算法 程序员
深入理解操作系统:从进程管理到内存分配
【7月更文挑战第1天】在数字时代的心脏,操作系统(OS)扮演着枢纽的角色。本文将探索操作系统的核心概念,包括进程管理、内存分配和文件系统,同时揭示这些机制如何协同工作以确保计算机系统的高效运行。我们将从用户和程序员的视角出发,分析操作系统如何在幕后默默支撑着我们的数字生活。
|
7天前
|
存储 算法 调度
深入理解操作系统:虚拟内存管理的艺术
【6月更文挑战第29天】在数字世界的无限风光背后,隐藏着一个不为人知的复杂世界——操作系统。本文将揭开操作系统中最为精妙的设计之一——虚拟内存管理的神秘面纱,从基础概念出发,逐步探索其背后的原理与实现机制。我们将通过生动的比喻和实例,带领读者领略虚拟内存如何在有限的物理资源上创造出无限的可能,以及它如何优化系统性能,提升用户体验。准备好了吗?让我们一同潜入操作系统的心脏,一探究竟。