【操作系统】第三章:计算机体系结构及内存分层体系(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将会进一步处理这个问题;满足则正常的去找到对应物理地址的位置,从中取出指令的数据。


目录
相关文章
|
28天前
|
存储 安全 固态存储
计算机启动:从插上电源到操作系统启动的全过程
当我们插上电源,计算机从休眠状态苏醒,直至操作系统完全启动,这一系列复杂的过程涉及到硬件和软件的多个层面。本文将详细解析计算机插上电源后操作系统所做的工作,揭示这一过程的技术细节。
40 6
|
1月前
|
存储 监控 Java
深入理解计算机内存管理:优化策略与实践
深入理解计算机内存管理:优化策略与实践
|
4月前
|
存储 算法 网络协议
了解操作系统的基本原理和常见操作,提高计算机使用效率
了解操作系统的基本原理和常见操作,提高计算机使用效率
59 4
|
4月前
|
运维 安全 Linux
计算机架构“寒武纪爆发”,操作系统进化迸发中国浪潮
计算机架构“寒武纪爆发”,操作系统进化迸发中国浪潮
|
4月前
|
安全
计算机硬件升级增加内存(RAM)
【8月更文挑战第5天】
129 3
|
5月前
|
存储 固态存储 芯片
计算机中内存与存储
【7月更文挑战第28天】
98 1
|
5月前
|
存储 缓存 安全
【Linux】冯诺依曼体系结构与操作系统及其进程
【Linux】冯诺依曼体系结构与操作系统及其进程
180 1
|
5月前
操作系统的体系结构
操作系统的体系结构
|
5月前
|
存储 缓存 调度
计算机内存
计算机内存
|
5月前
|
Linux 调度
部署02-我们一般接触的是Mos和Wimdows这两款操作系统,很少接触到Linux,操作系统的概述,硬件是由计算机系统中由电子和机械,光电元件所组成的,CPU,内存,硬盘,软件是用户与计算机接口之间
部署02-我们一般接触的是Mos和Wimdows这两款操作系统,很少接触到Linux,操作系统的概述,硬件是由计算机系统中由电子和机械,光电元件所组成的,CPU,内存,硬盘,软件是用户与计算机接口之间