《操作系统》人大网校考前练习题Word格式文档下载.docx
《《操作系统》人大网校考前练习题Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《《操作系统》人大网校考前练习题Word格式文档下载.docx(17页珍藏版)》请在冰豆网上搜索。
解答:
页面大小为1KB,所以低10位为页内偏移地址;
用户编程空间为32个页面,即逻辑地址高5位为虚页号;
主存为16kB,即物理地址高4位为物理块号。
逻辑地址0AC5H转换为二进制为000101011000101B,虚页号为2(00010B),映射至物理块号4,故系统访问物理地址12C5H(01001011000101B)。
逻辑地址1AC5H转换为二进制为001101011000101B,虚页号为6(00110B),不在页面映射表中,会产生缺页中断,系统进行缺页中断处理。
逻辑地址3AC5H转换为二进制为011101011000101B,页号为14,而该用户程序只有10页,故系统产生越界中断。
注意:
题中在对十六进制地址转换为二进制时,我们可能会习惯性地写为16位,这是容易犯错的细节。
如题中逻辑地址是15位,物理地址为14位。
逻辑地址0AC5H的二进制表示为000101011000101B,对应物理地址12C5H的二进制表示为01001011000101B。
这一点应该注意。
顾客进店后按序取号,并等待叫号;
销售人员空闲之后也是按序叫号,并销售面包。
因此同步算法只要对顾客取号和销售人员叫号进行合理同步即可。
我们使用两个变量i和j分别记录当前的取号值和叫号值,并各自使用一个互斥信号量用于对i和j进行访问和修改。
inti=0,j=0;
semaphoremutex_i=1,mutex_j=1;
Consumer(){//顾客
进入面包店;
p(mutex_i);
//互斥访问i
取号i;
i++;
V(mutex_i);
//释放对i的访问
等待叫号i并购买面包;
}
Seller(){//销售人员
while
(1){
p(mutex_j);
//互斥访问j
if(j<
i){//号j已有顾客取走并等待
叫号j;
j++;
V(mutex_j);
//释放对j的访问
销售面包;
else{//暂时没有顾客在等待
休息片刻;
实现为特别文件,便于操作系统对目录的识别,使得安全性更容易实施。
实现为普通文件,便于操作系统以统一的方式对系统中的对象进行管理,以便更易于创建和管理属于用户的目录。
以降低N个优先级(如N=2或3)的方式看待就绪/挂起进程,只有当就绪/挂起进程的优先级比最高优先级的就绪进程高出N个优先级时,才选择就绪/挂起的进程。
多道程序设计是指同时把多个作业(程序)放入内存,使它们交替执行,共享处理器时间、外设及系统中的其他资源;
当一道程序因某种原因(如I/O请求)而暂停执行时,CPU立即转去执行另一道程序。
多道程序设计技术减少了CPU等待时间,增加了系统吞吐量,提高了系统的效率。
多道程序设计技术的主要特点:
多道、宏观上并行、微观上串行。
多道是指计算机内存中同时存放多道相互独立的程序。
宏观上并行是指同时进入系统中的多道程序都处于运行状态。
微观上串行是指在单处理器环境中,内存中的多道程序轮流占用CPU,交替执行。
(1)Work矢量初始化值=Available(1,5,2,0)
系统安全性分析:
因为存在一个安全序列<
P0、P2、P1、P3>
,所以系统处于安全状态。
(2)
Requset1(0,4,2,0)<
Need1(0,7,5,0)
Available(1,5,2,0)
假设先试着满足进程P1的这个请求,则Available变为(1,1,0,0)
系统状态变化见下表:
再对系统进行安全性分析,见下表:
,所以系统仍处于安全状态。
所以进程P1的这个请求应该马上被满足。
从题意可知,各类进程之间采用优先级调度算法,而同类进程内部采用时间片轮转调度算法,因此,系统首先对优先级为4的进程P1、P2、P3采用时间片轮转调度算法运行;
当P1、P2、P3均运行结束或没有可运行的进程(即P1、P2、P3都处于等待状态;
或其中部分进程已运行结束,其余进程处于等待状态)时,则对优先级为3的进程P4、P5采用时间片轮转调度算法运行。
在此期间,如果未结束的P1、P2、P3有一个转为就绪状态,则当前时间片用完后又回到优先级4进行调度。
类似地,当P1~P5均运行结束或没有可运行进程(即P1~P5都处于等待状态;
或其中部分进程已运行结束,其余进程处于等待状态)时,则对优先级为2的进程P6、P7、P8采用时间片轮转调度算法运行,一旦P1~P5中有一个转为就绪状态,则当前时间片用完后立即回到相应的优先级进行时间片轮转调度。
首先,我们来看这些功能是不是应该由操作系统来完成。
操作系统是一个代码相对稳定的软件,它很少发生代码的变化。
如果1)由操作系统完成,那么操作系统就必须记录逻辑块和磁盘细节的映射,操作系统的代码会急剧膨胀,而且对新型介质的支持也会引起代码的变动。
如果2)也由操作系统完成,那么操作系统需要记录不同生产厂商的不同数据,而且后续新厂商和新产品也无法得到支持。
因为1)和2)都与具体的磁盘类型有关,因此为了能够让操作系统尽可能多的支持各种不同型号的设备,1)和2)应该由厂商所编写的设备驱动程序完成。
3)涉及到安全与权限问题,应由与设备无关的操作系统完成。
4)应该由用户层来完成,因为只有用户知道将二进制整数转换为ASCII码的格式(使用二进制还是十进制,有没有特别的分隔符等)。
有效访问时间为80%×
1+(1-80%)×
((1-10%)×
1×
2)+2%×
(1×
3+20×
1000)(μs)
1)由段表知,第0段内存始址为210,段长为500,故逻辑地址(0,430)是合法地址,对应的物理地址为210+430=640。
2)由段表知,第1段内存始址为2350,段长为20,故逻辑地址(1,10)是合法地址,对应的物理地址为2350+10=2360。
3)由段表知,第2段内存始址为100,段长为90,故逻辑地址(2,500)的段内位移500已经超过了段长,故为非法地址。
4)由段表知,第3段内存始址为1350,段长为590,故逻辑地址(3,400)是合法地址,对应的物理地址为1350+400=1750。
5)由段表知,第4段内存始址为1938,段长为95,故逻辑地址(4,112)的段内位移112已经超过了段长,故为非法地址。
6)由段表知,不存在第5段,故逻辑地址(5,32)为非法地址。
不发生死锁要求必须保证至少有一个进程可以得到所需的全部资源并执行完毕,当m>
=n(k-1)+1则一定不会发生死锁。
第2章:
Linux操作基础
2-5已知有当前目录有如下文件:
arp,egp,ggp,icmp,idp,ip,ipip,pup,rawip,rip,tcp,udp。
写出以下echo命令的输出。
1)echo*ip显示:
ip,ipip,rawip,rip,
2)echo?
dp显示:
idp,udp,
3)echo[aegi]?
p显示:
arp,egp,ggp,idp
2-8解释下列文件类型和存取权限
1)drwxr-xr-x:
目录文件,属主可打开目录查看内容、可增删目录内容和可进入该目录;
同组及其它用户可进入目录和查看目录内容
2)-rwx—x—x:
普通文件,属主可读写运行,同组用户只能运行
3)crw-rw----:
字符设备,属主和同组用户可读写,不可运行;
其它用户不能操作使用它
2-9用户主目录的访问权限是700,改目录下memo文件的访问权限是777,其它人可以读取这个文件吗?
为什么?
不可以读memo文件,,700意味着其它用户进入不了也打开不了主目录
2-13
cp-i.profile./backup
2-14某文件mafile的权限为-rw-r—r-,增加所有人可执行权限,应使用什么命令?
chmoda+xmafile
2-20已知项目源代码都存放在~/project目录下,后缀名为“.c”或“.h”。
用一个命令统计原代码的行数。
wc-l*.[ch]、或cat./project/*.[ch]|wc–l
第4章:
Linux编程基础
4-2,源文件myproc.c和misc.c,用到数学库函数
1)给出将两个源文件直接编译成可执行文件prog的命令
gcc–
gcc––lmath;
math是用到libmath.so数学库的库名
2)
gcc–cmyproc.c
gcc–c–lmath;
3)将两个目标文件链接生成可执行文件prog的命令
gcc–omyproc.omisc.o
4-3,修改例4.3的程序使之改变文件的属性,(提示curse函数库中的attron()及attroff()函数,查联机手册mancurs_attr)
原文件
#include“”
main()
{charmy_string[]=“Helloworld!
”;
my_print(my_string);
}
voidmy_print(char*);
#include<
stdio.h>
curses.h>
voidmy_print(char*str)
{initscr();
/*进入curses全屏显示模式,清屏幕*/
move(5,15);
/*移动光标到屏幕(5,15)坐标处*/
printw(“%s”,str);
/*向curses屏幕输出字符串*/
refresh();
/*刷新物理屏幕,显示出字符串*/
sleep(5);
/*程序暂停5秒*/
endwin();
/*结束全屏模式,恢复行模式*/
gcc-ohello3hello3.cprint.c-lcurses
改
attron(A_UNDERLINE);
/*加下划线*/
sleep(5);
attroff(A_UNDERLINE);
第9章:
操作系统接口
9-2,什么是作业?
作业和进程有何关系和区别
作业是用户向系统提交事务的基本单位,进程是系统执行任务和调度资源的基本单位。
作业对应一个或几个进程。
作业调度是宏观的,进程调度是微观的。
作业处于运行态时,所对应的一个或几个进程的运行却是断断续续的。
9-12,Shell内部命令与外部命令有何区别?
内部命令是shell的基本命令,有cd等几十个,直接执行无需编译链接。
外部命令是是以代码为基础编译链接而成的可执行文件
第5章:
进程管理
5-5为何有几种运行模式、用户如何访问系统资源
修改系统的关键设置需要特权,故LINUX有核心态特权模式和用户态低权限模式。
用户通过系统调用函数访问系统资源
5-6Linux进程的必备资源有哪些?
运行需要的内存地址空间,及所需的文件及信号等
5-8Linux如何创建进程?
写时复用技术的目的?
利用fork()函数(复制法)创建,提高进程的创建效率
5-11进程调度的功能?
策略?
提高CPU使用效率,总体上加快进程运行。
先进先出法;
短进程优先法;
时间片轮转法;
优先级调度法
5-16临界资源与临界区,进程的互斥与同步
一次仅允许一个进程使用的资源。
是访问临界资源的程序片段。
互斥使进程排他性使用临界资源。
同步是进程间协调运行步骤的方式,如合作处理缓冲区数据
5-20线程与进程区别?
(1)线程是进程内的一个执行实体或执行单元。
(2)进程和线程的区别:
(a)不同进程的地址空间是独立的,而同一进程内的线程共享同一地址空间。
(b)在引入线程的操作系统中,进程是资源分配和调度的单位,线程是处理机调度和分配的单位,资源是分配给进程的,线程只拥有很少资源,因而切换代价比进程切换低。
第6章:
存储管理
6-1存储管理的主要功能
对内存储器进行分配、保护和扩充,把程序使用的逻辑地址映射成内存空间地址
6-2逻辑地址?
物理地址?
为何转换?
逻辑地址:
经编译后的目标程序所用的地址。
目标代码通常采用相对地址的形式,其首地址为0,其余指令中的地址都是相对首地址来编址。
物理地址:
程序在内存占用的实际地址,物理地址的集合称为物理地址空间,它是一个一维的线性空间。
符号地址:
高级语言源程序中由符号代表的地址。
是编译前的代码的存储地址。
因为程序必须装入内存后系统才能运行时,故不能用逻辑地址在内存中读取信息,必须将用户程序中的逻辑地址转换为运行时由机器直接寻址的物理地址,这一过程称为地址映射(地址变换),通过硬件实现。
6-3静态地址变换与动态地址变换区别?
静态地址变换:
程序装入内存前一次性完成地址转换。
特点:
程序在内存中不可移动。
动态地址变换:
在程序执行过程中,由动态地址变换机构实现地址转换(设置一个基地址寄存器--重定位寄存器。
当一个进程被调度运行时,把它所在分区的起始地址装入到该寄存器中;
在程序运行过程中,当需要访问内存单元时,硬件就自动地将其中的相对地址加上基地址寄存器的内容,形成实际的物理地址,然后按该地址去执行)。
程序在内存中可移动、可共享、可不连续存放。
6-6已知页面大小2KB,及某进程页表(页面0/1/2/3分配的页帧号5/10/4/7),求逻辑地址5678对应的物理地址
5678=2048*2+1582,在第2页面,物理地址2048*4+1582=9774
6-7如何实现页存储保护与存储扩充?
保护:
CPU对程序要访问的地址进行检查,若有越界或越权的访问则终止进程的运行。
在地址转换时通过长度和基址寄存器及硬件防止了越界,通过设置进程的访问权限、区分用户与核心态的保护工作模式防止了越权的访问
扩充:
分覆盖、交换与虚拟存储器技术。
覆盖技术:
由用户编程指定程序块间的覆盖关系。
用户看到的是实际大小的内存。
交换技术:
系统将暂时不能运行的进程换出内存,以容纳更多的进程。
用户看到的也是实际大小的内存。
虚拟存储技术:
程序运行中由系统动态地完成内存与外存之间的交换。
用户看到的是一个比实际内存大得多的“虚拟内存”。
6-9Linux的内存管理方案,x86上如何处理分段的?
Linux系统采用请求页式存储管理方案,可提供4GB的虚拟存储空间。
x86平台上的Linux系统采用了二级分页机制:
把所有页表项按1K为单位划分为若干个子表,称为页表(最多1K个)。
另用一个页目录表来记录每一个子表的位置。
页表和页目录表都是1K项长(4KB)。
x86使用段式管理机制,在此基础上启用分页管理机制(CR0寄存器PG位置1)可以运行Linux系统。
实现地址转换的硬件是MMU,将虚拟地址经过段式和页式变换后转换成物理地址:
线性地址=段基址+段内位移。
Linux利用共享0基址段的方式,使x86的段式映射实际不起作用。
于是虚拟地址与线性地址一样,只需页式映射就可以转换成物理地址。
6-10Linux的进程地址空间是什么?
它与物理空间有什么联系?
进程的地址空间是指进程可以使用的全部线性地址的集合,每个Linux进程拥有4G地址空间,内核空间:
最高的1G,供内核代码使用;
所有进程通过执行系统调用内核代码而共享此空间。
用户空间:
较低的3G,供进程代码使用。
是进程的私有空间。
内核空间的代码常驻内存,线性地址高端的1G空间地址,经过页表映射转换成物理地址,处于内存的低端1G空间。
用户的3G空间是进程建立后产生的各种虚存区空间。
其中代码及数据表区段与硬盘的可执行文件对应(即硬盘的映像文件)。
即将运行的虚存区的少量部分通过页表映射被装入内存,系统为进程按需动态调页。
当进程运行过程中发生缺页中断,缺页中断处理程序从磁盘中将所需的页装入物理内存,并更新页表项。
当系统中内存不足时,通过内核交换进程kswapd来实现页面淘汰功能,将其交换到磁盘交换空间中。
6-11Linux的内存分配与回收采用什么算法?
有什么特点?
分配:
伙伴(Buddy)算法:
找到空闲区链表中2^i大小的块。
或从大块中分裂,空闲块可能遇到伙伴再合并。
回收:
也是伙伴算法,过程与分配算法相反,会进行伙伴合并。
Linux的内存回收是主动的。
增加连续内存空间几率,提高运行效率,但可能牺牲内存利用率
第7章:
文件管理
7-1文件?
文件系统与功能?
文件:
具有符号名字的一组相关元素的有序集合。
通常存放在外存中。
文件系统:
包括实施文件管理的软件和被管理的文件。
文件管理软件是内核中的模块,文件按特定的格式存放在磁盘分区中。
功能:
提供文件访问接口,实现文件的“按名存取”。
实施对文件的操作,包括建立、读写、检索、修改、删除等操作;
实现外存空间的管理,包括分配、回收和重组等;
实现对文件的共享、保密和保护措施;
7-5Linux的文件系统采用的逻辑结构与物理结构?
逻辑结构是流式文件,物理结构采用多重索引方式。
7-8在Ext文件系统中,超级块、组描述符、i节点是什么及用途?
超级块:
用来指示文件系统类型标识、数据块大小、总块数和i节点数、空闲块数和i节点数等,超级块记录了文件系统的基本信息。
组描述符:
指示块组中块位图、i节点位图和i节