当前位置:文档之家› 统计缺页次数

统计缺页次数

统计缺页次数
统计缺页次数

统计操作系统缺页次数

实验目的

学习虚拟内存的基本原理和Linux虚拟内存管理技术;

深入理解、掌握Linux的按需调页过程;

掌握内核模块的概念和操作方法,和向/proc文件系统中增加文件的方法;

综合运用内存管理、系统调用、proc文件系统、内核编译的知识。

实验内容

1.原理

Linux的虚拟内存技术采用按需调页,当CPU请求一个不在内存中的页面时,会发生缺页,缺页被定义为一种异常(缺页异常),会触发缺页中断处理流程。每种CPU结构都提供一个do_page_fault处理缺页中断。由于每发生一次缺页都要进入缺页中断服务函数do_page_fault一次,所以可以认为执行该函数的次数就是系统发生缺页的次数。因此可以定义一个全局变量pfcount 作为计数变量,在执行do_page_fault时,该变量值加1。本实验通过动态加载模块的方法,利用/proc文件系统作为中介来获取该值。

2.实验环境

操作系统:Ubuntu 12.04(内核版本为3.2.0-23-generic-pae)

内核源码:linux-3.2.58

实验指导

1.下载一份内核源代码并解压

Linux受GNU通用公共许可证(GPL)保护,其内核源代码是完全开放的。现在很多Linux的网站都提供内核代码的下载。推荐使用Linux的官方网站:。

图1 Linux的官方网站

在terminal下可以通过wget命令下载源代码:

$ cd /tmp

$ wget

切换到root身份,解压源代码到/usr/src目录下:

# xz –d linux-3.2.58.tar.xz

# tar –xvf linux-3.2.58.tar –C /usr/src

2. 修改内核源代码,添加统计变量

1、切换到预编译内核目录

#cd /usr/src/linux-3.2.58

2、修改处理内存访问异常的代码

//用vi编辑器打开fault.c,一般使用Intel x86体系结构,则修改arch/x86/目录下的文件#vi arch/x86/mm/fault.c

//在do_page_fault函数的上一行定义统计缺页次数的全局变量pfcount

unsigned long volatile pfcount;

//将pfcount加入到do_page_fault中,用以统计缺页次数

pfcount++;

3、修改内存管理代码

//用vi编辑器打开头文件mm.h

#vi include/linux/mm.h

//在mm.h中加入全局变量pfcount的声明,代码加在extern int page_cluster;语句之后extern unsigned long volatile pfcount;

4、导出pfcount全局变量,让整个内核(包括模块)都可以访问。方法是:

#vi kernel/kallsyms.c

//在文件最后加入一行代码

EXPORT_SYMBOL(pfcount);

3. 配置编译新内核

用编译Linux内核预备实验中的方法完成新内核的配置、编译、替换,重启后验证是否完成替换。

#uname –r //如果为3.2.58(与你采用的新内核版本一至)说明替换完成

4. 编写读取pfcount值的模块代码

系统重启后,执行如下操作:

#mkdir source //在当前用户目录下创建source文件夹,用于存放编写的用户程序#cd source //切换到source目录

#vi pf.c //新建用于构建模块的代码

--------------------------------------------

/*pf.c*/

/*modules program*/

#include

操作系统实验08

实验8 缺页统计 实验目的 学习虚拟内存的基本原理和Linux虚拟内存管理技术;深入理解、掌握Linux的按需调页过程。 复习巩固Linux内核模块和虚拟文件系统的知识和运用能力。 实验原理 由于每发生一次缺页都要进入缺页中断服务函数do_page_fault一次,所以可以认为执行该函数的次数就是系统发生缺页的次数。通过定义一个全局变量pfcount作为计数变量,每次执行do_page_fault时,该变量值加1,从而得到一段时间内的缺页次数。 至于经历的时间则可以利用系统原有的变量jiffies。这是一个系统的计时器,在内核加载完以后开始计时,以10ms(缺省)为计时单位。 借助内核模块技术通过/proc虚拟文件系统来读出上述两个变量的值。在/proc文件系统下建立目录pf以及在该目录下的只读文件pfcount和jiffies。 实验内容 完成《边干边学》第7.3.1节的“系统缺页次数”实验。 1.修改现有的内核代码,在系统中添加一个全局变量pfcount。配置、编译、安装新 的内核,并重新启动,使用新的内核。 2.编辑、编译、安装新的内核模块pf,在/proc虚拟文件系统中创建目录pf以及只 读文件pfcount和jiffies。 3.编写用户程序,引发足够的缺页中断;观察一定时间内的缺页状况。 4.选做:学习《边干边学》第7章,阅读相关的内核源代码,分析Linux系统中缺页 的处理过程。 实验步骤 一、修改现有内核代码,添加缺页计数器pfcount 1.以root帐号登录,解包内核源码,并转入内核源码目录 cd /usr/src tar zxvf linux-2.4.18.tar.gz cd linux 2.修改include/linux/mm.h文件 添加变量pfcount的声明 即添加extern unsigned long volatile pfcount;一行

操作系统课后习题答案

第一章 1.设计现代OS的主要目标是什么? 答:(1)有效性(2)方便性(3)可扩充性(4)开放性 4.试说明推劢多道批处理系统形成和収展的主要劢力是什么? 答:主要动力来源于四个方面的社会需求与技术发展: (1)不断提高计算机资源的利用率; (2)方便用户; (3)器件的不断更新换代; (4)计算机体系结构的不断发展。 12.试从交互性、及时性以及可靠性方面,将分时系统不实时系统迚行比较。答:(1)及时性:实时信息处理系统对实时性的要求与分时系统类似,都是以人所能接受的等待时间来确定;而实时控制系统的及时性,是以控制对象所要求的开始截止时间或完成截止时间来确定的,一般为秒级到毫秒级,甚至有的要低于100微妙。 (2)交互性:实时信息处理系统具有交互性,但人与系统的交互仅限于访问系统中某些特定的专用服务程序。不像分时系统那样能向终端用户提供数据和资源共享等服务。 (3)可靠性:分时系统也要求系统可靠,但相比之下,实时系统则要求系统具有高度的可靠性。因为任何差错都可能带来巨大的经济损失,甚至是灾难性后果,所以在实时系统中,往往都采取了多级容错措施保障系统的安全性及数据的安全性。 13.OS有哪几大特征?其最基本的特征是什么? 答:并发性、共享性、虚拟性和异步性四个基本特征;最基本的特征是并发性。 第二章 2. 画出下面四条诧句的前趋图: S1=a:=x+y; S2=b:=z+1; S3=c:=a –b;S4=w:=c+1; 8.试说明迚程在三个基本状态之间转换的典型原因。 答:(1)就绪状态→执行状态:进程分配到CPU资源 (2)执行状态→就绪状态:时间片用完 (3)执行状态→阻塞状态:I/O请求 (4)阻塞状态→就绪状态:I/O完成

操作系统习题答案整理

存 1通常情况下,在下列存储管理方式中,()支持多道程序设计、管理最简单,但存储碎片多;()使存碎片尽可能少,而且使存利用率最高。 Ⅰ.段式;Ⅱ.页式;Ⅲ.段页式;Ⅳ.固定分区;Ⅴ.可变分区 正确答案:Ⅳ;Ⅰ 2为使虚存系统有效地发挥其预期的作用,所运行的程序应具有的特性是()。 正确答案:该程序应具有较好的局部性(Locality) 3提高存利用率主要是通过存分配功能实现的,存分配的基本任务是为每道程序()。使每道程序能在不受干扰的环境下运行,主要是通过()功能实现的。 Ⅰ.分配存;Ⅱ.存保护;Ⅲ.地址映射;Ⅳ.对换;Ⅴ.存扩充;Ⅵ.逻辑地址到物理地址的变换;Ⅶ.存到外存间交换;Ⅷ.允许用户程序的地址空间大于存空间。 正确答案:Ⅰ;Ⅱ 4适合多道程序运行的存储管理中,存储保护是 正确答案:为了防止各道作业相互干扰 5下面哪种存管理方法有利于程序的动态()? 正确答案:分段存储管理 6在请求分页系统的页表增加了若干项,其中状态位供()参考。 正确答案:程序访问 7从下面关于请求分段存储管理的叙述中,选出一条正确的叙述()。 正确答案:分段的尺寸受存空间的限制,但作业总的尺寸不受存空间的限制 8虚拟存储器的特征是基于()。 正确答案:局部性原理 9实现虚拟存储器最关键的技术是()。 正确答案:请求调页(段) 10“抖动”现象的发生是由()引起的。 正确答案:置换算法选择不当 11 在请求分页系统的页表增加了若干项,其中修改位供()参考。 正确答案:换出页面 12 虚拟存储器是正确答案:程序访问比存更大的地址空间 13测得某个请求调页的计算机系统部分状态数据为:CPU利用率20%,用于对换空间的硬盘的利用率97.7%,其他设备的利用率5%。由此断定系统出现异常。此种情况下()能提高CPU的利用率。 正确答案:减少运行的进程数 14在请求调页系统中,若逻辑地址中的页号超过页表控制寄存器中的页表长度,则会引起()。 正确答案:越界中断 15 测得某个请求调页的计算机系统部分状态数据为:CPU利用率20%,用于对换空间的硬盘的利用率97.7%,其他设备的利用率5%。由此断定系统出现异常。此种情况下()能提高CPU的利用率。 正确答案:加存条,增加物理空间容量 16 对外存对换区的管理应以()为主要目标,对外存文件区的管理应以()为主要目标。 Ⅰ.提高系统吞吐量;Ⅱ.提高存储空间的利用率;Ⅲ.降低存储费用;Ⅳ.提高换入换出速度。 正确答案:Ⅳ;Ⅱ 17 在请求调页系统中,若所需的页不在存中,则会引起()。 正确答案:缺页中断 18 虚拟存储器一般都引入关联存储器技术,关联存储器是 正确答案:按容寻址 19 在请求分页系统的页表增加了若干项,其中访问位供()参考。 正确答案:置换算法 20 在动态分区式存管理中,倾向于优先使用低址部分空闲区的算法是();能使存空间中空闲区分布得较均匀的算法是();每次分配时,把既能满足要求,又是最小的空闲区分配给进程的算法是()。 Ⅰ.最佳适应算法;Ⅱ.最坏适应算法;Ⅲ.首次适应算法;Ⅳ.循环首次适应算法(即Next fit)。 正确答案:Ⅲ;Ⅳ;Ⅰ

操作系统第4章测验题

第4章存储器管理 4.1 典型例题解读 【例1】某系统采用动态分区分配方式管理内存,内存空间为640K,高端40K用来存放操作系统。在内存分配时,系统优先使用空闲区低端的空间。对下列的请求序列:作业1申请130K、作业2申请60K、作业3申请100K、作业2释放60K、作业4申请200K、作业3释放100K、作业1释放130K、作业5申请140K、作业6申请60K、作业7申请50K、作业6释放60K,请分别画图表示出使用首次适应算法和最佳适应算法进行内存分配和回收后内存的实际使用情况。

答:使用首次适应算法和最佳适应算法进行上述内存的分配和回收后,内存的实际使用情况分别如图(a)和(b)所示。 (a ) (b) 【例2】对一个将页表存放在内存中的分页系统: (1)如访问内存需要0.2μs ,有效访问时间为多少? (2)如果加一快表,且假定在快表中找到页表项的机率高达90%,则有效访问时间又是多少(假定查快表需花的时间为0)? 答:(1)有效访问时间为:2×0.2=0.4μs (2)有效访问时间为:0.9×0.2+(1—0.9)×2×0. 2=0.22 ps 。 【例3】某系统采用页式存储管理策略,拥有逻辑空间32页,每页2K ,拥有物理空间1M 。 (1)写出逻辑地址的格式。 (2)若不考虑访问权限等,进程的页表有多少项?每项至少有多少位? (3)如果物理空间减少一半,页表结构应相应作怎样的改变? 答:(1)该系统拥有逻辑空间32页,故逻辑地址中页号必须用5位来描述:而每页为 2K ,因此,页内地址必须用11位来描述,这样可得到它的逻辑地址格式如下: 等,则页表项中只需给出页所对应的物理块块号,1M 的物理空间可分成29个内存块,故每个页表项至少有9位 (3)如果物理空间减少一半,则页表中页表项数仍不变,但每项的长度可减少1位。 【例4】已知某分页系统,主存容量为64K ,页面大小为1K ,对一个4页大的作业,其0、l 、2、3页分别被分配到主存的2、4、6、7块中。 (1)将十进制的逻辑地址1023、2500、3500、4500转换成物理地址。 (2)以十进制的逻辑地址1023为例画出地址变换过程图。 答:(1)对上述逻辑地址,可先计算出它们的页号和页内地址(逻辑地址除以页面大小,得到的商为页号,余数为页内地址),然后通过页表转换成对应的物理地址。 ①逻辑地址1023:1023/1K ,得到页号为0,页内地址为1023,查页表找到对应的物理块

统计操作系统缺页次数

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

目录 一.实验目的---------------------------------------------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

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

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;

操作系统计算题问题详解

1.设某进程所需要的服务时间t=k ?q,k 为时间的个数,q 为时间长度且为常数.当t 为一定值时,令q →0,则有k →∞.从而服务时间为t 的进程的响应时间T 是t 的连续函数.对应于时间片调度方式RR,先来先服务方式FCFS 和线性优先级调度方式SRR,其响应时间函数分别为: T rr (t)=()λμμ-?t T fc (t)=()λμ-1 T sr (t)=()()()'11λμμλμ-?---t 其中'λ=()λ?-a b 1=r λ? 取(μλ,)=(50,100),分别改变r 的值,计算T rr (t),T fc (t)和T sr (t),并画出其时间变化 图. 2.对实时系统的频率单调调度算法,对于由3个周期组成的实时任务序列,设每个周期为T i (i=1,2,3),其相应任务的执行时间为C i (i=1,2,3).计算说明当进程执行时间与周期比之和为0.7时,能否保证用户所要求的时限(32=1.266). 3.有5个批处理作业(A,B,C,D,E)几乎同时到达一个计算中心,估计运行时间分别为2,4,6,8,10分钟,它们的优先数分别为1,2,3,4,5(数值小的优先级低),在使用最高优先级优先调度算法时,计算作业的平均周转时间. 解答: 1.对(,λμ)=(50,100) T rr (t)=t,T fc (t)=1/50,T sr (t)=1/50-(1-100t)/(100-50t) 0r →时,T sr (t)→1/100+t 1r →时, T sr (t)→2t 图象如下: 只有T sr (t)受r 值影响,且r 值增大,T sr (t)的斜率增大,y 截距由1/100趋向0,服务时间也增加。 题目: 4.假定某页式管理系统,主存为64KB,分成16块,块号为0,1,2,3,4,K K ,15,设某作业有4

操作系统第4-5章作业2015讲解

第4-5章作业 1、“整体对换从逻辑上也扩充了内存,因此也实现了虚拟存储器的功能”这种说法是否正确?请说明理由。 答:上述说明法是错误的。整体对换将内存中暂时不用的某个程序及其数据换出至外存,腾出足够的内存空间以装入在外存中的、具备运行条件的进程所对应的程序和数据。虚拟存储器是指仅把作业的一部分装入内存便可运行作业的存储器系统,是指具有请求调入功能和置换功能,能从逻辑上对内存容量进行扩充的一种存储器系统,它的实现必须建立在离散分配的基础上。虽然整体对换和虚拟存储器均能从逻辑上扩充内存空间,但整体对换不具备离散性。实际上,在具有整体对换功能的系统中,进程的大小仍受到实际内存容量的限制。 2、什么叫静态重定位,什么叫动态重定位,它们分别与何种装入方式相对应? 答:把作业装入内存中随即进行地址变换的方式称为静态重定位,在作业执行期间,当访问到指令或数据时才进行地址变换的方式称为动态重定位。它们分别和可重定位、动态运行时装入方式相对应。 3、虚拟存储器有哪些特征?其中最本质的特征是什么? 答:虚拟存储器具有离散性、多次性、对换性和虚拟性的特征。其中最本质的特征是离散性,在此基础上又形成了多次性和对换性,所表现出来的最重要的特征是虚拟性。 4、某系统采用页式存储管理策略,拥有逻辑空间32页,每页为2KB,拥有物理空间1MB。 1)写出逻辑地址的格式。 2)若不考虑访问权限等,进程的页表有多少项?每项至少有多少位? 3)如果物理空间减少一半,页表结构应相应作怎样的改变? 答:1)该系统拥有逻辑空间32页,故逻辑地址中页号必须用5位来描述,而每页为2KB,因此,页内地址必须用11位来描述。这样,可得到它的逻辑地址格式如下: 2)每个进程最多有32个页面,因此,进程的页表项最多为32项;若不考虑访问权限等,则页表项中只需给出页所对应的物理块号。1MB的物理空间可分成29个内存块,故每个页表项至少有9位。 3)如果物理空间减少一半,则页表中项表项数仍不变,但每项的长度可减少1位。 5、对于下表所示的段表,请将逻辑地址(0,137)、(1,4000)、(2,3600)、(5,230)转 换成物理地址。 段表 答:[0,137]:50KB+137=51337; [1,4000]:段内地址越界;

#计算机操作系统实验模拟比较页面置换页算法和缺页率(1)

成绩 计算机操作系统实验 模拟比较页面置换页算法及缺页率 学号200510020220 姓名乔峰 班级信息052 实验名称: 模拟比较页面置换页算法及缺页率 实验目的:(1)掌握先进先出页面置换算法; (2)掌握最近未用页面置换算法; (3)了解最近最久未使用页面置换算法以及其他页面置换算法; (4)熟悉C/C++编程。 实验学时:6学时 实验内容:编写程序,设置不同的页面数,使用不同的页面替换策略算法进行模拟页面替换。先进先出,最近未用页面置换算法等,并计算缺页 率。 实验环境: (1).PC微机 (2).Windows 操作系统 (3).C/C++开发环境 实验原理及算法参考程序段: #include #include #include #include #include int add[256]/*地址*/,page[256]/*页面*/; int k,j,ram,t; float rate;/*缺页率*/ struct s1 { int page; int free;

int tag; } fifo[33],opt[33],lru[33]; struct s2 { int time; }; void address(); float FIFO(int ram);/*先进先出*/ float LRU(int ram);/*最近最久未使用页面置换*/ void address() /*产生指令地址*/ { int i; add[0]=1000; for (i=1; i<=255; i++) { int x=random(1024); if ((x>=0)&&(x<512)) add[i]=add[i-1]+1; if ((x>=512)&&(x<768)) add[i]=random(add[i-1]-1)+1; if ((x>=768)&&(x<1024)) add[i]=add[i-1]+random(30*1024-add[i-1]-1)+1; } } float FIFO(int ram) { int absent=0,t=0,i,z,l,yn; for (i=0; i

操作系统计算分析题全

计算分析题 1、叙述操作系统的基本特征以及相互间的关系? 基本特征:并发性,共享性,虚拟性,异步性 关系:并发行是前提,并发与共享是最基本的特征,是互为存在条件;资源共享是以程序的并发执行为条件的。系统不能对资源共享进行有效管理,必然会影响并发执行的程度,甚至出现进程的死锁。 2、设磁带中有A、B、C三道程序,按照A、B、C优先级次序执行(可剥夺),执行时间如 表(ms),假设三道程序使用相同的设备进行I/O操作,计算出出单道和多道程序下CPU 和I/O设备各自的利用率? 1 单道批处理时间260ms Cpu利用率=150/260=57.7% 110/260=42.3 多道批处理时间190ms Cpu利用率=150/190=78.9% 110/190=57.9% 3、试对实时操作系统和分时操作系统进行比较。 1、及时性:(a)实时信息处理与分时系统一样,都是以人所能接受的等待时间来确定的一 般为2-3秒(b)实时控制系统要求比较高,以控制对象要求的截至时间来确定,一般分为秒级,百毫秒级,毫秒,甚至低于100微秒 2、可靠性:实时系统的可靠性比分时系统的可靠性更加严格经济损失,灾难事故 3、多路性:分时系统:多个用户;实时系统:对多路的现场信息进行采集,对多个对象, 多个执行机构进行控制 4、独立性:分时:用户独立;实时:信息采集和对象控制,互不干扰 5、交互性:分时:主机可以像终端提供数据处理服务,资源共享服务;实时:只限于访问 系统中某专用服务程序 6、简单说明进程图和前驱图的区别?

结点:进程图的结点表进程,前驱图的结点表语句,程序段,进程 边:进程图:A->B表A进程创建B进程,且AB进程同时并发进行 前驱图:p1->p2表p1必须在p2前执行,p1与p2不能并发执行 7、描述同步机制应遵循的原则,说明为什么记录型信号量能实现“让权等待”? 1空闲让进:当无进程在互斥区时,任何有权使用互斥区的进程可以进入 忙则等待:不允许两个以上的进程同时进入互斥区 有限等待:任何进入互斥区的需求应在有限的时间内得到满足 让权等待:处于等待状态的进程应效率占用cpu,以使其它进程有机会得到cpu的使用 2当s<0时,则将进程状态置为等待状态,将该进程的PCB插入相应的等待队列求尾queue 8、阐述进程的状态转换(三态)以及转换的原因? 1就绪状态:当进程分配到cpu以外的所有必须资源后,只要再获得cpu便可立即执行 执行状态:进程已获得cpu,其进程正在执行 阻塞状态:正在执行的进程由于发生某外部事件而暂时无法执行 2就绪->执行:cpu空闲,调度程序选择一个新的程序运行 运行->就绪:运行进程用空闲时间片,就绪队列排空;运行进程被中断,因为一高优先级进程处于就绪状态 运行->等待:操作系统尚未完成服务;对一资源的访问尚不能进行;初始化I/O且必须等待结果;等待某一进程提供输入(IPL) 等待->就绪:当所有等待的事发生 9、简要描述信号量S的物理含义以及采用P(S)和V(S)操作的注意事项? 1物理含义:s>0表示有s个资源可用,s=0表示无资源可用,s<0,|s|表示s等待队列中的进程个数 p(s)表示申请一个资源,v(s)表示释放一个资源(信号量的初始值>=0)2注意事项:pv操作必须成对出现,有一个p操作就有一个v操作;当为互反操作时,它们同处于同一进程;当为同步操作时,则不在同一进程中出现;如果p(s1)与p(s2)两操作在一起,则p操作的顺序至关重要;一个同步p操作与一个互斥p操作在一起时同步p 操作在互斥p操作前,而v操作顺序无关紧要 10、下图给出3个进程合作完成某一任务的图,A进程向缓冲区1写入信息,B进程从缓冲 区1读出信息写入到缓冲区2中,C进程从缓冲区2中读出信息。试说明4个进程间的同步关系,并用pv操作描述进程同步。

操作系统第5章作业答案

赵盈盈 2011210593 第五章作业 1. 存储管理的功能及目的是什么? 答:存储管理功能: 内存分配与管理。(1)记住每个存储区域的状态。(2)实施分配。分配方式有两种:静态 分配与动态分配(3)回收。 内存共享。共享的信息包括:代码共享(纯代码),数据共享 存储保护。存储保护内容有:保护系统程序区不受用户有意无意的侵犯;不允许用户程序写不属于自己地址空间的数据。(1)以防止地址越界;(2)以防止操作越权“扩充”内存容量。具体实现是在硬件支持下,软件硬件相互协作,将内存与外存结合起来统一使用。 地址映射。也称作重定位。将逻辑地址转换成物理地址。有两种方法:静态地址映射,动态地址映射。 存储管理目的: 充分利用内存,为多道程序并发执行提供存储基础; 尽可能方便用户使用; 解决程序空间比实际内存空间大的问题; 程序在执行时可以动态伸缩; 内存存取速度快; 存储保护与安全; 共享与通信; 了解有关资源的使用状况; 实现的性能和代价; 2. 什么是逻辑地址?什么是物理地址?为什么要进行二者的转换工作? 答:逻辑地址:就是cpu逻辑段管理内存而形成的地址。 物理地址:就是程序或数据在内存中的实际地址,即内存单元的地址,也就是被装入内存的内存地址寄存器的地址。 转换原因:当程序装入内存时,操作系统要为之分配一个合适的内存空间,由于程序逻辑地址与所分配到的内存物理地址编号不一致,而cpu执行指令时是按物理地址进行的, 所以要进行地址转换。 3. 什么是动态地址重定位?试用图画出动态地址重定位的过程。 答:动态地址重定位就是指动态地址映射。是地址映射的一种方式。它是在程序执行过程中要访 内存空间

实验六系统缺页次数统计实验

实验6 系统缺页次数统计实验 1.实验目的 ◆理解内存管理中缺页的概念 ◆综合运用实验1,实验4,实验5中/proc文件系统、内存管理、系统调用、内核 编译的知识 ◆掌握向/proc文件系统中增加文件的方法 ◆掌握Linux内核模块的概念和操作方法 2.实验内容(上交的实验2统一取名为:test2) 通过在内核中自建变量并利用/proc文件系统作为中介的方法来统计系统缺页次数 3.设计思想及算法流程 缺页次数: 虚拟内存技术的应用使得进程线性地址空间里的页面不必常驻内存。当CPU请求一个不在内存中的页面时,会发生缺页,比如我们从内存读取/写入数据,而数据未在内存,此时都会发生缺页。缺页被定义为一种异常(缺页异常),会触发缺页中断处理流程。 每种CPU结构提供一个do_page_fault处理缺页中断。由于每发生一次缺页都要进入缺页中断服务函数do_page_fault一次,所以统计该函数被调用的次数就可以得到系统从开机到现在的缺页次数。 /proc文件系统: /proc文件系统的文件记录了当前所有的系统信息,包括进程、文件系统、硬件等等。因此,可以通过在/proc中添加一个文件的方式,查看内存进程中的一些自定义运行参数,从而达到使用/proc实现内核与用户空间通信的目的。 在do_page_fault函数上一行定义统计缺页次数全局变量pfcount unsigned long volatile pfcount; 将pfcount加入到do_page_fault中,用以统计缺页次数. pfcount++; 声明全局变量pfcount到头文件mm.h中 extern unsigned long volatile pfcount; 导出pfcount全局变量,让整个内核都可以访问 EXPORT_SYMBOL(pfcount); 4.源程序 /*内核模块代码*/ #include #include

计算机操作系统第四版试题与答案

操作系统期末考试(一) 一、单项选择题(在每小题的四个备选答案中,只有一个是正确的,将其号码写在题干的括号中。每小题2分,共20分) 1、文件系统的主要组成部分是() A、文件控制块及文件 B、I/O文件及块设备文件 C、系统文件及用户文件 D、文件及管理文件的软件 2、实现进程互斥可采用的方法() A、中断 B、查询 C、开锁和关锁 D、按键处理 3、某页式管理系统中,地址寄存器的低9位表示页内地址,则页面大小为() A、1024字节 B、512字节 C、1024K D、512K 4、串联文件适合于()存取 A、直接 B、顺序 C、索引 D、随机 5、进程的同步与互斥是由于程序的()引起的 A、顺序执行 B、长短不同 C、信号量 D、并发执行 6、信号量的值() A、总是为正 B、总是为负 C、总是为0 D、可以为负整数 7、多道程序的实质是() A、程序的顺序执行 B、程序的并发执行 C、多个处理机同时执行 D、用户程序和系统程序交叉执行 8、虚拟存储器最基本的特征是() A、从逻辑上扩充内存容量 B、提高内存利用率 C、驻留性 D、固定性 9、飞机定票系统是一个() A、实时系统 B、批处理系统 C、通用系统 D、分时系统 10、操作系统中,被调度和分派资源的基本单位,并可独立执行的实体是() A、线程 B、程序 C、进程 D、指令 二、名词解释(每小题3分,共15分) 1.死锁: 2.原子操作: 3.临界区: 4.虚拟存储器: 5.文件系统: 三、判断改错题(判断正误,并改正错误,每小题2分,共20分) 1、通道是通过通道程序来对I/O设备进行控制的。() 2、请求页式管理系统中,既可以减少外零头,又可以减少内零头。() 3、操作系统中系统调用越多,系统功能就越强,用户使用越复杂。() 4、一个进程可以挂起自已,也可以激活自已。() 5、虚拟存储器的最大容量是由磁盘空间决定的。() 6、单级文件目录可以解决文件的重名问题。() 7、进程调度只有一种方式:剥夺方式。() 8、程序的顺度执行具有顺序性,封闭性和不可再现性。() 9、并行是指两个或多个事件在同一时间间隔内发生,而并发性是指两个或多个事件在 同一时刻发生。() 10、进程控制一般都由操作系统内核来实现。() 四、简答题(每小题5分,共25分) 1、简述死锁产生的原因及必要条件。 2、什么是多道程序技术,它带来了什么好处? 3、有结构文件可分为哪几类,其特点是什么? 4、分时系统的基本特征是什么? 5、分页系统与分段系统的区别主要在于哪些方面?

实验四-统计缺页次数

实验四-统计缺页次数

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

2.实验环境 操作系统:Ubuntu 12.04(内核版本为3.2.0-23-generic-pae) 内核源码:linux-3.2.58 实验指导 1.下载一份内核源代码并解压 Linux受GNU通用公共许可证(GPL)保护,其内核源代码是完全开放的。现在很多Linux的网站都提供内核代码的下载。推荐使用Linux的官方网站:https://www.doczj.com/doc/b76043118.html,。 图1 Linux的官方网站 在terminal下可以通过wget命令下载源代码: $ cd /tmp

$ wget https://www.doczj.com/doc/b76043118.html,/pub/linux/kernel/v3.x/lin ux-3.2.58.tar.xz 切换到root身份,解压源代码到/usr/src目录下: # xz –d linux-3.2.58.tar.xz # tar –xvf linux-3.2.58.tar –C /usr/src 2. 修改内核源代码,添加统计变量 1、切换到预编译内核目录 #cd /usr/src/linux-3.2.58 2、修改处理内存访问异常的代码 //用vi编辑器打开fault.c,一般使用Intel x86体系结构,则修改arch/x86/目录下的文件 #vi arch/x86/mm/fault.c #cd arch/x86/mm #sudo gedit fault.c

操作系统第五次作业参考答案

作业共有3次: 操作系统作业(2011-04-18)、操作系统作业(2011-04-21)、课本(P159-26) 操作系统作业(2011-04-18): 1、下表给出了五个进程的执行时间和优先数,规定优先数越小优先权越大,在某时刻这五 个进程按照P0、P1、P2、P3、P4的顺序同时到达,求在采用如下算法时进程的平均周转时间和平均带权周转时间。(1)先来先服务调度算法(2)短进程优先调度算法(3)时间片轮转调度算法(时间片为5ms)(4)优先权调度算法 [参考答案]:(1)作业执行顺序:P0、P1、P2、P3、P4;71ms;2.50 (2)作业执行顺序:P1、P0、P3、P2、P4;68ms; 2.25 (3)作业执行顺序:略;105ms; 3.83 (4)作业执行顺序:P3、P1、P0、P2、P4;71ms; 2.55 2、在分页存储管理系统中,存取一次内存的时间是8us,查询一次快表的时间是1us,缺页 中断的时间是20us,假设页表的查询与快表的查询同时进行。当查询页表时,如果该页在内存但快表中没有页表项,系统将自动把该页页表项送入快表。 (1)求对某一数据进行一次存取可能需要的时间? (2)现连续对同一页面上的数据进行4次连续读取,求每次读取数据可能需要的时间? [参考答案]: (1) 当系统对数据进行存取时,有3种可能性: ①所存取的数据的页面在内存,其页表项已经存储到快表,此时存取数据的时间是: 查询快表的时间+存取内存数据的时间=1us+8us= 9us ②所存取的数据的页面在内存,但是其页表项没有存储到快表,没有命中快表,此时 存取数据的时间是:查询页表的时间+存取内存数据的时间=8us+8us= 16us ③所存取的数据的页面不在内存,发生缺页中断,此时存取数据的时间是: 查询页表的时间+缺页中断的时间+查询页表的时间+存取内存数据的时间=8us+20us+8us+8us = 44us (2) 当对某一数据进行4次连续读取时: ①第1次可能的时间为:1us+8us= 9us;8us+8us= 16us;8us+20us+8us+8us=44us。 ②第2次时,对应页面的页表项已经交换到快表中。因为存取是连续的,不存在页面 被淘汰的可能性,所以第2次、第3次、第4次的存取时间是一样的,消耗的时间为1us+8us= 9us。 3、在一个分页存储管理系统中,逻辑地址长度为16位,页面大小为4096字节,现有一逻 辑地址2F6AH,且第0、1、2页依次存放在物理块5、10、11中,问相应的物理地址为多少(请用十六进制表示)?并画出地址转换图。 [参考答案]:(BF6AH)注意:还要画出地址转换图

操作系统第四次作业

1、在计算机体系结构中,为什么配置层次式存储器? 答:(1)可以是硬件两端都可以并行工作; (2)采用多久存储,使用Cache技术,可以提高操作系统的效率; (3)减轻存储器存取的压力。 2、试全面比较连续分配和离散分配方式。 答:连续分配是指为一个用户程序分配一个连续的内存空间。又可进一步分为单一连续分配、固定分区分配、动态分区分配和动态重定位分区分配四种方式。连续分区方式可使一个进程分得一个连续的内存空间,这样一来有利于程序的执行,但同时又会产生很多的碎片,浪费大量的系统资源。 离散分区是采用段式或页式或段页式的分配方式将一个进程装入一些离散的内存中,这样有利于内存的利用,并且可以方便程序员在更大的空间进行编程工作。 综上可见,连续分配方式和离散分配方式各有各自的特点,应根据实际情况加以改进和利用。 3、某计算机系统提供24位虚存空间,主存为218B,采用分页式虚拟存储管理,页面大小为1KB。假定用户程序产生了虚拟地址11123456(八进制),而该页面分得块号为100(八进制),说明该系统如何产生相应的物理地址且写出物理地址。 答:虚拟地址11123456(八进制)转化为二进制为:001 001 001 010 011 100 101 110 根据题意有,其中前面为页号,而后10位为位移:001 001 001 010 01--------1 100 101 110。又因为主存大小为218B,页面尺寸为1KB=210B,所以,主存共有218-10,即256块。所以,块号为100(八进制)是合法地址, 于是得出,物理地址为100与位移1 100 101 110并接,得到:八进制物理地址100 1 100 101 110。 4、有数组int A[100][100];元素按行存储。在一虚存系统中,采用LRU淘汰算法,一个进程有3页主存空间,每页可以存放200个整数。其中第1页存放程序,且假定程序已在主存。 程序A: for(int i=0;i<100;i++) for(int j=0;j<100;j++) a(i,j)=0; 程序B: for(int j=0;j<100;j++) for(int i=0;i<100;i++) a(i,j)=0; 分别就程序A和B的执行进程计算缺页次数。 答:对于程序A: 由于程序A对矩阵A的访问是按行进行,即按照存储顺序进行,因此,每次缺页中断调进一页后,位于该页的数组元素全部被赋于0值,然后再调入下一页,所以,涉及的页面走向M,M+1、、、、、、、M+49。 故缺页次数为50次。 对于程序B: 由于程序B对矩阵A的访问是按列进行,而矩阵A每行有100个数据,每页可以存放200个数据,因此,每项中有2个数据,属于同一列。每次缺省中断调进一页时,只有其中的2个数据被赋于0值,即程序B对矩阵每次访问会遇到一次缺页,所以,波及的页面走向为; M,M+1,.、、、、、、、M+49 处理1列

统计缺页次数

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

图1 Linux的官方网站 在terminal下可以通过wget命令下载源代码: $ cd /tmp $ wget 切换到root身份,解压源代码到/usr/src目录下: # xz –d linux-3.2.58.tar.xz # tar –xvf linux-3.2.58.tar –C /usr/src 2. 修改内核源代码,添加统计变量 1、切换到预编译内核目录 #cd /usr/src/linux-3.2.58 2、修改处理内存访问异常的代码 //用vi编辑器打开fault.c,一般使用Intel x86体系结构,则修改arch/x86/目录下的文件#vi arch/x86/mm/fault.c //在do_page_fault函数的上一行定义统计缺页次数的全局变量pfcount unsigned long volatile pfcount; //将pfcount加入到do_page_fault中,用以统计缺页次数 pfcount++; 3、修改内存管理代码 //用vi编辑器打开头文件mm.h #vi include/linux/mm.h //在mm.h中加入全局变量pfcount的声明,代码加在extern int page_cluster;语句之后extern unsigned long volatile pfcount; 4、导出pfcount全局变量,让整个内核(包括模块)都可以访问。方法是: #vi kernel/kallsyms.c //在文件最后加入一行代码 EXPORT_SYMBOL(pfcount); 3. 配置编译新内核 用编译Linux内核预备实验中的方法完成新内核的配置、编译、替换,重启后验证是否完成替换。 #uname –r //如果为3.2.58(与你采用的新内核版本一至)说明替换完成 4. 编写读取pfcount值的模块代码 系统重启后,执行如下操作: #mkdir source //在当前用户目录下创建source文件夹,用于存放编写的用户程序#cd source //切换到source目录 #vi pf.c //新建用于构建模块的代码 -------------------------------------------- /*pf.c*/ /*modules program*/ #include

相关主题
文本预览
相关文档 最新文档