免费智能真题库 > 历年试卷 > 系统架构设计师 > 2015年下半年 系统架构设计师 上午试卷 综合知识
  第3题      
  知识点:   存储管理   存储组织   进程
  关键词:   段表   段式存储管理   进程   逻辑地址   物理地址   存储管理        章/节:   操作系统       

 
假设系统采用段式存储管理方法,进程P的段表如下所示。逻辑地址(3)不能转换为对应的物理地址;不能转换为对应的物理地址的原因是进行(4)。
 
 
  A.  (0,790)和(2,88)
 
  B.  (1,30)和(3,290)
 
  C.  (2,88)和(4,98)
 
  D.  (0,810)和(4,120)
 
 
 

 
  第1题    2021年下半年  
   40%
某计算机系统页面大小为4K,进程P1的页面变换表如下图所示,看P1要访问数据的逻辑地址为十六进制1B1AH,那么该逻辑地址经过变换后..
  第4题    2015年下半年  
   30%
假设系统采用段式存储管理方法,进程P的段表如下所示。逻辑地址(3)不能转换为对应的物理地址;不能转换为对应的物理地址的原因..
  第2题    2019年下半年  
   57%
进程P有8个页面,页号分别为0~7,页面大小为4K,假设系统给进程P分配了4个存储块,进程P的页面变换表如下所示。表中状态位等于1和..
   知识点讲解    
   · 存储管理    · 存储组织    · 进程
 
       存储管理
        在虚拟存储器的管理中,涉及载入(调入)、放置(放入分区)和置换(swapping)等问题。
        (1)调入策略:即何时将一页或一段从外存中调入内存,通常有两种策略,一种是请求调入法,即需要使用时才调入;另一种是先行调入法,即将预计要使用的页/段先行调入内存。
        (2)放置策略:也就是调入后,放在内存的什么位置,这与内存管理基本上是一致的。
        (3)置换策略:由于实际内存是小于虚存的,因此可能会发生内存中已满,但需要使用的页不在内存中这一情况(称为缺页中断)。这时就需要进行置换,即将一些内存中的页淘汰到外存,腾出空间给要使用的页,这个过程也称为Swapping。
               置换算法
               常见的置换算法如下:
               (1)最优(Optimized,OPT)算法:选择淘汰不再使用或将来才使用的页,这是理想的算法,但难以实现,常用于淘汰算法的比较。
               (2)随机(Rand)算法:随机地选择淘汰的页,开销小,但可能选中立即就要访问的页。
               (3)先进先出(First In and First Out,FIFO)算法:选择淘汰在内存驻留时间最长的页,似乎合理,但可能淘汰立即要使用的页。另外,使用FIFO算法时,在未给予进程分配足够的页面时,有时会出现给予进程的页面数越多,缺页次数反而增加的异常现象,这称为Belady现象。例如,若某个进程访问页面的顺序(称页面访问序列)是432143543215,当进程拥有3个主存页面时,发生缺页率比拥有4个主存页面时要小。
               (4)最近最少使用(Least Recently Used,LRU)算法:选择淘汰离当前点时刻最近的一段内使用得最少的页。例如,若某个进程拥有3个主存页面,已访问页面的顺序是4314,现在如果要访问第2页,则需要淘汰第3页,因为第1、4页刚刚使用了。这个算法的主要出发点是,如果某页被访问了,则它可能马上就要被访问。OPT算法和LRU算法都不会发生Belady异常现象。
               局部性原理
               存储管理策略的基础是局部性原理,即进程往往会不均匀地高度局部化地访问内存。局部性分为时间局部性和空间局部性。时间局部性是指最近访问存储位置,很可能不久的将来还要访问;空间局部性是指存储访问有成组的倾向:当访问了某个位置后,很可能也要访问其附近的位置。
               根据局部性原理的特征性,Denning阐述了程序性能的工作集理论。工作集是进程频繁访问的页面的集合。工作集理论指出,为使进程有效地运行,它的页面工作集应驻留内存中。否则,由于进程频繁地从外存请求页面,而出现称为“颠簸”(抖动)的过度的页面调度活动。此时,处理页面调度的时间超过了程序的执行时间。显然,此时CPU的有效利用率会急速下降。
               通常用两种等价的方法确定进程的工作集,一种是将工作集确定为在定长的页面访问序列(工作集窗口)中的页面集合,另一种是将工作集确定为在定长时间间隔中涉及页面的集合。工作集的大小依赖于工作集窗口的大小,在进程执行时,工作集会发生变化。有时,当进程进入另一个完全不同的执行阶段时,工作集会出现显著的变化。不过在一个进程的执行过程中,工作集的大小处于稳定状态的时间基本上占绝大多数。
               另一种控制颠簸的技术是控制缺页率。操作系统规定缺页率的上下限,当一个进程的缺页率高于上限时,表明该进程需要更大的内存空间,则分配较多的内存页面给它,当进程的缺页率低于下限时,表明该进程占用的内存空间过大,可以适当地收回若干内存页面。
 
       存储组织
        虚拟存储器可以分为单一连续分区、固定分区、可变分区、可重定位分区、页式、段式、段页式7种。
        (1)单一连续分区。把所有用户区都分配给唯一的用户作业,当作业被调度时,进程全部进入内存,一旦完成,所有内存恢复空闲,因此,它不支持多道程序设计。
        (2)固定分区。这是支持多道程序设计的最简单的存储管理方法,它把内存划分成若干个固定的和大小不同的分区,每个分区能够装入一个作业,分区的大小是固定的,算法简单,但是容易生成较多的存储器碎片。
        (3)可变分区。引入可变分区后虽然内存分配更灵活,也提高了内存利用率,但是由于系统在不断地分配和回收中,必定会出现一些不连续的小的空闲区,尽管这些小的空闲区的总和超过某一个作业要求的空间,但是由于不连续而无法分配,产生了碎片。解决碎片的方法是拼接(紧凑),即向一个方向(如向低地址端)移动已分配的作业,使那些零散的小空闲区在另一方向连成一片。分区的拼接技术,一方面是要求能够对作业进行重定位,另一方面系统在拼接时要耗费较多的时间。
        (4)可重定位分区。这是克服固定分区碎片问题的一种存储分配方法,它能够把相邻的空闲存储空间合并成一个完整的空区,还能够整理存储器内各个作业的存储位置,以达到消除存储碎片和紧缩存储空间的目的。紧缩工作需要花费大量的时间和系统资源。
        (5)页式。页式存储组织的基本原理是将各进程的虚拟空间划分为若干个长度相等的页,把内存空间以与页相等的大小划分为大小相等的片或页面,采用请求调页或预调页技术实现内外存的统一管理。页式存储组织的主要优点是利用率高,产生的内存碎片小,内存空间分配及管理简单。主要缺点是要有相应的硬件支持,增加了系统开销;请求调页的算法如选择不当,有可能产生抖动现象。
        (6)段式。一个作业是由若干个具有逻辑意义的段(如主程序、子程序、数据段等)组成。段式存储管理中,允许程序(作业)占据内存中若干分离的分区。分段系统中的虚地址是一个有序对(段号,段内位移)。系统为每一个作业建立一个段表,其内容包括段号与内存起始地址的对应关系、段长和状态等。状态指出这个段是否已调入内存,若已调入内存,则指出这个段的起始地址位置,状态同时也指出这个段的访问权限。如果该段尚未调入内存,则产生缺段中断,以便装入所需要的段。段式存储管理的主要优点是便于多道程序共享内存,便于对存储器的保护,各段程序修改互不影响。其缺点是内存利用率低,内存碎片浪费大。
        (7)段页式。这是分段式和分页式结合的存储管理方法,充分利用了分段管理和分页管理的优点。作业按逻辑结构分段,段内分页,内存分块。作业只需将部分页装入即可运行,所以支持虚拟存储,可实现动态连接和装配。
        现在,最常见的虚存组织有分段技术、分页技术、段页式技术3种。下面把这3种存储组织的特点列于下表。
        
        常见的虚存组织
        说明:段内偏移也称为段内地址,页内偏移也称为页内地址。
        例如:某页式存储系统的地址变换过程如下图所示。假定页面的大小为8K,下图中所示的十进制逻辑地址9612经过地址变换后,形成的物理地址a应为十进制多少呢?
        
        页式存储系统的地址变换过程
        因为8K=213,所以页内地址有13位。逻辑地址9612转换成二进制,得到10 0101 1000 1100,这里的低13位为页内偏移量,最高一位则为页号,所以逻辑地址9612的页号为1,根据上图的对照表,即物理块号为3(二进制形式为11)。把物理块号和页内偏移地址拼合得到110 0101 1000 1100,再转换为十进制,得到25 996。
        :在现行的虚存组织方面,最常见的就是段页式管理。在进行虚实地址转换时,可以采用的公式如下:
        (((x)+s)+p)×2n+d
        其中x为基号,s为段号,p为段内页号,d为页内偏移,n的值为d的总位数,(x)表示x里的内容。
 
       进程
        简单而言,一个进程就是一个正在运行的程序。一般来说,一个进程至少应该包括以下几个方面的内容。
        .相应的程序:进程既然是一个正在运行的程序,当然需要有相应程序的代码和数据。
        .CPU上下文:指程序在运行时,CPU中各种寄存器的当前值,包括:程序计数器,用于记录将要取出的指令的地址;程序状态字,用于记录处理器的运行状态信息;通用寄存器,用于存放数据或地址;段寄存器,用于存放程序中各个段的地址;栈指针寄存器,用于记录栈顶的当前位置。
        .一组系统资源:包括操作系统用来管理进程的数据结构、进程的内存地址空间、进程正在使用的文件等。
        进程有动态性、独立性和并发行三个特性。
        (1)动态性。进程是一个正在运行的程序,而程序的运行状态是在不断地变化的。例如,当一个程序在运行的时候,每执行完一条指令,PC寄存器的值就会增加,指向下一条即将执行的指令。而CPU中用来存放数据和地址的那些通用寄存器,它们的值肯定也不断地变化。另外,堆和栈的内容也在不断地变化,每当发生一次函数调用时,就会在栈中分配一块空间,用来存放此次函数调用的参数和局部变量。而当函数调用结束后,这块栈空间就会被释放掉。
        (2)独立性。一个进程是一个独立的实体,是计算机系统资源的使用单位。每个进程都有自己的运行上下文和内部状态,在它运行的时候独立于其他的进程。
        (3)并发性。从宏观上来看,在系统中同时有多个进程存在,它们相互独立地运行。
        下图表示四个进程A、B、C、D在系统中并发地运行。从中可以看出,虽然从宏观上来说,这四个进程都是在系统中运行,但从微观上来看,在任何一个特定的时刻,只有一个进程在CPU上运行。从时间上来看,开始是进程A在运行,然后是进程B在运行,然后是进程C和进程D。接下来又轮到了进程A去运行。因此,在单CPU的情形下,所谓的并发性,指的是宏观上并发运行,而微观上还是顺序运行,各个进程轮流去使用CPU资源。
        
        四个进程在并发运行
        在具体实现上,以CPU中的程序计数器PC为例,真正物理上的PC寄存器只有一个。当四个进程在轮流执行时,PC取值的运动轨迹是先在进程A内部流动,然后再到进程B的内部流动,再到进程C和D。从进程的独立性角度来说,每个进程都有“自己”独立的PC寄存器,即逻辑上的PC寄存器,它们的取值相互独立、互不影响。所谓的逻辑PC,其实就是一个内存变量。例如,在上图中,当进程A要执行的时候,就把A的逻辑PC的值拷贝到物理PC中,然后开始运行。当轮到B运行的时候,先把物理PC的当前值保存到A的逻辑PC中,然后再把B的逻辑PC的值装入到物理PC中,即可运行。这样就实现了各个进程的轮流运行。
   题号导航      2015年下半年 系统架构设计师 上午试卷 综合知识   本试卷我的完整做题情况  
1 /
2 /
3 /
4 /
5 /
6 /
7 /
8 /
9 /
10 /
11 /
12 /
13 /
14 /
15 /
 
16 /
17 /
18 /
19 /
20 /
21 /
22 /
23 /
24 /
25 /
26 /
27 /
28 /
29 /
30 /
 
31 /
32 /
33 /
34 /
35 /
36 /
37 /
38 /
39 /
40 /
41 /
42 /
43 /
44 /
45 /
 
46 /
47 /
48 /
49 /
50 /
51 /
52 /
53 /
54 /
55 /
56 /
57 /
58 /
59 /
60 /
 
61 /
62 /
63 /
64 /
65 /
66 /
67 /
68 /
69 /
70 /
71 /
72 /
73 /
74 /
75 /
 
第3题    在手机中做本题