操作系统面试题Word下载.docx
《操作系统面试题Word下载.docx》由会员分享,可在线阅读,更多相关《操作系统面试题Word下载.docx(10页珍藏版)》请在冰豆网上搜索。
?
系统资源不足;
进程推进顺序非法。
产生死锁的必要条件:
(1)互斥(mutualexclusion),一个资源每次只能被一个进程使用;
(2)不可抢占(nopreemption),进程已获得的资源,在未使用完之前,不能强行剥夺;
(3)占有并等待(holdandwait),一个进程因请求资源而阻塞时,对已获得的资源保持不放;
(4)环形等待(circularwait),若干进程之间形成一种首尾相接的循环等待资源关系。
这四个条件是死锁的必要条件,只要系统发生死锁,这些条件必然成立,而只要上述条件之一不满足,就不会发生死锁。
死锁的解除与预防:
理解了死锁的原因,尤其是产生死锁的四个必要条件,就可以最大可能地避免、预防和解除死锁。
所以,在系统设计、进程调度等方面注意如何不让这四个必要条件成立,如何确定资源的合理分配算法,避免进程永久占据系统资源。
此外,也要防止进程在处于等待状态的情况下占用资源。
因此,对资源的分配要给予合理的规划。
死锁的处理策略:
鸵鸟策略、预防策略、避免策略、检测与恢复策略。
3、Windows存管理方式:
段存储、页存储、段页存储
4、进程的几种状态?
(1)run(运行状态):
正在运行的进程或在等待队列中对待的进程,等待的进程只要以得到cpu就可以运行
(2)Sleep(可中断休眠状态):
相当于阻塞或在等待的状态
(3)D(不可中断休眠状态):
在磁盘上的进程
(4)T(停止状态):
这中状态无法直观的看见,因为是进程停止后就释放了资源,所以不会留在linux中
(5)Z(僵尸状态):
子进程先与父进程结束,但父进程没有调用wait或waitpid来回收子进程的资源,所以子进程就成了僵尸进程,如果父进程结束后任然没有回收子进程的资源,那么1号进程将回收
5、IPC通信方式?
(1)管道(匿名管道(pipe亲缘关系的进程通信)、命名管道(mkfifo/mknod))
(2)消息队列:
是基于消息的、用无亲缘关系的进程间通信,主要函数:
msgget、msgsend、msgrecv、msgctl
(3)信号量:
相当于一把互斥锁,通过p、v操作,主要函数:
semget、semop、semctl
(4)共享存:
是进程间通信速度最快的,所以用经常是集合信号量或互斥锁来实现同步,shmget、shmat、shmdt、shmctl
6、什么是虚拟存?
是将进程部分装入存中,从而能实现一个很大的程序能在一个比它小的存中运行,它的主要实现是靠程序的换进换出来实现的,因为存中0~3G是用户使用,3~4G才是存使用,通过映射来实现来进行逻辑地址到物理地址的映射
7、虚拟地址、逻辑地址、线性地址、物理地址的区别?
分段机制把一个逻辑地址转换为线性地址;
接着,分页机制把一个线性地址转换为物理地址。
(1)虚拟地址:
虚拟存映射出来的地址
(2)逻辑地址:
程序的段加偏移量形成的,C/C++程序中取地址求出来的地址就是逻辑地址
(3)线性地址:
是逻辑地址到物理地址的中间层,只有启动分页机制的时候才有线性地址,如果没有分页机制,那么线性地址就是物理地址
(4)物理地址:
是存中实实在在存在的硬件地址,
逻辑地址(启动分段)--》线性地址(启动分页)--》物理地址
2、Windows下的存是如何管理的?
Windows提供了3种方法来进行存管理:
虚拟存,最适合用来管理大型对象或者结构数组;
存映射文件,最适合用来管理大型数据流(通常来自文件)以及在单个计算机上运行多个进程之间共享数据;
存堆栈,最适合用来管理大量的小对象。
Windows操纵存可以分两个层面:
物理存和虚拟存。
其中物理存由系统管理,不允许应用程序直接访问,应用程序可见的只有一个2G地址空间,而存分配是通过堆进行的。
对于每个进程都有自己的默认堆,当一个堆创建后,就通过虚拟存操作保留了相应大小的地址块(不占有实际的存,系统消耗很小)。
当在堆上分配一块存时,系统在堆的地址表里找到一个空闲块(如果找不到,且堆创建属性是可扩充的,则扩充堆大小),为这个空闲块所包含的所有存页提交物理对象(在物理存上或硬盘的交换文件上),这时就可以访问这部分地址。
提交时,系统将对所有进程的存统一调配,如果物理存不够,系统试图把一部分进程暂时不访问的页放入交换文件,以腾出部分物理存。
释放存时,只在堆中将所在的页解除提交(相应的物理对象被解除),继续保留地址空间。
如果要知道某个地址是否被占用/可不可以访问,只要查询此地址的虚拟存状态即可。
如果是提交,则可以访问。
如果仅仅保留,或没保留,则产生一个软件异常。
此外,有些存页可以设置各种属性。
如果是只读,向存写也会产生软件异常。
3、Windows消息调度机制是?
A)指令队列;
B)指令堆栈;
C)消息队列;
D)消息堆栈
答案:
C
处理消息队列的顺序。
首先Windows绝对不是按队列先进先出的次序来处理的,而是有一定优先级的。
优先级通过消息队列的状态标志来实现的。
首先,最高优先级的是别的线程发过来的消息(通过sendmessage);
其次,处理登记消息队列消息;
再次处理QS_QUIT标志,处理虚拟输入队列,处理wm_paint;
最后是wm_timer。
4、描述实时系统的基本特性
在特定时间完成特定的任务,实时性与可靠性。
所谓“实时操作系统”,实际上是指操作系统工作时,其各种资源可以根据需要随时进行动态分配。
由于各种资源可以进行动态分配,因此,其处理事务的能力较强、速度较快。
5、中断和轮询的特点
对I/O设备的程序轮询的方式,是早期的计算机系统对I/O设备的一种管理方式。
它定时对各种设备轮流询问一遍有无处理要求。
轮流询问之后,有要求的,则加以处理。
在处理I/O设备的要求之后,处理机返回继续工作。
尽管轮询需要时间,但轮询要比I/O设备的速度要快得多,所以一般不会发生不能及时处理的问题。
当然,再快的处理机,能处理的输入输出设备的数量也是有一定限度的。
而且,程序轮询毕竟占据了CPU相当一部分处理时间,因此,程序轮询是一种效率较低的方式,在现代计算机系统中已很少应用。
程序中断通常简称中断,是指CPU在正常运行程序的过程中,由于预先安排或发生了各种随机的部或外部事件,使CPU中断正在运行的程序,而转到为响应的服务程序去处理。
轮询——效率低,等待时间很长,CPU利用率不高。
中断——容易遗漏一些问题,CPU利用率高。
6、什么是临界区?
如何解决冲突?
每个进程中访问临界资源的那段程序称为临界区,每次只准许一个进程进入临界区,进入后不允许其他进程进入。
(1)如果有若干进程要求进入空闲的临界区,一次仅允许一个进程进入;
(2)任何时候,处于临界区的进程不可多于一个。
如已有进程进入自己的临界区,则其它所有试图进入临界区的进程必须等待;
(3)进入临界区的进程要在有限时间退出,以便其它进程能及时进入自己的临界区;
(4)如果进程不能进入自己的临界区,则应让出CPU,避免进程出现“忙等”现象。
7、说说分段和分页
页是信息的物理单位,分页是为实现离散分配方式,以消减存的外零头,提高存的利用率;
或者说,分页仅仅是由于系统管理的需要,而不是用户的需要。
段是信息的逻辑单位,它含有一组其意义相对完整的信息。
分段的目的是为了能更好的满足用户的需要。
页的大小固定且由系统确定,把逻辑地址划分为页号和页地址两部分,是由机器硬件实现的,因而一个系统只能有一种大小的页面。
段的长度却不固定,决定于用户所编写的程序,通常由编辑程序在对源程序进行编辑时,根据信息的性质来划分。
分页的作业地址空间是一维的,即单一的线性空间,程序员只须利用一个记忆符,即可表示一地址。
分段的作业地址空间是二维的,程序员在标识一个地址时,既需给出段名,又需给出段地址。
8、说出你所知道的保持进程同步的方法?
进程间同步的主要方法有原子操作、信号量机制、自旋锁、管程、会合、分布式系统等。
9、Linux中常用到的命令
显示文件目录命令ls
如ls
改变当前目录命令cd
如cd/home
建立子目录mkdir
如mkdirxiong
删除子目录命令rmdir
如rmdir/mnt/cdrom
删除文件命令rm
如rm/ucdos.bat
文件复制命令cp
如cp/ucdos/fox
获取帮助信息命令man
如manls
显示文件的容less
如lessmwm.lx
重定向与管道type
如typereadme>
>
direct,将文件readme的容追加到文direct中
10、Linux文件属性有哪些?
(共十位)
-rw-r--r--那个是权限符号,总共是----------这几个位。
第一个短横处是文件类型识别符:
-表示普通文件;
c表示字符设备(character);
b表示块设备(block);
d表示目录(directory);
l表示文件(link);
后面第一个三个连续的短横是用户权限位(User),第二个三个连续短横是组权限位(Group),第三个三个连续短横是其他权限位(Other)。
每个权限位有三个权限,r(读权限),w(写权限),x(执行权限)。
如果每个权限位都有权限存在,那么满权限的情况就是:
-rwxrwxrwx;
权限为空的情况就是----------。
权限的设定可以用chmod命令,其格式位:
chmodugoa+/-/=rwxfilename/directory。
例如:
一个文件aaa具有完全空的权限----------。
chmodu+rwaaa(给用户权限位设置读写权限,其权限表示为:
-rw-------)
chmodg+raaa(给组设置权限为可读,其权限表示为:
----r-----)
chmodugo+rwaaa(给用户,组,其它用户或组设置权限为读写,权限表示为:
-rw-rw-r