处理缺页中断

处理缺页中断
处理缺页中断

实验四处理缺页中断

1.实验目的

深入了解页式存储管理如何实现地址转换;

进一步认识页式虚拟存储管理中如何处理缺页中断。

2.实验预备知识

页式存储管理中的地址转换的方法;

页式虚拟存储的缺页中断处理方法。

3.实验内容

编写程序完成页式虚拟存储管理中地址转换过程和模拟缺页中断的处理。实验具体包括:首先对给定的地址进行地址转换工作,若发生缺页则先进行缺页中断处理,然后再进行地址转换;最后编写主函数对所作工作进程测试。

假定主存64KB ,每个主存块1024字节,作业最大支持到64KB ,系统中每个作业分得主存块4块。

4.提示与讲解

页式存储管理中地址转换过程很简单,假定主存块的大小为2n 字节,主存大小为2m'字节和逻辑地址m 位,则进行地址转换时,首先从逻辑地址中的高m-n 位中取得页号,然后根据页号查页表,得到块号,并将块号放入物理地址的高m'-n 位,最后从逻辑地址中取得低n 位放入物理地址的低n 位就得到了物理地址,过程如图1所示。

图1 页式存储管理系统地址转换示意图

地址转换是由硬件完成的,实验中使用软件程序模拟地址转换过程,模拟地址转换的流程图如图2所示(实验中假定主存64KB ,每个主存块1024字节,即n=10,m'=16,物理地址中块号6位、块内地址10位;作业最大64KB ,即m=16,逻辑地址中页号6位、页内地址10位)。

在页式虚拟存储管理方式中,作业信息作为副本放在磁盘上,作业执行时仅把作业信息的部分页面装入主存储器,作业执行时若访问的页面在主存中,则按上述方式进行地址转换,若访问的页面不在主存中,则产生一个“缺页中断”,

逻辑地址

由操作系统把当前所需的页面装入主存储器后,再次执行时才可以按上述方法进行地址转换。页式虚拟存储管理方式中页表除页号和该页对应的主存块号外,至少还要包括存在标志(该页是否在主存),磁盘位置(该页的副本在磁盘上的位置)和修改标志(该页是否修改过)。这样,在实验中页表格式如图2所示。

页表用数组模拟,在实验中页表数据结构定义为(同学们可自行定义其它功能等价的结构):

define n 32 /*实验中假定的页表长度,页表的长度实际上是由系统按照作业长度决定的*/

struct

{int lnumber; /*页号*/

int flag; /*表示该页是否在主存,“1”表示在主存,“0”表示不在主存*/

int pnumber; /*该页所在主存块的块号*/

int write; /*该页是否被修改过,“1”表示修改过,“0”表示没有修改过*/

int dnumber; /*该页存放在磁盘上的位置,即磁盘块号*/ }page[n]; /*页表定义*/

图2 模拟地址转换的流程图

缺页处理过程简单阐述如下:

①根据当前执行指令中逻辑地址中的页号查页表,判断该页是否在主存储器中,若该页标志为“0”,形成缺页中断。中断装置通过交换PSW让操作系统的

中断处理程序占用处理器;

②操作系统处理缺页中断的方法就是查主存分配表,找一个空闲主存块;若无空闲块,查页表,选择一个已在主存的页面,把它暂时调出主存。若在执行过程中该页被修改过,则需将该页信息写回磁盘,否则不必写回;

③找出该页的磁盘位置,启动磁盘读出该页信息,把磁盘上读出的信息装入第2步找到的主存块,修改页表中该页的标志为“1”;

④由于产生缺页中断的那条指令没有执行完,所以页面装入后应重新执行被中断的指令。当重新执行该指令时,由于要访问的页面已在主存中,所以可正常执行。

关于第②步的查找装入新页面的主存块的处理方式,不同系统采用的策略可能有所不同,这里采用局部置换算法,就是每个作业分得一定的主存块,只能在分得的主存块内查找空闲块,若无空闲主存块,则从该作业中选择一个页面淘汰出主存。实验中使用局部置换算法。

使用局部置换算法时,存在这样一个问题:就是在分配给作业主存空间时,装入哪些页?有的系统采取不装入任何一页,当执行过程中需要时才将其调入。有的系统采用页面预置的方法,就是估计可能某些页面会先用到,在分配主存块后将这些页面装入。实验中,采用第二种方法,分配主存空间时将前几页调入主存,假定系统中每个作业分得主存块m(m=4)块,则将第0~m-1页装入主存。

因为是模拟硬件工作,所以实验中如果访问的页不在主存时,则输出该页页号,表示硬件产生缺页中断,然后直接转去缺页中断处理;由于采用页面预置方法,在给定的主存块中一定无空闲块,只能淘汰已在主存的一页;没有启动磁盘的工作,淘汰的页需要写回磁盘时,用输出页号表示,调入新的一页时,将该页在页表中的存在标志置为“1”,输出页号表示将该页调入主存。

图3 采用先进先出页面置换算法的缺页中断流程图

主存中无空闲块时,为装入一个页面,必须按某种算法从已在主存的页中选择一页,将它暂时调出主存,让出主存空间,用来存放需装入的页面,这个工作称为“页面调度”。如何选择调出的页是很重要的,常用的页面调度算法有先进先出算法、最近最少用算法和最近最不常用算法。实验中使用先进先出调度算法。先进先出调度算法总是选择驻留在主存时间最长的一页调出。先进先出算法简单,易实现。可以把在主存储器的页的页号按进入主存的先后次序排成队列,每次总是调出队首的页,当装入一个新页后,把新页的页号排入队尾。实验中,用一个数组存放页号的队列。假定分配给作业的主存块数为m,数组可由m个元素组成,p[0],p[1]……p[m-1];队首指针head;采用页面预置的方法,页号队列的长度总是m,tail等于(head+1)%m。因此可以使用一个指针,只用head即可。在装入一个新的页时,装入页和淘汰页同时执行,当装入一个新的页时,将其页号存入数组:

淘汰页的页号=p[head];

p[head]=新装入页的页号;

head=(head+1)%m;

实验中,采用先进先出页面置换算法的缺页中断流程图如图3所示。

图4一条指令执行的模拟流程图

实验执行一条指令时,不模拟指令的执行,只是考虑指令执行是否修改页面,若修改页面,则将该页的页表中修改标志为置“1”,然后输出转换后的物理地址,并输出物理地址来表示一条指令执行完成;如果访问的页不在主存时,则产生缺页中断,然后直接转去缺页中断处理,最后模拟中断返回,就是返回重新进行地址转换。一条指令执行的模拟流程图如图4所示。

因为没有实际主存,所以在模拟程序中首先手工输入页表信息,创建该作业的页表;然后循环执行假定的指令,观察地址转换情况。

5. 实验报告的内容

(1)实验题目。

(2)程序中使用的数据结构及符号说明。

(3)编写一份源程序并附上注释。

(4)打印显示初始页表,每次调出(要调出一页时)和装入的页号以及执行最后一条指令后在主存中的页面号(即数组的值)。

统计操作系统缺页次数

实验二: 统计操作系统缺页次数

目录 一.实验目的---------------------------------------------3 二.实验内容--------------------------------------------3三.实验步骤----------------------------------------------3

统计操作系统缺页次数 一实验目的 学习虚拟内存的基本原理和Linux虚拟内存管理技术; 深入理解、掌握Linux的按需调页过程; 掌握内核模块的概念和操作方法,和向/proc文件系统中增加文件的方法;综合运用内存管理、系统调用、proc文件系统、内核编译的知识。 二实验内容 1.原理 Linux的虚拟内存技术采用按需调页,当CPU请求一个不在内存中的页面时,会发生缺页,缺页被定义为一种异常(缺页异常),会触发缺页中断处理流程。每种CPU结构都提供一个do_page_fault处理缺页中断。由于每发生一次缺页都要进入缺页中断服务函数do_page_fault一次,所以可以认为执行该函数的次数就是系统发生缺页的次数。因此可以定义一个全局变量pfcount 作为计数变量,在执行do_page_fault时,该变量值加1。本实验通过动态加载模块的方法,利用/proc文件系统作为中介来获取该值。 2.实验环境 操作系统:Ubuntu (内核版本为3.2.0-23-generic-pae) 内核源码:linux-3.2.58

三实验步骤 1.下载一份内核源代码并解压 Linux受GNU通用公共许可证(GPL)保护,其内核源代码是完全开放的。现在很多Linux的网站都提供内核代码的下载。推荐使用Linux的官方网站:。 在terminal下可以通过wget命令下载源代码: $ cd /tmp $ wget 切换到root身份,解压源代码到/usr/src目录下: # xz –d tar –xvf –C /usr/src 2.修改内核源代码,添加统计变量 1、切换到预编译内核目录 #cd /usr/src/linux-3.2.58

模拟请求页式存储管理中硬件的地址转换和缺页中断,并用先进先出调度算法(FIFO)处理缺页中断

实验报告 课程名称操作系统原理实验名称虚拟页式管理 姓名学号专业班级网络 实验日期成绩指导教师赵安科 (①实验目的②实验原理③主要仪器设备④实验内容与步骤⑤实验数据记录与处理⑥实验结果与分析⑦问题建议) 实验二模拟请求页式存储管理中硬件的地址转换和缺页中断,并用先进先出调度算法(FIFO)处理缺页中断 1.内容:模拟请求页式存储管理中硬件的地址转换和缺页中断处理 2.思想: 装入新页置换旧页时,若旧页在执行中没有被修改过,则不必将该页重写磁盘。因此,页表中增加是否修改过的标志,执行“存”指令和“写”指令时将对应的修改标志置成“1” 3.要求及方法: ①设计一个地址转换程序来模拟硬件的地址转换和缺页中断。当访问的页在主存时则形成绝对地址,但不去模拟指令的执行,可以输出转换后的绝对地址来表示一条指令已执行完成。当访问的页不在主存中时,则输出“*页号”来表示硬件产生了一次缺页中断。模拟地址转换流程见图1。 ②编制一个FIFO页面调度程序;FIFO页面调度算法总是先调出作业中最先进入主存中的哪一页。因此可以用一个数组来表示(或构成)页号队列。数组中每个元素是该作业已在主存中的页面号,假定分配给作业的页架数为m,且该作业开始的m页已装入主存,则数组可由m个元素构成。 P[0],P[1],P[2],…,P[m-1] 它们的初值为P[0]:=0,P[1]:=1,P[2]:=2,…,P[m-1]:=m-1 用一指针K指示当要调入新页时应调出的页在数组中的位置,K的初值为“0”,当产生缺页

中断后,操作系统总是选择P[K]所指出的页面调出,然后执行: P[K]:=要装入的新页页号 K :=(k+1)mod m 在实验中不必实际地启动磁盘执行调出一页和装入一页的工作,而用输出“OUT 调出的页号”和“IN 要装入的新页页号”来模拟一次调出和装入过程,模拟程序的流程图见附图1。 按流程控制过程如下: 提示:输入指令的页号和页内偏移和是否存指令?? ? 0 1非存指令存指令,若d 为-1则结束,否则进 入流程控制过程,得P 1和d ,查表在主存时,绝对地址=P 1×1024+d ③ 假定主存中页架大小为1024个字节,现有一个共7页的作业,其副本已在磁盘上。系统为该作业分配了4个页架,且该作业的第0页至第3页已装入内存,其余3页未装入主 依次执行上述指令调试你所设计的程序(仅模拟指令的执行,不考虑序列中具体操作的执行)。

操作系统习题及答案四

四、计算题 1某虚拟存储器的用户编程空间共32个页面,每页为1KB,内存为16KBo假定某时刻一用户页表中已调入内存的页面的页号和物理块号的对照表如下: 则逻辑地址0A5C(H)所对应的物理地址是什么?要求:写出主要计算过程。 1. 解:页式存储管理的逻辑地址分为两部分:页号和页内地址。由已知条件用户编程空间共32个页面”可知页号部分占5位;由每页为1KB” 1K=210,可知内页地址占10位。由内存为16KB',可知有16块,块号为4位。 逻辑地址0A5C( H)所对应的二进制表示形式是:000 1010 0101 1100 ,根据上面的 分析,下划线部分为页内地址,编码000 10 ”为页号,表示该逻辑地址对应的页号为2o 查页表,得到物理块号是11(十进制),即物理块地址为:10 11,拼接块内地址10 0101 1100, 得10 1110 0101 1100 ,即2E5C( H)o 2、对于如下的页面访问序列: 1, 2 , 3 , 4 , 1 , 2 , 5 , 1 , 2 , 3 , 4 , 5 当内存块数量为3时,试问:使用FIFO、LRU置换算法产生的缺页中断是多少?写出依次产生缺页中断后应淘汰的页。(所有内存开始时都是空的,凡第一次用到的页面都产生一 次缺页中断。要求写出计算步骤。) 2. 解: 采用先进先出(FIFO )调度算法,页面调度过程如下: 共产生缺页中断9次。依次淘汰的页是1、2、3、4、1、2 共产生缺页中断10次。依次淘汰的页是1、2、3、4、5、1、2o 3、下表给出了某系统中的空闲分区表,系统采用可变式分区存储管理策略。现有以下作业序列:96K、 20K、200K o若用首次适应算法和最佳适应算法来处理这些作业序列,试问哪一种算法可以满足该作业序列的请求,为什么? 空闲分区表

实验3 页式存储管理的缺页中断及淘汰算法模拟

实验三请求页式管理的地址变换及页面淘汰算法模拟 一、实验目的 1. 通过实验,掌握请求页式存储管理的地址变换过程 2. 通过实验,掌握请求页式存储管理的先进先出页面淘汰算法 二、实验内容 1.编程模拟实现页式管理的动态地址变换过程 2.编程模拟实现当发现要访问的页不再主存时,发生缺页中断,并调用先进先出页面淘汰算法 三、实验步骤 1. 定义页式管理中的页面长度,页表长度,页表结构。 2.定义实现先进先出页面淘汰算法的函数。(注意要定义一个全局变量用于记录当前最早到达的页号) 3.定义完成动态地址变换的函数。 3. 在主函数先输入一个作业的页表信息(必须要有在主存的页),再通过循环的方式不断输入一个数字表示逻辑地址,根据刚才创建的作业的页表信息,如果该逻辑地址所在的页已经在主存则直接计算该逻辑地址所对应的物理地址,若该逻辑地址所在的页不在主存则调用先进先出淘汰算法,淘汰一页,调入所要的页,然后再计算该逻辑地址所对应的物理地址。循环结束,程序退出。 四、实现提示 1、#define n 100 /*假定的页面长度*/ #define length 10 /*假定的页表长度*/ struct { int lnumber; //逻辑页号 int flag; //该页是否在主存,可用“1”“0”表示*/ int wnumber; //物理页号 int next; //用于记录该页后下一个到达的页号 }page[length]; /*页表结构定义*/ 2、先进先出页面淘汰算法

int first=0; void fcfs(int in_number) //in_number表示要求调入的逻辑页号{ printf("发生缺页中断,淘汰第%d页\n",page[first].lnumber); page[first].flag=0; /* 所淘汰页的存在标志改为0*/ page[in_number].wnumber=page[first].wnumber; page[in_number].flag=1; /* 所调入页的存在标志改为1*/ printf("从磁盘调入逻辑第%d页成功!其对应的物理页面号为:%d\n",in_number,page[in_number].wnumber); first= page[first].next; } 3、动态地址变换函数 void compute_address(int laddress) //laddress表示要变换的逻辑地址,在其中调用fcfs函数 { }

操作系统_第四章作业讲解

1、“整体对换从逻辑上也扩充了内存,因此也实现了虚拟存储器的功能”这种说法是否正确?请说明理由 答:上述说明法是错误的。整体对换将内存中暂时不用的某个程序及其数据换出至外存,腾出足够的内存空间以装入在外存中的、具备运行条件的进程所对应的程序和数据。虚拟存储器是指仅把作业的一部分装入内存便可运行作业的存储器系统,是指具有请求调入功能和置换功能,能从逻辑上对内存容量进行扩充的一种存储器系统,它的实现必须建立在离散分配的基础上。虽然整体对换和虚拟存储器均能从逻辑上扩充内存空间,但整体对换不具备离散性。实际上,在具有整体对换功能的系统中,进程的大小仍受到实际内存容量的限制。 2、某系统采用页式存储管理策略,拥有逻辑空间32页,每页为2KB,拥有物理空间1MB。 1)写出逻辑地址的格式 2)若不考虑访问权限等,进程的页表有多少项?每项至少有多少位? 3)如果物理空间减少一半,页表结构应相应作怎样的改变? 答:1)该系统拥有逻辑空间32页,故逻辑地址中页号必须用5位来描述,而每页为2KB,因此,页内地址必须用11位来描述。这样,可得到它的逻辑地址格式如下: 2)每个进程最多有32个页面,因此,进程的页表项最多为32项;若不考虑访问权限等,则页表项中只需给出页所对应的物理块号。1MB的物理空间可分成29个内存块,故每个页表项至少有9位。 3)如果物理空间减少一半,则页表中项表项数仍不变,但每项的长度可减少1位。 3、已知某系统页面长4KB,每个页表项为4B,采用多层分页策略映射64位的用户地址空 间。若限定最高层页表只占1页,则它可采用几层分页策略 答:方法一:由题意可知,该系统的用户地址空间为264B,而页的大小为4KB,故作业最多可有264/212(即252)个页,其页表的大小则为252*4(即254)B。因此,又可将页表分成242个页表页,并为它建立两级页表,两级页表的大小为244B。依次类推,可知道它的3、4、5、6级页表的长度分别是234B、224B、214B、24B,故必须采取6层分页策略。 方法二:页面大小为4KB=212B,页表项4B=22B,因此一个页面可以存放212/22=210个面表项,因此分层数=INT[64/10]=6层 4、对于表所示的段表,请将逻辑地址(0,137)、(1,4000)、(2,3600)、(5,230)转换 成物理地址。 答:[0,137]:50KB+137=51337;

第四章部分习题答案

习题四 3、何谓静态链接?何谓装入时动态链接和运行时的动态链接? 答:(1) 静态链接。在程序运行之前,先将各目标模块及它们所需的库函数,链接成一个完整的装配模块,以后不再拆开。我们把这种事先进行链接的方式称为静态链接方式。 (2) 装入时动态链接。这是指将用户源程序编译后所得到的一组目标模块,在装入内存时,采用边装入边链接的链接方式。 (3) 运行时动态链接。这是指对某些目标模块的链接,是在程序执行中需要该(目标)模块时,才对它进行的链接。 6、为什么要引入动态重定位?如何实现? 答:(1)在连续分配方式中,必须把一个系统或用户程序装入一连续的内存空间。如果在系统中只有若干个小的分区,即使它们容量的总和大于要装入的程序,但由于这些分区不相邻接,也无法把该程序装入内存。这种不能被利用的小分区称为“零头”或“碎片”。为了消除零头所以要引入动态重定位。 (2)在动态运行时装入的方式中,作业装入内存后的所有地址都仍然是相对地址,将相对地址转换为物理地址的工作,被推迟到程序指令要真正执行时进行。为使地址的转换不会影响到指令的执行速度,必须有硬件地址变换机构的支持,即须在系统中增设一个重定位寄存器,用它来存放程序(数据)在内存中的起始地址。程序在执行时,真正访问的内存地址是相对地址与重定位寄存器中的地址相加而形成的。地址变换过程是在程序执行期间,随着对每条指令或数据的访问自动进行的,故称为动态重定位。 14、较详细地说明引入分段存储管理是为了满足用户哪几方面的需要。 答:1) 方便编程 通常,用户把自己的作业按照逻辑关系划分为若干个段,每个段都是从0 开始编址,并有自己的名字和长度。因此,希望要访问的逻辑地址是由段名(段号)和段内偏移量(段内地址)决定的。

飞思卡尔MC9S12XS128单片机中断优先级设置简易教程

本教程试图用最少的时间教你飞思卡尔XS128单片机的中断优先级设置方法和中断嵌套的使用,如果是新手请先学习中断的基本使用方法。 先来看看XS128 DataSheet 中介绍的相关知识,只翻译有用的: 七个中断优先级 每一个中断源都有一个可以设置的级别 高优先级中断的可以嵌套低优先级中断 复位后可屏蔽中断默认优先级为1 同一优先级的中断同时触发时,高地址(中断号较小)的中断先响应 注意:高地址中断只能优先响应,但不能嵌套同一优先级低地址的中断 下面直接进入正题,看看怎么设置中断优先级: XS128中包括预留的中断一共有128个中断位,如果为每个中断都分配一个优先级寄存器的话会非常浪费资源,因此飞思卡尔公司想出了这样一种办法:把128个中断分为16个组,每组8个中断。每次设置中断时,先把需要的组别告诉某个寄存器,再设置8个中断优先寄存器的某一个,这样只需9个寄存器即可完成中断的设置。 分组的规则是这样的:中断地址位7到位4相同的中断为一组,比如MC9SX128.h中 这些中断的位7到位3都为D,他们就被分成了一组。0~F正好16个组。

INT_CFADDR就是上面说到的用来设置组别的寄存器: 我们需要设置某个组别的中断时,只要写入最后8位地址就行了,比如设置SCI0的中断优先级,就写入0xD0。 设置好组别之后,我们就要该组中相应的中断进行设置,设置中断的寄存器为 这其实是一组寄存器,一共有8个,每个都代表中断组中的一个中断。对应规则是这样的:中断地址的低四位除以2 比如还是SCI0,低四位是6,除以二就是3,那么我们就需要设置INT_CFDATA3 往INT_CFDATAx中写入0~7就能设置相应的中断优先级了 拿我本次比赛的程序来举个例子:我们的程序中需要3个中断:PIT0,PORTH,SCI0。PIT0定时检测传感器数值,PORTH连接干簧管进行起跑线检测,SCI0接收上位机指令实现急停等功能。因此中断优先级要SCI0>PORTH>PIT0。 我们先要从头文件中找出相应中断的地址: PIT0【7:4】位为7,选择中断组: INT_CFADDR=0x70;

页式虚拟存储管理中地址转换和缺页中断实验参考2

页式虚拟存储管理中地址转换和缺页中断 一.实验目的 (1)深入了解存储管理如何实现地址转换。 (2)进一步认识页式虚拟存储管理中如何处理缺页中断。 二.实验内容 编写程序完成页式虚拟存储管理中地址转换过程和模拟缺页中断的处理。 三.实验原理 页式存储管理把内存分割成大小相等位置固定的若干区域,叫内存页面,内存的分配以“页”为单位,一个程序可以占用不连续的页面,逻辑页面的大小和内存页面的大小相同,内外存的交换也以页为单位进行,页面交换时,先查询快表,若快表中找不到所需页面再去查询页表,若页表中仍未找到说明发生了缺页中断,需先将所需页面调入内存再进行存取。 四.实验部分源程序 #define size 1024//定义块的大小,本次模拟设为1024个字节。 #include "stdio.h" #include "string.h" #include struct plist { int number; //页号 int flag; //标志,如为1表示该页已调入主存,如为0则还没调入。 int block; //主存块号,表示该页在主存中的位置。 int modify; //修改标志,如在主存中修改过该页的内容则设为1,反之设为0 int location; //在磁盘上的位置 }; //模拟之前初始化一个页表。 struct plist p1[7]={{0,1,5,0,010},{1,1,8,0,012},{2,1,9,0,013},{3,1,1,0,021},{4,0,-1,0,022},{5,0,-1,0,023},{6, 0,-1,0,125}}; //命令结构,包括操作符,页号,页内偏移地址。 struct ilist { char operation[10]; int pagenumber; int address; }; //在模拟之前初始化一个命令表,通过程序可以让其顺序执行。 struct ilist p2[12]={{"+",0,72},{"5+",1,50},{"*",2,15},{"save",3,26},

操作系统复习题答案

操作系统复习题 一、单项选择题:在每小题列出的四个备选项中只有一个是最符合题目要求的,请将其代码填写在题后的括号内。错选、多选或未选均无分。 1.操作系统的主要功能是管理计算机系统中的()。【D 】A.程序B.数据 C.文件D.资源 2.产生死锁的基本原因是()和进程推进顺序非法。【 A 】A.资源分配不当B.系统资源不足 C.作业调度不当D.进程调度不当 3.动态重定位是在作业的()中进行的。【D 】A.编译过程B.装入过程 C.连接过程D.执行过程 4.存放在磁盘上的文件,()。【A 】A.既可随机访问又可顺序访问B.只能随机访问 C.只能顺序访问D.只能读写不能访问 5.对于硬盘上存放的信息,物理上读写的最小单位是一个()。【C 】A.二进制(bit)B.字节(byte) C.物理块D.逻辑记录 6.操作系统中利用信号量和P、V操作,()。【C 】A.只能实现进程的互斥B.只能实现进程的同步 C.可实现进程的互斥与同步D.可完成进程调度 7.SPOOLing技术可以实现设备的()。【C 】A.独占B.共享 C.虚拟D.物理 8.在存储管理的各方案中,可扩充主存容量的方案是()存储管理。【D 】A.固定分区B.可变分区 C.连续D.页式虚拟 9.磁盘是可共享的设备,每一时刻()进程与它交换信息。【C 】A.允许有两个B.可以有任意多个 C.最多一个D.至少有一个 10.逻辑文件存放到存储介质上时,采用的组织形式是与()有关。【B 】 ×××××试题答案及评分参考(×)第1页(共×页)

A.逻辑文件结构B.存储介质特性 C.主存管理方式D.分配外设方式 11.在操作系统中,()是竞争和分配计算机系统资源的基本单位。【B 】A.程序B.进程 C.作业D.线程 12.作业调度的关键在于()。【C 】A.选择恰当的进程管理程序B.用户作业准备充分 C.选择恰当的作业调度算法D.有一个较好的操作环境 13.文件的保密是指防止文件被()。【C 】A.篡改B.破坏 C.窃取D.删除 14.系统抖动是指()。【 D 】A.使用机器时,屏幕闪烁的现象 B.由于主存分配不当,偶然造成主存不够的现象 C.系统盘有问题,致使系统部稳定的现象 D.被调出的页面又立刻被调入所形成的频繁调入调出现象 15.避免死锁的一个著名的算法是()。【C 】A.先入先出算法 B.优先级算法 C.银行家算法D.资源按序分配法 16.在多进程的并发系统中,肯定不会因竞争()而产生死锁。【D 】A.打印机B.磁带机 C.磁盘D.CPU 17.用户程序中的输入、输出操作实际是由()完成。【C 】A.程序设计语言B.编译系统 C.操作系统D.标准库程序 18.在分页存储管理系统中,从页号到物理块的地址映射是通过()实现的。【B 】A.段表B.页表 C.PCB D.JCB 19.在操作系统中,进程的最基本特征是()。【A 】A.动态性和并发性B.顺序性和可再现性 C.与程序的对应性D.执行过程的封闭性 20.一种既有利于短小作业又兼顾到长作业的作业调度算法是()。【C 】A.先来先服务B.轮转 C.最高响应比优先D.均衡调度 ×××××试题答案及评分参考(×)第2页(共×页)

模拟请求页式存储管理中硬件的地址转换和缺页中断,并用先进先出调度算法(FIFO)处理缺页中断

实验二模拟请求页式存储管理中硬件的地址转换和缺页中断,并用先进先出调度算法(FIFO)处理缺页中断 1.内容:模拟请求页式存储管理中硬件的地址转换和缺页中断处理 2.思想: 装入新页置换旧页时,若旧页在执行中没有被修改过,则不必将该页重写磁盘。因此,页表中增加是否修改过的标志,执行“存”指令和“写”指令时将对应的修改标志置成“1” 3.要求及方法: ①设计一个地址转换程序来模拟硬件的地址转换和缺页中断。当访问的页在主存时则形成绝对地址,但不去模拟指令的执行,可以输出转换后的绝对地址来表示一条指令已执行完成。当访问的页不在主存中时,则输出“*页号”来表示硬件产生了一次缺页中断。模拟地址转换流程见图1。 ②编制一个FIFO页面调度程序;FIFO页面调度算法总是先调出作业中最先进入主存中的哪一页。因此可以用一个数组来表示(或构成)页号队列。数组中每个元素是该作业已在主存中的页面号,假定分配给作业的页架数为m,且该作业开始的m页已装入主存,则数组可由m个元素构成。 P[0],P[1],P[2],…,P[m-1] 它们的初值为P[0]:=0,P[1]:=1,P[2]:=2,…,P[m-1]:=m-1 用一指针K指示当要调入新页时应调出的页在数组中的位置,K的初值为“0”,当产生缺页中断后,操作系统总是选择P[K]所指出的页面调出,然后执行: P[K]:=要装入的新页页号 K:=(k+1)mod m 在实验中不必实际地启动磁盘执行调出一页和装入一页的工作,而用输出“OUT调出的页号”和“IN要装入的新页页号”来模拟一次调出和装入过程,模拟程序的流程图见附图1。 按流程控制过程如下:

操作系统-第5章题

1.(d )存储管理方式能够实现虚拟存储管理。 A.固定分区B.可变分区C.单连续D.段式 2.采用(c )的系统支持“程序移动”。 A.覆盖技术B.存储技术C.动态重定位D.静态重定位1.(√)在动态段式存储管理中,如果建立快表,则快表是段表的一部分。 2.(√)产生页面中断的主要原因是欲访问的页不在主存。 在页式存储管理中,逻辑地址是二维的。在段式存储管理中,逻辑地址是线性的。 (错) .抖动:在动态页式存储管理中如何选择调出的页面是很重要的,如果采用了一个不合适的算法,就会出现这样的现象:刚被调出的页面又立即要用,因而又要把它重新装入,而装入不久又被选中调出,调出不久又被重新装入,如此反复,使调度非常频繁。这种现象称为“抖动”。 1.(6分题)何谓“抖动”?引起抖动的原因主要有哪些? 刚被调出的页面又立即要用,因而又要把它重新装入,而装入不久又被选中调出,调出不久又被重新装入,如此反复,使调度非常频繁。这种现象称为“抖动”,或称为“颠簸”。原因:没有考虑动态性。 1.Belady现象:Belady现象是在未给作业分配满足它所需要的主存块数时,出现当分配的块数增多时,缺页次数反而增多的现象。 2.简述段式管理方法的基本思想,并说明分配、回收、地址转换、内存扩充、共享和保护是如何的实现。 答:段式管理方法的基本思想是组成作业或进程逻辑段放在内存中的一块连续区域,不同逻辑段所在的区域可以不连续。段式存储管理提供给用户编程时使用的逻辑地址由两部分组成:段号和段内地址。段式存储管理中逻辑地址是二维的。段式存储管理分为静态和动态两种,现以静态段式存储管理为例说明分配、回收、地址转换、内存扩充、共享和保护是如何的实现。 静态段式管理方法的分配是对作业或进程中的每个逻辑段在空闲区表中找到满足要求的内存空间进行分配,分配可采用最先适应、最坏适应、和最佳适用中的一种方法进行,并在分配表中记录,建立对应的段表。回收方式是根据段表找到应回收的内存区域,在空闲表中进行记录(其中存在空闲区的合并问题),并修改内存分配表。地址转换方式是绝对地址=段起始地址+段内地址。一般不进行主存扩充。共享是按段共享。保护方式是段内地址≤段长,逻辑地址中的段号在段页表中。 3.页式存储管理中,绝对地址的计算公式是( B )。 A.绝对地址=字号*字长+页内地址

飞思卡尔单片机复习题

复习题: 1.根据总线时钟频率会计算TCNT计数时钟周期的最大值?最小值?溢出周期最大值? 如:fbus=2.4576MHz,值分别为多少?若fbus=8MHz呢? 2.熟悉LED共阴极共阳字型码的计算。 3.熟悉A W60各输入输出端口功能。 4. 不带缓冲和带缓冲的PWM有什么差异性? 5.为什么要将某些寄存器名和寄存器位在头文件中进行宏定义? 6.简述中断的作用与处理过程。 7.AW60 MCU都有哪些中断源? 8.为了实现对键盘的编程,如何区分按键是否真正地被按下,还是抖动?如何处理重键问题? 9.为了实现对键盘的编程,如何识别键盘上的按键? 10.实现计数与定时的基本方法有哪些?比较它们的优缺点。 11.比较AW60定时器模块实现输出比较功能与PWM功能的异同点。 12.为什么要对采集的数据进行滤波,有哪些滤波方法? 13.什么是输出比较?主要用途是什么? 14.什么是中断?什么是中断向量?什么是中断向量地址?GP32一共有多少个中断源? 15.什么是LED静态扫描、LED动态扫描? 16.请描述键盘逐行逐列扫描法原理。判断是否有键按下通常有哪两种方法?各有何优缺点?17.键盘设计思路中是如何获取按键的行列位置信息的?以3*3键盘为例。 18.LED和LCD各有何特点? 19.什么是脉宽调制波?脉宽调制输出功能主要用途是什么? 20.微控制器的片外晶体振荡器的频率是不是越高越好?为什么? 21.简述定时接口的基本原理。 22.如果系统中需要9个按键,那么矩阵式键盘接口方案应如何设计?并编写键盘初始化子程序及读取键值子程序,键值存入A中,若无键按下,为$FF。 23.设计并编程:仿照本章给出的定时器1通道0输入捕捉中断里程,捕捉两路输入信号,分别用相应的指示灯指示。 24.使用中断方式,对通道0输入的模拟信号连续采样8次,送入缓冲区。 25.用AW60不带缓冲的输出比较功能产生周期约为1S的方波。设内部总线时钟频率为32.768KHz。26.根据P178页码图9-3硬件连接图,编写程序完成在四个8段数码管上显示8字循环的程序。27.根据P178页码图9-3硬件连接图,编写程序完成在四个8段数码管上的4个8段abcdefgh 轮流点亮。 28.编写一个子程序对T1CH0初始化,使T1CH0产生20ms定时中断,并编写T1CH0中断服务程序使PTC0输出周期为1S的方波。设fbus=8MHz。 29.复习所有的实验。 30.复习所有的例题、作业题。 题型:选择题(30分)、问答题(40分)、编程题(30分) 1

第3章习题解答

第3章(大本)习题解答 一、填空 1.将作业相对地址空间的相对地址转换成内存中的绝对地址的过程称为 地址重定位 。 2.使用覆盖与对换技术的主要目的是 提高内存的利用率 。 3.存储管理中,对存储空间的浪费是以 内部碎片 和 外部碎片 两种形式表现出来的。 4.地址重定位可分为 静态重定位 和 动态重定位 两种。 5.在可变分区存储管理中采用最佳适应算法时,最好按 尺寸 法来组织空闲分区链表。 6.在分页式存储管理的页表里,主要应该包含 页号 和 块号 两个信息。 7.静态重定位在程序 装入 时进行,动态重定位在程序 执行 时进行。 8.在分页式存储管理中,如果页面置换算法选择不当,则会使系统出现 抖动 现象。 9.在请求分页式存储管理中采用先进先出(FIFO )页面淘汰算法时,增加分配给作业的块数时, 缺页中断 的次数有可能会增加。 10.在请求分页式存储管理中,页面淘汰是由于 缺页 引起的。 11.在段页式存储管理中,每个用户作业有一个 段 表,每段都有一个 页 表。 二、选择 1.虚拟存储器的最大容量是由 B 决定的。 A .内、外存容量之和 B .计算机系统的地址结构 C .作业的相对地址空间 D .作业的绝对地址空间 2.采用先进先出页面淘汰算法的系统中,一进程在内存占3块(开始为空),页面访问序列为1、2、3、4、1、2、5、1、2、3、4、5、6。运行时会产生 D 次缺页中断。 A .7 B .8 C .9 D .10 从图3-1中的“缺页计数”栏里可以看出应该选择D 。 1 2 3 4 1 2 5 1 2 3 4 5 6 页面走向→ 3个内存块→缺页计数→ 图3-1 选择题2配图 3.系统出现“抖动”现象的主要原因是由于 A 引起的。 A .置换算法选择不当 B .交换的信息量太大 C .内存容量不足 D .采用页式存储管理策略 4.实现虚拟存储器的目的是 D 。 A .进行存储保护 B .允许程序浮动 C .允许程序移动 D .扩充主存容量

模拟分页式虚拟存储管理中硬件的地址转换和缺页中断 选择页面调度算法处理缺页中断

操作系统实验二(第一题) 一.实验内容 模拟分页式虚拟存储管理中硬件的地址转换和缺页中断,以及选择页面调度算法处理缺页中断。 二.实验目的 在计算机系统总,为了提高主存利用率,往往把辅助存储器作为主存储器的扩充,使多道运行的作业的全部逻辑地址空间综合可以超出主存的绝对地址空间。用这种办法扩充的主存储区成为虚拟存储器。 三.实验题目 模拟分页式存储管理中硬件的地址转换和产生缺页中断。 是 否 开始 取一条指令 取指令中访问的页号 查页表 该也标志=1? 输出“*”页号表示发生缺页中断 形成绝对地址 输出绝对地址 有后继指令? 取下一条指令 结束

四.程序清单 // // 操作实验二.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include #include #include using namespace std; class ins { private:string ope; long int page; long int unit; public: ins(){ } ins(string o,long int p,long int u):ope(o),page(p),unit(u){} void setope(string o){ ope=o;} void setpage(long int p){ page=p;} void setunit(long int u){ unit=u;} string getope(){return ope;} long int getpage(){return page;} long int getunit(){return unit;} }; class work { private: long int Page; int sym; long int inum; long int onum; public: work(){} work(long int P, int s,long int i,long int o):Page(P),sym(s),inum(i),onum(o){} void setPage(long int P){ Page=P;} void setsym( int s){ sym=s;} void setinum(long int i){ inum=i;}

飞思卡尔技术报告

K60模块分配 K60的简介,我们本次使用了以下模块。 1. FTM模块:K60中集成3个FTM模块,而今年我们选用两个B车进行追踪循迹。B车模使用单电机、单舵机,另外需要一个编码器。所以对3个FTM模块进行如下配置:FTM0用以产生300Hz PWM信号控制舵机,FMT1用以产生18.5KHz PWM信号控制电机,FTM2用以采集编码器数据。 2. 定时器模块:K60中有多个定时器模块,我们使用了其中2个。其一用以产生5ms 中断,处理相关控制程序。另一个用以超声波模块的计时。 3. SPI模块:我们使用了K60的一个SPI模块,用以和无线射频模块NRF24L01P通信。 4.外部中断:我们使用了三个外部中断。第一个是PORTA的下降沿中断,用以响应干簧管检测到磁铁。第二个是PORTD的跳变沿中断,用以响应超声波模块的输出信号。最后一个是PORTE的下降沿中断,用以响应NRF24L01P模块的相关操作。 数据采集算法 传感器是智能车的眼睛,它们给智能车循迹和追踪提供了必不可少的信息。因此,在智能车软件设计中必须保证数据采集算法的稳定性,同时兼顾其快速性。本车比赛,我们的智能车主要采集以下传感器的数据:电感传感器电路板、编码器、超声波、干簧管。下面主要详述超声波模块、电感传感器电路板的数据采集。 1 .超声波模块数据采集 我们使用的超声波模块的DO引脚输出50Hz的矩形波信号,通过高电平的时间向单片机传递数据。本超声波传感器的高电平时间为声波单程传输的时间,通过这个时间可计算出两车之间的距离。 我们使用外部中断和计时器结合的方式测量高电平时间。首先配置PORTD11为跳变沿中断。中断被触发时,如果PORTD11为高电平则开始计时,如果PORTD11为低电平则停止计时并记录时间间隔。 2. 电感传感器电路板的数据采集 电感传感器电路板通过输出电压的大小反应响应位置和方向的磁场强度。本次比赛中,我们使用了10个电感分布在6个不同位置,因此每个周期都要采集10路ADC数据,每路ADC数据采集32次进行平均滤波。K60芯片中有两路ADC模块,为了最大程度的减少采集数据的时间,我们采用两个ADC模块并行采集的方法。 首先,将10路ADC分为两组,第一组6个使用ADC0模块采集,第二组4个使用ADC1模块采集,两个ADC模块同时采集数据。以第一组为例,依次采集6路ADC 数据,循环32次。当两个ADC模块都完成任务时,ADC转换结束。最后进行平均滤波。 控制算法 1.定位算法 A.两个电感定位算法 在电磁组算法设计中,“差比和”(即用连个电感数据的差除以它们的和)是一个简单易用的定位算法,但是我们测量发现“差比和”算法得出的偏差距离用着较大非线性。如下图所示,其横轴为实际偏差(单位mm),其纵轴为“差比和”得出的偏差。可以发现,在实际偏差较小时,“差比和”算出的偏差变化较快,实际偏差较大时“差比和”算出的偏差变化较缓。

模拟请求页式存储管理中硬件的地址转换和缺页中断处理

一.实验内容 模拟请求页式存储管理中硬件的地址转换和缺页中断处理 二.实验原理 装入新页置换旧页时,若旧页在执行中没有被修改过,则不必将该页重写磁盘。因此,页表中增加是否修改过的标志,执行“存”指令和“写”指令时将对应的修改标志置成“1”表示修改过,否则为“0”表示未修改过。页表格式如下: 页号 标志 页架号 修改标志 在磁盘上位置 三.要求及方法: ① 设计一个地址转换程序来模拟硬件的地址转换和缺页中断。当访问的页在主存时则形成绝对地址,但不去模拟指令的执行,可以输出转换后的绝对地址来表示一条指令已执行完成。当访问的页不在主存中时,则输出“*页号”来表示硬件产生了一次缺页中断。模拟地址转换流程见图1。 ② 编制一个FIFO 页面调度程序;FIFO 页面调度算法总是先调出作业中最先进入主存中的哪一页。因此可以用一个数组来表示(或构成)页号队列。数组中每个元素是该作业已在主存中的页面号,假定分配给作业的页架数为m ,且该作业开始的m 页已装入主存,则数组可由m 个元素构成。 P[0],P[1],P[2],…,P[m-1] 它们的初值为P[0]:=0,P[1]:=1,P[2]:=2,…,P[m-1]:=m-1 用一指针K 指示当要调入新页时应调出的页在数组中的位置,K 的初值为“0”,当产生缺页中断后,操作系统总是选择P[K]所指出的页面调出,然后执行: P[K]:=要装入的新页页号 K :=(k+1)mod m 在实验中不必实际地启动磁盘执行调出一页和装入一页的工作,而用输出“OUT 调出的页号”和“IN 要装入的新页页号”来模拟一次调出和装入过程,模拟程序的流程图见附图1。 按流程控制过程如下: 提示:输入指令的页号和页内偏移和是否存指令??? 0 1非存指令存指令,若d 为-1则结束,否则进

第7章习题解答

第七章习题解答 一、填空 1.一个操作系统的可扩展性,是指该系统能够跟上先进计算技术发展的能力。 2.在引入线程的操作系统中,线程是进程的一个实体,是进程中实施调度和处理机分派的基本单位。 3.一个线程除了有所属进程的基本优先级外,还有运行时的当前优先级。 4.在Windows 2000中,具有1~15优先级的线程称为可变型线程。它的优先级随着时间配额的用完,会被强制降低。 5.Windows 2000在创建一个进程时,在内存里分配给它一定数量的页帧,用于存放运行时所需要的页面。这些页面被称为是该进程的“工作集”。 6.Windows 2000采用的是请求调页法和集群法相结合的取页策略,把页面装入到内存的页帧里的。 7.分区是磁盘的基本组成部分,是一个能够被格式化和单独使用的逻辑单元。 8.MFT是一个数组,是一个以数组元素为记录构成的文件。 9.只要是存于NTFS卷上的文件,在MFT里都会有一个元素与之对应。 10.在Windows 2000的设备管理中,整个I/O处理过程都是通过I/O请求包(IRP)来驱动的。 二、选择 1.在引入线程概念之后,一个进程至少要拥有D 个线程。 A. 4 B.3 C.2 D.1 2.在Windows 2000中,只有A 状态的线程才能成为被切换成运行状态,占用处理器执行。 A.备用B.就绪C.等待D.转换 3.Windows 2000是采用C 来实现对线程的调度管理的。 A.线程调度器就绪队列表 B.线程调度器就绪队列表、就绪位图 C.线程调度器就绪队列表、就绪位图、空闲位图 D.线程调度器就绪队列表、空闲位图 4.在Windows 2000里,一个线程的优先级,会在A 时被系统降低。 A.时间配额用完B.请求I/O C.等待消息D.线程切换5.在单处理机系统,当要在进程工作集里替换一页时,Windows2000实施的是B 页面淘汰策略。 A. FIFO(先进先出)B.LRU(最近最久未用) C.LFU(最近最少用)D.OPT(最优) 6.在页帧数据库里,处于下面所列A 状态下的页帧才可以变为有效状态。 A.初始化B.备用C.空闲D.修改7.当属性值能够直接存放在MFT的元素里时,称其为B 。 A.非常驻属性B.常驻属性C.控制属性D.扩展属性8.在NTFS文件系统中,文件在磁盘上存储时的物理结构是采用C 的。 A.连续式B.链接式C.索引式D.组合式9.在Windows 2000的设备管理中,I/O请求包(IRP)是由D 建立的。 A.用户应用程序B.文件系统驱动程序 C.设备驱动程序D.I/O管理器

内存分配,缺页中断程序

#include #define M 100 // 要装入的作业数 #define N 10 //系统可以分配的最大主存数int chazhao(int x,int b[],int n) { for(int i=0;i

} printf("\n缺页的次数为: %d\n\n",count); printf("缺页中断率为: %.2f%%%\n\n",(float)count*100/(m-1)); printf("在内存中的页号为:"); for(int i=0;i int find(int x,int b[],int n) { int i; for( i=0;i

飞思卡尔S12系列寄存器和中断讲解

S12的输入/输入端口(I/O口) I/O端口功能 可设置为通用I/O口、驱动、内部上拉/下拉、中断输入等功能。 设置I/O口工作方式的寄存器有: DDR、IO、RDR、PE、IE和PS。 DDR:设定I/O口的数据方向。 IO :设定输出电平的高低。 RDR:选择I/O口的驱动能力。 PE:选择上拉/下拉。 IE:允许或禁止端口中断。 PS:1、中断允许位置位时,选择上升沿/下降沿触发中断;2、中断禁止时且PE有效时,用于选择上拉还是下拉。 I/O端口设置 1、A口、B口、E口寄存器 (1)数据方向寄存器DDRA、DDRB、DDRE DDRA、DDRB、DDRE均为8位寄存器,复位后其值均为0。 当DDRA=0、DDRB=0、DDRE=0 时A口、B口和E口均为输入口。 否则,A口、B口、E口为输出口。当DDRA、DDRB、DDRE的任何一 位置1时,则该位对应的引脚被设置为输出。 例如,将A口设置为输出口,则其C语言程序的语句为:DDRA=0xff;(2)A口、B口、E口上拉控制寄存器PUCR PUCR为8位寄存器,复位后的值为0。当PUPAE、PUPBE、PUPEE被设置为1时,A口、B口、E口具有内部上拉功能;为0时,上拉无效。当A口、B口、E口为地址/数据总线时,PUPAE和PUPBE无效。 (3)A口、B口、E口降功率驱动控制寄存器RDRIV RDRIV为8位寄存器,复位后的值为0,此时,A口、B口、E口驱动保持全功率;当RDPA、RDPB、RDPE为1时,A口、B口、E口输出引脚的驱动功率下降 (4)数据寄存器PORTA、PORTB、PORTE PORTA、PORTB、PORTE均为8位寄存器,复位后的值为0,端口引脚输出低电平;要使引脚输出高电平,相应端口对应位应该置1。 由于PE0是/XIRQ、PE1是IRQ,因此,PE0和PE1只能设置为输入。

相关文档
最新文档