免费智能真题库 > 历年试卷 > 程序员 > 2015年上半年 程序员 上午试卷 综合知识
  第27题      
  知识点:   虚拟存储器管理   分页   进程   中断
  关键词:   进程   请求分页系统   缺页中断   主存   中断        章/节:   软件基础知识       

 
在请求分页系统中,当运行进程访问的页面不在主存且主存中没有可用的空闲块时,系统应该先产生缺页中断,然后依次按照 (27)的顺序进行处理。
 
 
  A.  决定淘汰页一页面调出一页面调入
 
  B.  决定淘汰页—页面调入—页面调出
 
  C.  页面调出一决定淘汰页一页面调入
 
  D.  页面调出一页面调入一决定淘汰页
 
 
 

 
  第7题    2010年上半年  
   49%
若内存按字节编址,用存储容量为32KX8比特的存储器芯片构成地址编号AOOOOH至DFFFFH的内存空间,则至少需要(7) 片。
  第27题    2011年下半年  
   56%
某段式存储管理系统中的地址结构如下图所示,若系统以字节编址,则该系统允许的最大段长为(26) KB;(27)是错误的段号。
  第8题    2015年下半年  
   62%
采用虚拟存储器的目的是(8)。
   知识点讲解    
   · 虚拟存储器管理    · 分页    · 进程    · 中断
 
       虚拟存储器管理
               虚拟存储器的引入
               1)局部性原理
               存储管理策略的基础是局部性原理——进程往往会不均匀地、高度局部化地访问主存。局部性表现为时间局部性和空间局部性两类。
               .时间局部性:是指最近被访问的存储位置,很可能不久的将来还要访问,如循环、栈等。
               .空间局部性:是指存储访问有成组的倾向,当访问了某个位置后,很可能还要访问其附近的位置,如访问数组、代码顺序执行等。
               2)虚拟存储器的定义
               根据局部性原理,一个作业在运行之前,没有必要把作业全部装入主存,而仅将那些当前要运行的那部分页面或段先装入主存启动运行,其余部分暂时留在磁盘上。
               程序在运行时如果它所要访问的页(段)已调入主存,便可继续执行下去;但如果程序所要访问的页(段)尚未调入主存(称为缺页或缺段),程序应利用操作系统所提供的请求调页(段)功能,将它们调入主存,以使进程能继续执行下去。如果此时主存已满,无法再装入新的页(段),则还要再利用页(段)的置换功能,将主存中暂时不用的页(段)调出至磁盘上,以便腾出足够的主存空间后,再将所要访问的页(段)调入主存,使程序继续执行下去。这样,便可使一个大的用户程序在较小的主存空间中运行,也可使主存中同时装入更多的进程并发执行。从用户角度看,该系统所具有的主存容量,将比实际主存容量大得多,人们把这样的存储器称为虚拟存储器。
               虚拟存储器具有请求调入功能和置换功能,能仅把作业的一部分装入主存便可运行作业的存储器系统,能从逻辑上对主存容量进行扩充。
               3)虚拟存储器的实现
               (1)请求分页系统:在分页系统的基础上,增加了请求调页功能和页面置换功能所形成的页式虚拟存储系统。
               (2)请求分段系统:在分段系统的基础上,增加了请求调段功能和分段置换功能所形成的段式虚拟存储系统。
               请求分页中的硬件支持
               请求分页是目前常用的一种虚拟存储器方式。
               1)请求分页的页表机制
               请求分页的页表机制是在纯分页的页表机制上形成的,由于只将应用程序的一部分调入主存,还有一部分仍在磁盘上,故需在页表中再增加若干项,如状态位、访问字段、辅存地址等供程序(数据)在换进、换出时引用。
               2)缺页中断机构
               在请求分页系统中,每当所要访问的页面不在主存时,便要产生一个缺页中断,请求操作系统将所缺页调入主存。与一般中断的主要区别在于:缺页中断在指令执行期间产生和处理中断信号,而一般中断在一条指令执行完后检查和处理中断信号。缺页中断返回到该指令的开始重新执行该指令,而一般中断则返回到该指令的下一条指令执行。
               3)地址转换机构
               请求分页系统中的地址转换机构是在分页系统的地址转换机构的基础上,为实现虚拟存储器而增加了某些功能后形成的,如产生和处理缺页中断、从主存中换出一页等。
               页面置换算法
               1)最佳置换算法
               最佳(Optimal)置换算法是一种理想化的算法,性能最好,但在实际上难以实现,所以该算法通常用来评价其他算法。
               2)先进先出置换算法
               先进先出(FIFO)置换算法总是淘汰最先进入内存的页面。其算法实现简单,是一种最直观,也是性能最差的算法。
               3)最近最久未使用置换算法
               最近最久未使用(Least Recently Used, LRU)置换算法是选择最近最久未使用的页面予以淘汰,系统在每个页面设置一个访问字段,用以记录这个页面自上次被访问以来所经历的时间T,当要淘汰一个页面时,选择T最大的页面。
               4)最近未用置换算法
               最近未用(Not Used Recently, NUR)置换算法将最近一段时间未引用过的页面换出,是一种LRU的近似算法。
 
       分页
        Word是通过分页符决定文档分页的位置,也就是说,分页符用来表示上一页结束、下一页开始的位置。分页有自动分页和人工分页两种,自动分页是指文档中每个页面结尾处Word自动插入的分页符,该分页符也称为软分页符;人工分页是指通过Word提供的插入分页符命令,在指定位置上强制插入的分页符,该分页符也称为硬分页符。
        在页面视图、打印预览以及在打印出的文档中,分页符后的文本出现在新页中。在普通视图中,自动分页符显示为横穿页面的单点划线;人工分页符则显示为标有“分页符”字样的单点划线,如下图(a)所示。
        
        设置分页
        插入人工分页符的方法是单击新页的起始位置,选择“插入”→“分隔符”命令,打开“分隔符”对话框,如上图(b)所示。选择“分页符”单选按钮,单击“确定”按钮关闭对话框。
        删除分页符的方法是在普通视图下,先将光标移到分页符的单点划线中,按Delete键。
 
       进程
        简单而言,一个进程就是一个正在运行的程序。一般来说,一个进程至少应该包括以下几个方面的内容。
        .相应的程序:进程既然是一个正在运行的程序,当然需要有相应程序的代码和数据。
        .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中,即可运行。这样就实现了各个进程的轮流运行。
 
       中断
        中断是异步发生的,是来自处理器外部的I/O设备的信号的结果。硬件中断不是由任何一条专门的指令造成的,从这个意义上来说它是异步的。硬件中断的异常处理程序常常被称为中断处理程序(interrupt handler)。
               硬中断与软中断
               硬中断是由硬件产生的,例如磁盘、网卡、键盘、时钟等。每个设备或设备集都有它自己的IRQ(中断请求)。基于IRQ,CPU可以将相应的请求分发到对应的硬件驱动上。
               软中断是一组静态定义的下半部分接口,可以在所有的处理器上同时执行,即使两个类型相同也可以。但是一个软中断不会抢占另外的一个软中断,唯一可以抢占软中断的是硬中断。
               可屏蔽中断与不可屏蔽中断
               可屏蔽中断和不可屏蔽中断都属于外部中断,是由外部中断源引起的。不可屏蔽中断源一旦提出请求,CPU必须无条件响应,而对可屏蔽中断源的请求,CPU可以响应,也可以不响应。
               CPU一般设置两根中断请求输入线:可屏蔽中断请求INTR(Interrupt Require)和不可屏蔽中断请求NMI(Non Maskable Interrupt)。对于可屏蔽中断,除了受本身的屏蔽位控制外,还都要受一个总的控制,即CPU标志寄存器中的中断允许标志位IF(Interrupt Flag)的控制,IF位为1,可以得到CPU的响应,否则,得不到响应。IF位可以由用户控制,指令STI或Turbo C的Enable()函数,将IF位置1(开中断),指令CLI或Turbo_c的Disable()函数,将IF位清0(关中断)。
               中断优先级
               当多个中断源同时请求中断时,而CPU一次只能响应其中的一个中断,同时为了能响应所有中断,就引入中断优先级来处理。系统会根据引起中断事件的重要性和紧迫程度,将中断源分为若干个级别,称作中断优先级。中断优先级有两种:查询优先级和执行优先级。
               查询优先级是不可以更改和设置的,在该方式下当多个中断源同时产生中断信号时,中断仲裁器会选择中断源优先处理的顺序,此过程与是否发生中断服务程序的嵌套毫不相干。当CPU查询各个中断标志位的时候,会依照优先级顺序依次查询,当数个中断同时请求的时候,会优先查询到高查询优先级的中断标志位,但并不代表高查询优先级的中断可以打断已经并且正在执行的低查询优先级的中断服务。
               由于可屏蔽的中断源很多,故需要对其进行管理,如区分是哪个中断源发出的中断信号?哪个中断源最优先及怎样处理多级中断嵌套等。为此,可使用中断控制器对多个可屏蔽中断源进行管理。
               中断控制器能够对中断进行排队管理,避免中断信号的丢失,同时支持对不同中断进行优先级的配置,使高优先级中断能够中断低优先级中断,满足系统中具有更高时间约束特性功能的需要。
               中断嵌套
               当处理器正在处理一个中断时,有比该中断优先级高的中断源发出中断请求时,如果处理器正在执行中断处理程序,那么处理器会对高优先级的中断进行立即处理,处理完之后再返回到低优先级的中断服务程序继续执行。这样就形成了中断服务程序中套用中断服务程序的情况,即中断嵌套。可嵌套中断的处理流程和中断服务框图如下图所示。
               
               可嵌套中断处理流程
   题号导航      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 /
 
第27题    在手机中做本题