【操作系统】第三章:计算机体系结构及内存分层体系(Part1:计算机体系结构)

简介: 【操作系统】第三章:计算机体系结构及内存分层体系(Part1:计算机体系结构)

目录


  • 计算机体系结构
  • 内存的层次结构
  • 操作系统在内存中的目标
  • 地址空间&地址生成
  •      逻辑地址空间的生成
  • 地址空间的定义
  • 操作系统的作用


正文


计算机体系结构


4ace177a422d60d58354d21ac986e28d_watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0NoYWhvdA==,size_16,color_FFFFFF,t_70.png计算机体系结构分为三大块内容。如图所示

CPU:CPU完成了整个程序、软件的控制

内存:放置程序的代码和它所处理的数据

设备:各种外设,配合执行一系列额外的工作(比如保存数据到硬盘中,需要鼠标点点点)。输入输出(IO操作)

f84ed4238e8e58467dd0d1d0410fcc78_watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0NoYWhvdA==,size_16,color_FFFFFF,t_70.png



内存的层次结构


5bc30331d257238cb7d3b1d04aec2fce_watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0NoYWhvdA==,size_16,color_FFFFFF,t_70.png

内存层级结构:就是CPU要访问的指令或者数据他所在的位置在什么地方。从上到下,CPU可以访问的数据是寄存器和闪存。这两部分是位于CPU芯片内部的,操作系统不能对其直接管理。他们速度很快容量很小,所以访问的数据有限。为此我们需要主存(物理内存),主存需要存放OS本身和OS运行的代码,主存的容量比寄存器和闪存大很多,速度相对比较慢。主存一掉电,其中的数据就会丢失,而且主存容量仍然小于硬盘容量,所以我们需要保存数据到硬盘上。

所以越靠近CPU,读取速度越快,存储容量越小。


操作系统在内存中的目标


b4d3602e417a9d7e2b8e63a460dce627_watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0NoYWhvdA==,size_16,color_FFFFFF,t_70.png

1.抽象:应用程序在内存中运行时,由于OS的管理,能够不用考虑过多的底层细节(不需考虑物理内存在哪,外设在哪)只需要掌握一个连续的地址空间(逻辑地址空间)。

2.保护:内存中可以同时运行多个应用程序,多个不同的应用程序相互之间可能会访问彼此的地址空间,所以我们需要隔离这些应用程序隔离。这个机制的实现就需要OS来完成。

3共享:访问相同内存,使进程之间可以安全可靠的数据传递。

4.虚拟化:当内存中储存程序比较多时,很容易出现内存不够的情况。所以我们需要更多的地址空间,我们把最需要放到内存中的数据放在内存中,把那些没那么必要的程序暂时放到硬盘中。这个管理过程我们希望对应用程序透明,同时令应用程序尽量用所需要的数据和空间。这个过程就是虚拟化。

image.png


地址空间&地址生成


b250b2ed2b51facb1c03e4c21e49776d_watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0NoYWhvdA==,size_16,color_FFFFFF,t_70.png

有两种地址空间。物理/逻辑地址空间(连续的物理地址空间)

物理地址空间和硬件直接对应,比如内存条代表的主存和硬盘代表的另一种存储空间。

逻辑内存空间是一个运行中的程序所看到的内存空间,相对而言吗他看到的地址空间更加简单(线性的),我们的应用程序因此很容易去访问和做控制及数据访问操作。图中的指令最终一定会放在主存或者硬盘中,现在位于箭头指向的程序中的某一位置。这个映射关系是需要OS进行管理的。

我们在机器里,总线上看到的地址是物理地址。所有的物理地址构成的空间由硬件支持的。


逻辑地址空间的生成


f442828a408500c3d59080605b77a3f6_watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0NoYWhvdA==,size_16,color_FFFFFF,t_70.png

C程序变为汇编语言再变成机器语言,他会把编的函数名和符号名变成新的地址。.o程序起始地址全都是从零开始,里面的函数名和符号名都会变成相应的地址。另外一个编译过程中用到的工具lniker会把多个.0程序变成单一的应用程序,这个程序可以在内存中执行但是目前还存在硬盘中的程序,最后一步,放在硬盘中的执行程序再通过loader放到内存中去运行,这一步需要去完成一个分配逻辑地址的工作。相对于执行程序而言,地址会有一定的偏移量,可以为0,然后所有的程序会依照偏移量进行正确的访问和指令的操作。

程序放到内存中去后,他仍然是一个逻辑地址,而不是物理地址。

f56d66e00f789cd843cc09d548f34956_watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0NoYWhvdA==,size_16,color_FFFFFF,t_70.png


地址空间的定义


8888888888.gif

映射关系完成了一个从逻辑地址到物理地址的映射,一个逻辑地址具体的对应的物理地址知道了的话,就可以从具体的外设中读写数据。

流程描述:当CPU需要某条指令时,当前指令需要ALU,会将相应参数传给ALU。CPU里的MMU会去查找逻辑地址的映射表中是否有对应的物理地址,如果有直接找到对应地址;没有的话,就会去内存中找。找到后会给CPU发出请求,需要某条物理地址的指令内容,主存会把内存的内容通过总线传给CPU,然后CPU开始执行指令。这过程里OS起到的作用就是:1,在这些步骤之前需要建好这个映射关系表,这就是物理地址生成的过程。这个关系可以放在内存中由CPU来缓存,可以加快这个访问的过程。


操作系统的作用


辜负她.gif

操作系统需要确保放到内存中的程序之间不能相互干扰,为此需要保证每个程序访问的地址程序是合法的(限制在约束范围之内的)。限制和约束也由OS完成。

一个程序可以有效访问的地址空间:1,起始地址;2,长度(有一块区域属于这个程序的合理访问区间,超出这个范围,那么这个程序的访问就不合法)。逻辑地址如果不满足区域限制,CPU会产生一个内存访问异常,OS将会进一步处理这个问题;满足则正常的去找到对应物理地址的位置,从中取出指令的数据。


目录
相关文章
|
2月前
|
开发框架 .NET PHP
网站应用项目如何选择阿里云服务器实例规格+内存+CPU+带宽+操作系统等配置
对于使用阿里云服务器的搭建网站的用户来说,面对众多可选的实例规格和配置选项,我们应该如何做出最佳选择,以最大化业务效益并控制成本,成为大家比较关注的问题,如果实例、内存、CPU、带宽等配置选择不合适,可能会影响到自己业务在云服务器上的计算性能及后期运营状况,本文将详细解析企业在搭建网站应用项目时选购阿里云服务器应考虑的一些因素,以供参考。
|
4月前
|
分布式计算 算法 大数据
探索操作系统的核心:调度与内存管理机制
【10月更文挑战第11天】 本文深入探讨了操作系统中两大核心功能——调度与内存管理机制。通过分析调度算法、进程状态转换及内存分配策略等关键方面,揭示了它们如何共同维护系统性能和稳定性。旨在为读者提供对操作系统内部运作的深刻理解,同时引起对优化策略的思考。
116 5
|
4月前
|
Java C语言 iOS开发
MacOS环境-手写操作系统-16-内存管理 解析内存状态
MacOS环境-手写操作系统-16-内存管理 解析内存状态
66 0
|
6月前
|
算法 程序员
理解操作系统内存管理:页面置换算法全解析
大家好,我是小米,热爱分享技术的大哥哥!今天聊的是操作系统中的页面置换算法。它解决的是内存满载时,如何选择合适的页面移出以腾出空间的问题。主要有三种算法:FIFO(先进先出),简单但性能不佳;LRU(最近最久未使用),考虑时间局部性,性能较好但实现较复杂;OPT(最佳置换),理论上最优但无法实际应用。这些算法各有千秋,在实际应用中需根据场景选择最合适的方案。希望这能帮大家更好地理解内存管理的核心机制!
266 2
|
7月前
|
Cloud Native Devops 数据库
云原生架构:未来软件开发的引擎深入理解操作系统的虚拟内存管理
【7月更文挑战第30天】在这篇文章中,我们将深入探讨云原生架构的概念,以及它如何改变软件开发的世界。我们将从云原生的基本概念开始,然后深入到它的关键技术和实践,最后讨论它对软件开发的未来影响。无论你是软件开发者,还是IT专业人士,这篇文章都将为你提供深入理解和掌握云原生架构的重要信息。 【7月更文挑战第30天】在数字世界的构建中,虚拟内存是操作系统不可或缺的一环。本文将探索虚拟内存的核心概念、工作机制及其对现代计算环境的重要性,同时揭示其背后的技术细节和面临的挑战。
68 3
|
2月前
|
存储 监控 算法
深入探索Java虚拟机(JVM)的内存管理机制
本文旨在为读者提供对Java虚拟机(JVM)内存管理机制的深入理解。通过详细解析JVM的内存结构、垃圾回收算法以及性能优化策略,本文不仅揭示了Java程序高效运行背后的原理,还为开发者提供了优化应用程序性能的实用技巧。不同于常规摘要仅概述文章大意,本文摘要将简要介绍JVM内存管理的关键点,为读者提供一个清晰的学习路线图。
|
3月前
|
Java
JVM内存参数
-Xmx[]:堆空间最大内存 -Xms[]:堆空间最小内存,一般设置成跟堆空间最大内存一样的 -Xmn[]:新生代的最大内存 -xx[use 垃圾回收器名称]:指定垃圾回收器 -xss:设置单个线程栈大小 一般设堆空间为最大可用物理地址的百分之80
|
3月前
|
Java
JVM运行时数据区(内存结构)
1)虚拟机栈:每次调用方法都会在虚拟机栈中产生一个栈帧,每个栈帧中都有方法的参数、局部变量、方法出口等信息,方法执行完毕后释放栈帧 (2)本地方法栈:为native修饰的本地方法提供的空间,在HotSpot中与虚拟机合二为一 (3)程序计数器:保存指令执行的地址,方便线程切回后能继续执行代码
38 3
|
3月前
|
存储 缓存 监控
Elasticsearch集群JVM调优堆外内存
Elasticsearch集群JVM调优堆外内存
73 1
|
3月前
|
缓存 Prometheus 监控
Elasticsearch集群JVM调优设置合适的堆内存大小
Elasticsearch集群JVM调优设置合适的堆内存大小
646 1