统计操作系统缺页次数
- 格式:doc
- 大小:964.00 KB
- 文档页数:10
计科操作系统复习⼀、填空1、是以并发和共享为前提,是并发和共享的必然结果。
2、操作系统的管理部分负责对进程进⾏调度。
3、进程的基本特征有、、独⽴性、异步性及结构性特征。
4、某系统中3个并发进程,都需要同类源4个,试问该系统不会发⽣死锁的最少资源数是。
5、若选择算法不恰当,将会引起抖动现象。
6、产⽣死锁的四个必要条件是、、、。
7、银⾏家算法是对死锁的,资源的⼀次性申请是对死锁。
8、页式存储管理⽅式中,要存指令或数据要次访问主存。
9、虚拟设备是通过技术把设备变成能为若⼲⽤户的设备。
10、⽂件的物理结构有、和。
1、计算机资源可分为和。
2、分时系统的特点有、、、。
3、若进程采⽤抢占的调度⽅式,抢占的原则有、、。
4、是指从作业提交给系统到作业完成的时间间隔。
5、产⽣死锁的原因有和。
6、分页式存储管理中,进程的虚拟地址空间被划分成若⼲,内存的物理地址空间被划分成与等⼤的。
7、选择调度⽅式和调度算法的准则中⾯向系统的准则有、、。
8、⽬前对⽬录进⾏查询的⽅式有和。
1、在磁盘的调度策略中,SSTF策略可能会引起问题,因此,要对SSTF策略进⾏必要的修改,其关键是要记住的⽅向。
2、访问磁盘的时间包括、、三部分。
3、在段页式存储管理中,逻辑地址由、、三部分构成。
4、⽤信箱实现进程通信时,应有和两条基本原语。
5、信号量的物理意义是当信号量值⼤于0时表⽰,当信号量值⼩于0时,其绝对值为。
6、操作系统中,对信号量S的wait原语的定义中,使进程进⼊相应等待队列等待的条件是7、进程存在的标志是。
8、在银⾏家算法中,当⼀个进程提出的资源请求将导致系统从进⼊时,系统就拒绝他的资源请求。
9、操作系统的基本特征有、、、1、按内存中同时运⾏程序的数⽬可以将批处理系统分为两类:和。
2、从资源管理的观点看,操作系统的功能可分为、、、、。
3、操作系统向⽤户提供、、三种接⼝。
4、进程刚被创建时,它的初始状态为。
5、PCB的中⽂含义为。
6、在存贮管理中,有⼀项⼯作是把逻辑地址转换为绝对地址,我们把这项⼯作称为,可分为、两种。
实验二: 统计操作系统缺页次数目录一.实验目的---------------------------------------------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 12.04(内核版本为3.2.0-23-generic-pae)内核源码:linux-3.2.58三实验步骤1.下载一份内核源代码并解压Linux受GNU通用公共许可证(GPL)保护,其内核源代码是完全开放的。
现在很多Linux的网站都提供内核代码的下载。
推荐使用Linux的官方网站:。
在terminal下可以通过wget命令下载源代码:$ cd /tmp$ wget /pub/linux/kernel/v3.x/linux-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/src2.修改内核源代码,添加统计变量1、切换到预编译内核目录#cd /usr/src/linux-3.2.582、修改处理内存访问异常的代码//用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全局变量,让整个内核(包括模块)都可以访问。
一、选择题1.当()时,进程从执行状态转变为就绪状态。
A.进程被调度程序选中B。
时间片到C.等待某一事件D。
等待的事件发生2.操作系统中,wait、signal操作是一种()A.机器指令B.系统调用命令C.作业控制命令D.低级进程通信原语3. 下面对进程的描述中,错误的是()。
A.进程是动态的概念B.进程执行需要处理机C.进程是有生命期的D.进程是指令的集合4. 下列各项工作步骤中,()不是创建进程所必需的步骤。
A.建立一个PCBB.作业调度程序为进程分配CPUC.为进程分配内存等资源D. 将PCB链入进程就绪队列5. 下列关于进程的叙述中,正确的是()。
A.进程通过进程调度程序而获得CPU。
B.优先级是进行进程调度的重要依据,一旦确定不能改变。
C.在单CPU系统中,任一时刻都有1个进程处于运行状态。
D.进程申请CPU得不到满足时,其状态变为等待状态。
6. 有m个进程共享同一临界资源,若使用信号量机制实现对一临界资源的互斥访问,则信号量的变化范围是()。
A. 1至–(m-1)B.1至m-1C.1至–mD.1至m7. 设两个进程共用一个临界资源的互斥信号量mutex,当mutex=-1时表示()。
A.一个进程进入了临界区,另一个进程等待进入B.没有一个进程进入临界区C.两个进程都进入了临界区D.两个进程都在等待8. 如果系统中有n个进程,则就绪队列中进程的个数最多为()。
A. n+1B. nC. n-1D. 19. 一个进程释放一种资源将有可能导致一个或几个进程()。
A.由就绪变运行B.由运行变就绪C.由阻塞变运行D.由阻塞变就绪10. 在下面的叙述中,不正确的是()。
A.一个进程可创建一个或多个线程B.一个线程可创建一个或多个线程C.一个线程可创建一个或多个进程D.一个进程可创建一个或多个进程11. 下述哪一个选项体现了原语的主要特点()。
A.并发性B.异步性C.共享性D.不可分割性12. 若系统中只有用户级线程,则处理机调度单位是()。
希赛®远程教育平台——疑难解答各算法下缺页次数的计算在一个虚存系统中,进程的内存空间为 3 页,开始内存为空,有以下访问页序列:1 4 6 5 3 4 5 2 5 4 3 5 1 2 4 1。
分别计算缺缺页次数: (1)使用先进先出的页面淘汰算法。
(2)使用最佳适应算法。
(3)使用最近最少使用算法。
学员疑问: 老师我的解答如下,您看对不对? (1)先进先出 1 4 6 5 3 4 5 2 5 4 3 5 1 2 4 1 -----------------------------------------------1 1 1 5 5 5 5 2 2 2 2 2 1 1 1 1 4 4 4 3 3 3 3 5 5 5 5 5 2 2 2 6 6 6 4 4 4 4 4 3 3 3 3 4 4 缺页次数 3 次。
(2)最佳适应算法 1 4 6 5 3 4 5 2 5 4 3 5 1 2 4 1 ---------------------------------------------------1 1 1 1 3 3 3 2 2 2 2 2 2 2 4 4 4 4 4 4 4 4 4 4 4 3 3 3 3 3 3 6 5 5 5 5 5 5 5 5 5 1 1 1 1 缺页次数 6 次。
(3)最近最少使用算法 1 4 6 5 3 4 5 2 5 4 3 5 1 2 4 1 -----------------------------------------------1 1 1 5 5 5 5 5 5 5 5 5 5 5 4 4 4 4 4 3 3 3 2 2 2 3 3 3 2 2 2 6 6 6 4 4 4 4 4 4 4 1 1 1 1 缺页次数 6 次。
解答: 你画的页面变化情况表是对的, 但缺页次数不对。
要考虑“开始内存为空”的初始条件。
也就是说最开始调入的三个页面同样是缺页。
国开期末考试《操作系统》机考试题及答案(第8套)一、选择题(每题2分,共20分)1. 下列哪个不是操作系统的五大功能?A. 进程管理B. 存储管理C. 文件管理D. 网络管理E. 作业管理2. 进程的三个基本状态是____、____和____。
A. 运行、就绪、挂起B. 运行、就绪、终止C. 运行、阻塞、挂起D. 运行、阻塞、终止3. 在操作系统中,用于实现进程同步和互斥的机制是____。
A. 信号量B. 临界区C. 互斥锁D. 以上都是4. 下列哪种分配方式可用于内存分配?A. 固定分配B. 可变分配C. 虚拟内存D. 以上都是5. 下列哪个不属于文件系统的功能?A. 文件存储B. 文件检索C. 文件传输D. 文件保护二、填空题(每题2分,共20分)1. 操作系统的目标是____、____、____和____。
2. 进程可以分为三种类型:____、____和____。
3. 进程的三个基本状态是____、____和____。
4. 操作系统的五大功能模块包括:____、____、____、____和____。
5. 虚拟存储器是实现____和____的技术。
三、简答题(每题10分,共30分)1. 简述进程和线程的区别。
2. 简述操作系统的调度策略。
3. 简述文件系统的组织结构。
四、计算题(每题10分,共20分)1. 一个计算机系统有10个进程,每个进程的平均运行时间分别为:5分钟、8分钟、10分钟、12分钟、15分钟、18分钟、20分钟、22分钟、25分钟和27分钟。
假设系统采用最短作业优先调度策略,求系统的平均作业响应时间。
2. 假设一个计算机系统的内存容量为4GB,页大小为4KB,采用分页虚拟存储器管理方式。
求系统的虚拟地址空间大小、物理地址空间大小和缺页中断次数。
五、综合题(25分)假设你是一家操作系统的开发人员,请根据以下需求,设计一个简单的操作系统:1. 支持多道程序设计,能够同时运行多个进程。
实验3 统计操作系统缺页次数实验目的学习操作系统的存储管理原理;理解操作系统存储管理的分页、虚拟内存、“按需调页”思想及方法;掌握Linux内核对虚拟内存、虚存段、分页式存储管理、按需调页的实现机制。
实验内容进行实验前,务必先行阅读、理解Linux内核的关于存储管理的源代码,理解Linux存储管理的整体思想。
因为,本实验比较简单,没能覆盖Linux内核中存储管理的所有内容。
实验共做两个。
第一个实验统计自内核加载完成以后到当前时刻为止发生的缺页次数和经历过的时间;第二个实验统计从当前时刻起一段时间内发生的缺页中断次数。
两者的实现方法略有不同。
实验指导3.1系统缺页次数看看这个实验怎么通过自建变量并利用/proc文件系统,来统计自系统启动以来,系统的缺页次数。
3.1.1 实验原理由于每发生一次缺页都要进入缺页中断服务函数do_page_fault一次,所以可以认为执行该函数的次数就是系统发生缺页的次数。
因此可以定义一个全局变量pfcount作为计数变量,在执行do_page_fault时,该变量值加1。
至于系统自开机以来经历的时间,可以利用系统原有的变量jiffies。
这是一个系统的计时器,在内核加载完以后开始计时,以10ms(缺省)为计时单位。
当然,读取变量pfcount和变量jiffies的值,还需要借助/proc文件系统。
在/proc文件系统下建立目录pf;并且在pf目录下,建立文件pfcount和jiffies。
3.1.2 实验实施先在include/linux/mm.h文件中声明变量pfcount:--- linux-2.6.15/include/linux/mm.h.orig+++ linux-2.6.15/include/linux/mm.h********************26,29*****extern unsigned long num_physpages;extern void * high_memory;extern unsigned long vmalloc_earlyreserve;extern int page_cluster;+ extern unsigned long pfcount;在arch/i386/mm/fault.c文件中定义变量pfcount:--- linux-2.6.15/arch/i386/mm/fault.c.orig+++ linux-2.6.15/arch/i386/mm/fault.c*******************227,235****+ unsigned long pfcount;fastcall void __kprobes do_page_fault(struct pt_regs *regs,unsigned long error_code){struct task_struct *tsk;struct mm_struct *mm;struct vm_area_struct * vma;unsigned long address;unsigned long page;int write, si_code;每次产生缺页中断,并且确认是由缺页引起的,则将变量值递增1。
对⽤LRU和FIFO算法计算“缺页中断”的理解输⼊缺页次数页⾯流:0 1 2 3 2 1 3 2 5 2 3 6 2 1 4 2 FIFO分析:012發別調⼊內存,則內存:012(3次缺⾴)調⼊3逃汰最先進⼊的0,則內存:123(4次缺⾴)調⼊2來命中,則內存:123(內存中有2不缺⾴)調⼊1來命中,則內存:123(內存中有1不缺⾴)調⼊3來命中,則內存:123(內存中有3不缺⾴)調⼊5逃汰最先進⼊的1,則內存:235(5次缺⾴)2,3別別命中,則內存:235調⼊6逃汰最先進⼊的,則內存:356(6次缺⾴)調⼊2逃汰最先進⼊的,則內存:562(7次缺⾴)調⼊1逃汰最先進⼊的,則內存:621(8次缺⾴)最后2命中,所以缺页8次=============================在LRU算法中,最近最少使⽤的页⾯被先换出输⼊:7 0 1 2 0 3 0 4 2 3 0 3 2 1 2 0 1 7 0写出LRU算法实现页⾯更换,并给出缺页次数.(设在内存中占四个页架)分析:1题⽬给了访问串7 0 1 2 0 3 0 4 2 3 0 3 2 1 2 0 1 7 02题⽬给了内存中占四个页架3题⽬给了⽤LRU算法来实现。
要求:画出算法实现。
LRU给出⾏ 7 0 1 2 0 3 0 4 2 3 0 3 2 1 2 0 1 7 0头-----> 2 0 3 0 4 2 3 0 3 2 1 2 0 1 7 01 2 0 3 0 4 2 3 0 3 2 1 2 0 1 70 1 2 2 3 0 4 2 2 0 3 3 1 2 0 1底-----> 7 7 1 1 2 3 0 4 4 4 0 0 3 3 2 2淘汰出内存的页⾯: 7 1 4 3整个的表格是怎么来的呢?请注意:题⽬给了7, 写7;题⽬给了0,写0, 7下⼀格;题⽬给了1, 写1,0下⼀格;题⽬给了2, 写2,1下⼀格;注意:已经四个了从上到下是:2107达到了2的要求:内存中占四个页架。
《计算机操作系统实验指导》(Linux版)(附微课视频)实验思考解答第1章操作系统实验体系介绍第1章无实验思考。
第2章实验环境的搭建与使用1. 实验2.1 Linux常用命令的使用(1)在Linux 中,图形界面与终端控制台以及各终端控制台之间在如何切换?使用ALT+F1~ALT+F6进行各终端控制台切换2. 实验2.2 Linux下C程序的编写(1)make 工具的编译原理是什么?make 是一个命令工具,它解释 Makefile 中的指令(规则)。
在 Makefile文件中描述了整个工程所有文件的编译顺序、编译规则。
在执行 make 之前,需要一个命名为Makefile 的特殊文件(本文的后续将使用Makefile 作为这个特殊文件的文件名)来告诉 make 需要做什么(完成什么任务),该怎么做。
(2)如何直接使用gcc 命令完成myapp.c、greeting.h、greeting.c 三个文档的编译?输入以下两条命令:①gcc –c greeting.c //生成greeting.o文件② gcc –o greeting myapp.c greeting.o //把greeting.o和myapp.c一起编译成可执行文件greeting。
第3章进程控制与进程调度1. 实验3.1 进程的创建(1)总结调用fork()函数后的三种返回情况。
fork()系统调用有3种返回情况:返回值>0,表示当前进程是父进程,这个返回值为子进程的进程ID值;等于0,表示当前进程是子进程;小于0,表示进程创建失败,需要报错。
(2)总结fork()和wait()配合使用的情况,并尝试在父进程中取消wait()函数,观察进程的运行情况。
当父进程中同时使用fork()和wait()/waitpid()函数时,父进程会处于阻塞状态等待子进程的运行结束。
如果父进程中没有调用wait()/waitpid()函数,则父进程和其创建的子进程属于并发进程,也就是父进程和子进程几乎是独立运行的。
CH1 应用题参考答案1有一台计算机,具有1MB内存,操作系统占用200KB,每个用户进程各占200KB。
如果用户进程等待I/O的时间为80%,若增加1MB内存,则CPU的利用率提高多少?答:设每个进程等待I/O的百分比为P,则n个进程同时等待I/O的概率是P n ,当n个进程同时等待I/O期间CPU是空闲的,故CPU的利用率为1-P n 。
由题意可知,除去操作系统,内存还能容纳4个用户进程,由于每个用户进程等待I/O的时间为80%,故:CPU利用率=1-(80%)4 =0.59若再增加1MB内存,系统中可同时运行9个用户进程,此时:CPU利用率=1-(80%)9 =0.87故增加1MB内存使CPU的利用率提高了47%:87%÷59%=147%147%-100%=47%2一个计算机系统,有一台输入机和一台打印机,现有两道程序投入运行,且程序A 先开始做,程序B后开始运行。
程序A的运行轨迹为:计算50ms、打印100ms、再计算50ms、打印100ms,结束。
程序B的运行轨迹为:计算50ms、输入80ms、再计算100ms,结束。
试说明(1)两道程序运行时,CPU有无空闲等待?若有,在哪段时间内等待?为什么会等待?(2)程序A、B有无等待CPU的情况?若有,指出发生等待的时刻。
答:画出两道程序并发执行图如下:(1)(见图中有色部分)。
(2)程序A无等待现象,但程序B有等待。
程序B有等待时间段为180ms至200ms间(见图中有色部分)。
3设有三道程序,按A、B、C优先次序运行,其内部计算和I/O操作时间由图给出。
A B CC11=30ms C21=60ms C31=20ms∣∣∣I12=40ms I22=30ms I32=40ms∣∣∣C13=10ms C23=10ms C33=20ms 试画出按多道运行的时间关系图(忽略调度执行时间)。
完成三道程序共花多少时间?比单道运行节省了多少时间?若处理器调度程序每次进行程序转换化时1ms,试画出各程序状态转换的时间关系图。
实验二: 统计操作系统缺页次数
目录
一.实验目的---------------------------------------------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
2、修改处理内存访问异常的代码
3.2.58文件:
#make mrproper
然后配置编译选项(此处使用原内核的配置文件,完整的配置命令看操作提示):
# cp /boot/config-3.2.0-23-generic-pae .config
该命令的作用是将原内核配置文件拷贝的当前目录下,并命名
为.config。
若需要进一步修改配置请参照操作提示。
用编译Linux内核预备实验中的方法完成新内核的配置、编译、替换,
重启后验证是否完成替换。
#uname –r 3.2.58
写读取pfcount值的模块代码
系统重启后,执行如下操作:
cd /home/sa
#mkdir source //在当前用户目录下创建source文件夹,用于
存放编写的用户程序
#cd source //切换到source目录
#vi //新建用于构建模块的代码
--------------------------------------------
/**/
/*modules program*/
#include <linux/>
#include <linux/>
#include <linux/>
#include <linux/>
#include <linux/>
#include <linux/>
#include <asm/>
struct proc_dir_entry *proc_pf;
struct proc_dir_entry *proc_pfcount;
extern unsigned long volatile pfcount;
static inline struct proc_dir_entry *proc_pf_create(const char* name, mode_t mode, read_proc_t * get_info)
{
return
create_proc_read_entry(name,mode,proc_pf,get_info,NULL);
}
int get_pfcount(char *buffer, char **start, off_t offset, int length, int *peof, void *data)
{
int len = 0;
len = sprintf(buffer, "%ld \n", pfcount);
return len;
}
static int pf_init(void)
{
proc_pf = proc_mkdir("pf", 0);
proc_pf_create("pfcount", 0, get_pfcount);
return 0;
}
static void pf_exit(void)
{
remove_proc_entry("pfcount",proc_pf);
remove_proc_entry("pf",0);
}
module_init(pf_init);
module_exit(pf_exit);
MODULE_LICENSE("GPL");
5.编译、构建内核模块
cd /home/sa/source
#vi Makefile //在source目录下建立Makefile文件在Makefile中添加如下内容:
obj-m :=
编译内核模块:
make -C /usr/src/ SUBDIRS=/home/sa/source modules
6.加载模块到内核中
执行加载模块命令:
#insmod
查看统计缺页次数:
#cat /proc/pf/pfcount。