操作系统学习4

地址空间与地址生成

1、地址空间:物理地址空间和逻辑地址空间

物理地址空间:硬件支持的地址空间

逻辑地址空间:一个运行的程序所拥有的内存范围

2、逻辑地址的生成



连续内存分配:内存碎片与分区的动态分配(内存分配很重要)

1、内存碎片问题:空闲内存不能被使用,包括外部碎片和内部碎片,这都是要尽力避免的


2、分区的动态分配,有三种内存分配算法:首次适配,最优适配,最差适配

3、首次适配:首次适应算法从空闲分区表的第一个表目起查找该表,把最先能够满足要求的空闲区分配给作业,这种方法目的在于减少查找时间。为适应这种算法,空闲分区表(空闲区链)中的空闲分区要按地址由低到高进行排序。该算法优先使用低址部分空闲区,在低址空间造成许多小的空闲区,在高地址空间保留大的空闲区。优点是简单,容易在尾部产生更大的空闲块。缺点是低址部分不断被划分,会留下许多难以利用的,很小的空闲分区,称为碎片。而每次查找又都是从低址部分开始的,这无疑又会增加查找可用空闲分区时的开销。


4、最优适配:



5、最坏匹配



6、可以看出,上面的三种算法都会产生很多碎片,这是个很大的问题,有以下几种算法是设法减少碎片。

7、压缩式碎片整理:重置程序以合并空洞,要求所有程序是动态可重置的。问题是何时重置,以及运行开销。

8、交换式碎片整理:把磁盘当成虚拟内存,把一些在内存中仍旧在等待的程序放在虚拟内存中,让有内存需求的程序先占用内存执行。问题是哪些程序要进行交换,以及什么时候进行交换。

非连续内存分配(分段)

1、为什么需要非连续内存分配?

(1)连续内存分配的缺点,包括每次分配给一个程序的物理内存必须是连续的、内存利用率较低、有内碎片和外碎片问题。

(2)非连续内存分配的优点,包括分配给一个程序的物理地址空间可以是非连续的、更好的内存利用率和管理、允许共享代码、数据、库等、支持动态加载和动态链接。

(3)非连续内存分配的缺点:开销比较大。

2、对于非连续内存管理,主要的问题是如何建立虚拟地址和物理地址之间的转换,有软件方案和硬件方案两种方法。如果用软件方法,开销比较大,所以一般要考虑使用硬件方案,与计算机的硬件结合。

3、硬件方案:分段、分页。

4、分段:分段指的是,对于每一个程序来说,程序是由各种各样的段组成的,有主程序,子程序,共享的各种库,数据的栈段,堆段,库等,不同的段有不同的属性。我们根据程序的特点,把这些各种不同性质的段有效地区别和隔离出来,更好地进行管理,把各个原本是逻辑上连续的地址空间的段,分散到不同的多个物理地址空间中。分段的好处是可以对一些程序段进行共享,可以对另外一些不同权限的程序段进行隔离,保证相互访问安全。主要要了解的是程序的分段地址空间和分段寻址方案。



需要有一种映射机制,把逻辑地址空间映射到物理地址空间中。这种机制,如果用软件实现,对于每一次内存访问都要进行一次映射,这样开销就很大。这里使用的是硬件的方案。

5、段访问机制。事实上,程序的一个一维逻辑地址,采用分段机制的话在内存中事实上是由不同的段组成的,这就需要一个段号s和一个段内的偏移addr。一个段,事实上就是一个内存块。如果程序想访问内存地址,就需要同时知道s和addr。有两种方案:(1)s和addr分开,分别有一个段寄存器和地址寄存器,如x86.(2)s和addr合在一起组成一个完整的地址,没有专门的段寄存器。他们都需要操作系统来维护一个段表。


6、其实分段用得比较少,绝大部分都用的是分页机制。分页:分页和分段的主要区别,就是分段里面,各个段的大小都是不一样的,以及分段的地址是二维的,分页的地址是一维的。对于分页,每个页都是大小固定一样的。一般把物理内存和逻辑地址空间划分为固定大小的帧,一般是2的幂。需要建立逻辑页(Page)和物理页(Frame)之间的映射关系。需要用到页表,MMU、TLB。

7、帧(Frame)寻址方式,也就是物理寻址方式:物理内存被划分为大小相等的帧。一个内存的物理地址是个二元组(f,o)。f是帧号,它共有F位,所以一共有2的F次方个帧。o是帧内偏移,它有S位,每帧有2的S次方个字节。



8、页,Page,逻辑寻址方式:与Frame很类似,区别是页帧号f的size可能不一样,但是帧内偏移o的size是一样的。在这幅图,虚拟地址其实就是逻辑地址,是同样的概念。大小的计算方式都是一样的。


9、逻辑地址到物理地址的映射:操作系统要维护一个页表。 



10、详细分析页表。f前面有三个标志位,第二位表示对应物理帧是否存在。1代表存在,0代表不存在。



11、页表访问机制的问题:主要是空间代价的问题和时间开销问题,也就是有可能页表非常大,或者系统中同时运行的多个程序所以要维护多个页表、访问一个内存单元需要两次内存访问,一次获取页表项,一次用于访问数据。因此需要一些方法来优化。一般思路是两种,解决运行时间开销问题使用缓存Cache(把一些最常用的数据或内容缓存到CPU的缓存中),解决空间问题使用间接访问(把一个很大的空间拆分成小空间,通过多级页表机制等)。这也是大部分遇到时间和空间问题的计算机问题的解决思路。

12、缓存的思路。MMU(内存管理单元)里面有个TLB(Translation Look-aside Buffer)。把经常用到的一些页表项放入TLB中,提升速度。每次先查TLB,如果存在那就直接就得到物理地址。这就可以避免一次对页表的访问。


13、间接访问思路,使用多级页表。通过这个方式,虽然运行时间有点大,增多了一次对内存的访问,但是某些不存在映射关系的页表项就不用占用内存了。


14、如果逻辑地址空间很大,会造成两个问题:(1)前向映射页表就变得很繁琐,比如五级列表;(2)逻辑地址空间很大,也就是寻址的空间很大,也就意味着对应的页表就越多。解决这个问题的思路是有没有办法,令页表的大小和逻辑地址的大小尽量脱钩,不是让页表与逻辑地址空间的大小对应,而是让页表与物理地址空间的大小相对应。这就是反向页表。有以下几种方案:

(1)页寄存器的方案。




(2)使用关联内存(很少用,因为硬件设计复杂)



(3)使用基于哈希查找的方案‘

虚拟内存

1、为什么要用虚拟内存?

根本原因:内存不够用,程序规模的增长速度远大于存储器容量的增长速度


2、目前解决内存不够用这个问题的几个技术:


手动的覆盖,也就是手动地在编写程序的过程中,例如MS-DOS,通过程序员精心的安排,把常用的代码放在内存中,不常用的放在内存中。

自动的交换,也就是在程序运行过程中把内存中当前一些不在运行的程序放进硬盘中。但是交换的代价是比较大的,因为每次交换要把整个程序移出到硬盘中,要运行了又要导回内存中。

3、分时操作系统和多道程序操作系统的区别

多道程序系统是在计算机内存中同时存放几道相互独立的程序,使它们在管理程序控制之下,相互穿插的运行。 两个或两个以上程序在计算机系统中同处于开始和结束之间的状态。这就称为多道程序技术运行的特征:多道、宏观上并行、微观上串行。      多道程序设计指的是允许多个程序同时进入一个计算机系统的主存储器并启动进行计算的方法。也就是说,计算机内存中可以同时存放多道(两个以上相互独立的)程序,它们都处于开始和结束之间。从宏观上看是并行的,多道程序都处于运行中,并且都没有运行结束;从微观上看是串行的,各道程序轮流使用CPU,交替执行。引入多道程序设计技术的根本目的是为了提高CPU的利用率,充分发挥计算机系统部件的并行性,现代计算机系统都采用了多道程序设计技术。      分时操作系统是使一台计算机同时为几个、几十个甚至几百个用户服务的一种操作系统。把计算机与许多终端用户连接起来,分时操作系统将系统处理机时间与内存空间按一定的时间间隔,轮流地切换给各终端用户的程序使用。由于时间间隔很短,每个用户的感觉就像他独占计算机一样。分时操作系统的特点是可有效增加资源的使用率。例如UNIX系统就采用剥夺式动态优先的CPU调度,有力地支持分时操作。      分时操作系统是给不同用户提供程序的使用,而多道程序系统则是不同程序间的穿插运行。      总之,分时操作系统主要是针对于多用户来说的,而多道程序系统主要是针对于多程序来说的,注意用户和程序之间的区别。

4、手动的覆盖技术,代表:MS-DOS


例子:



5、交换技术(Unix开始使用,由操作系统进行自动管理的开始):




交换技术的缺点:以进程为交换单位,需要把进程的整个地址空间都换进换出,增加了处理器的开销

6、虚拟内存技术(充分吸收了覆盖技术和交换技术的优点):

在这幅图中,操作系统的内核是常驻内存的,但是其他程序不需要这样



7、虚拟内存技术的基石或者前提:程序的局部性原理

 

如果程序的局部性很好,那就会很高效。

8、虚拟内存的特点:


9、虚拟内存技术的实现方式:

虚拟页式内存管理,以页为单位。大部分都是用页式管理。



这个时候,对于页表表项的内容,他增加了几个位,这几个位对于虚拟内存技术很重要


接下来是具体的缺页中断的过程:



可以看出,在虚拟内存技术中,页面置换算法是很重要的,也就是要决定在物理内存中,哪些页可以被外存中的某些页替代等。页面置换算法主要有:


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值