3-1计算机系统结构及内存分层体系

计算机启动后,需要对整个计算机系统进行管理和控制, 首先需要进行管理和控制的就是内存 。
这一章主要讲解下操作系统是如何管理物理内存的 。
首先需要了解计算机体系结构、内存的层次结构,才能知道操作系统有效的去管理这些已知的硬件物理内存 。
第二步需要知道操作系统怎么去和程序的编译执行交互的,
最后需要知道操作系统怎么去管理连续的物理内存分配 。
一、计算机体系结构和内存分层体系
计算机体系结构主要包含了三大部分内容 。
1、CPU,主要是完成对程序的控制
2、内存,放置了程序的代码和数据
3、外设
操作系统需要将CPU访问的物理内存有效的管理起来 。
内存包含哪些东西呢?
它并不仅仅是主存或者物理内存,他还包含其它一部分的内容,如上图,显示内存的层次结构 。
【3-1计算机系统结构及内存分层体系】什么是内存的层次结构?
就是说CPU要访问的指令或者数据,它所处的位置在什么地方,从上到下,可以看到,分为好几类:
1 寄存器,2 cache 这两部分都是位于CPU芯片内部的,操作系统是没法对它进行直接管理的 。速度快容量小
下面一部分是主存或者叫物理内存,主要是用于放置操作系统本身以及要运行的代码,特点容量比寄存器和cache大很多,速度相对cache和寄存器慢很多 。
最下面是硬盘容量大,速度慢 。
从上到下形成一个金字塔结构,越靠近CPU 速度越快,容量越小 。
我们希望我们运行的程序能够尽量达到数据访问要快,数据存储空间要大,同时满足这两个条件,其实很难兼得,但是如果有了操作系统的帮助,这一点其实是可以有效的达到的,这一点也是为什么我们要通过去了解操作系统管理物理内存y以及后续h会了解操作系统管理虚拟内存,能够完成近乎,看起来像是一种不可能完成的任务,这么一个很艰巨的任务 。

3-1计算机系统结构及内存分层体系

文章插图
操作系统在这里面到底要完成哪些事情呢?其实有如下几个目标:
1 抽象:希望应用程序在内存中运行的时候呢,由于操作系统的有效管理,使他不用考虑很多底层的细节,不用考虑物理内存在什么地方,不用考虑外设在什么地方,只需访问一个连续的地址空间就OK了,我们把这个地址空间一般成为逻辑地址空间 。
2 保护:因为在内存中可以运行多个应用程序,有可能会访问别的进程的地址空间,有可能破坏别的进程的地址空间,这实际上是有问题的,我们需要有一种有效的机制,不能坚定应用程序在运行中不会破坏别的应用程序,我们需要一种机制来保证进程中的地址空间是隔离的,隔离机制的实现是 靠操作系统来完成的 。
3 共享:进程之间也需要交互,怎么有效提供这种共享空间来使得,进程之间安全可靠有效的进行数据传递,这实际上也是通过操作系统的机制来完成的 。
4 虚拟化:当我们在内存中放了很多应用程序之后,其实会出现内存不够的情况,怎么让正在运行的程序获取它所需要的内存空间呢?其实体现一点,把最需要放到内存的数据放到内存中,那些暂时不需要放到内存的数据暂时不用去访问的数据,可以临时放到硬盘上去,通过这种方式,可以有效的实现一种虚拟的大的一种内存空间现象,这个管理过程,我们希望能做到对应用程序透明,同时还能够让应用程序尽量的去用它所需要的数据和空间,这样就通过操作系统去完成这种功能 。
上图,有4个放到内存中的程序,其中正在占用CPU的y运行的程序可能是P1,那么实际上是等待状态,尤其是P4,P4当前可能等待某个事情,这种情况下,它说访问的数据其实没有必要放到内存中去,P1在运行中可能需要更多的空间,可以通过操作系统把这一份空间导到,硬盘上去,上图右下角就有P4的应用程序的代码和程序 。