操作系统常见面试题.docx
- 文档编号:9972117
- 上传时间:2023-02-07
- 格式:DOCX
- 页数:30
- 大小:38.60KB
操作系统常见面试题.docx
《操作系统常见面试题.docx》由会员分享,可在线阅读,更多相关《操作系统常见面试题.docx(30页珍藏版)》请在冰豆网上搜索。
操作系统常见面试题
1、什么是进程(Process)和线程(Thread)?
有何区别?
进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位。
线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。
线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是它可与同属一个进程的其他的线程共享进程所拥有的全部资源。
一个线程可以创建和撤销另一个线程,同一个进程中的多个线程之间可以并发执行。
进程与应用程序的区别在于应用程序作为一个静态文件存储在计算机系统的硬盘等存储空间中,而进程则是处于动态条件下由操作系统维护的系统资源管理实体。
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、说出你所知道的保持进程同步的方法?
进程间同步的主要方法有原子操作、信号量机制、自旋锁、管程、会合、分布式系统等。
12、简术OSI的物理层Layer1,链路层Layer2,网络层Layer3的任务。
网络层:
通过路由选择算法,为报文或分组通过通信子网选择最适当的路径。
链路层:
通过各种控制协议,将有差错的物理信道变为无差错的、能可靠传输数据帧的数据链路。
物理层:
利用传输介质为数据链路层提供物理连接,实现比特流的透明传输。
13、什么是中断?
中断时CPU做什么工作?
中断是指在计算机执行期间,系统内发生任何非寻常的或非预期的急需处理事件,使得CPU暂时中断当前正在执行的程序而转去执行相应的事件处理程序。
待处理完毕后又返回原来被中断处继续执行或调度新的进程执行的过程。
14、你知道操作系统的内容分为几块吗?
什么叫做虚拟内存?
他和主存的关系如何?
内存管理属于操作系统的内容吗?
操作系统的主要组成部分:
进程和线程的管理,存储管理,设备管理,文件管理。
虚拟内存是一些系统页文件,存放在磁盘上,每个系统页文件大小为4K,物理内存也被分页,每个页大小也为4K,这样虚拟页文件和物理内存页就可以对应,实际上虚拟内存就是用于物理内存的临时存放的磁盘空间。
页文件就是内存页,物理内存中每页叫物理页,磁盘上的页文件叫虚拟页,物理页+虚拟页就是系统所有使用的页文件的总和。
15、线程是否具有相同的堆栈?
dll是否有独立的堆栈?
每个线程有自己的堆栈。
dll是否有独立的堆栈?
这个问题不好回答,或者说这个问题本身是否有问题。
因为dll中的代码是被某些线程所执行,只有线程拥有堆栈。
如果dll中的代码是exe中的线程所调用,那么这个时候是不是说这个dll没有独立的堆栈?
如果dll中的代码是由dll自己创建的线程所执行,那么是不是说dll有独立的堆栈?
以上讲的是堆栈,如果对于堆来说,每个dll有自己的堆,所以如果是从dll中动态分配的内存,最好是从dll中删除;如果你从dll中分配内存,然后在exe中,或者另外一个dll中删除,很有可能导致程序崩溃。
16、什么是缓冲区溢出?
有什么危害?
其原因是什么?
缓冲区溢出是指当计算机向缓冲区内填充数据时超过了缓冲区本身的容量,溢出的数据覆盖在合法数据上。
危害:
在当前网络与分布式系统安全中,被广泛利用的50%以上都是缓冲区溢出,其中最著名的例子是1988年利用fingerd漏洞的蠕虫。
而缓冲区溢出中,最为危险的是堆栈溢出,因为入侵者可以利用堆栈溢出,在函数返回时改变返回程序的地址,让其跳转到任意地址,带来的危害一种是程序崩溃导致拒绝服务,另外一种就是跳转并且执行一段恶意代码,比如得到shell,然后为所欲为。
通过往程序的缓冲区写超出其长度的内容,造成缓冲区的溢出,从而破坏程序的堆栈,使程序转而执行其它指令,以达到攻击的目的。
造成缓冲区溢出的主原因是程序中没有仔细检查用户输入的参数。
17、什么是死锁?
其条件是什么?
怎样避免死锁?
死锁的概念:
在两个或多个并发进程中,如果每个进程持有某种资源而又都等待别的进程释放它或它们现在保持着的资源,在未改变这种状态之前都不能向前推进,称这一组进程产生了死锁。
通俗地讲,就是两个或多个进程被无限期地阻塞、相互等待的一种状态。
死锁产生的原因主要是:
?
系统资源不足;?
进程推进顺序非法。
产生死锁的必要条件:
(1)互斥(mutualexclusion),一个资源每次只能被一个进程使用;
(2)不可抢占(nopreemption),进程已获得的资源,在未使用完之前,不能强行剥夺;
(3)占有并等待(holdandwait),一个进程因请求资源而阻塞时,对已获得的资源保持不放;
(4)环形等待(circularwait),若干进程之间形成一种首尾相接的循环等待资源关系。
这四个条件是死锁的必要条件,只要系统发生死锁,这些条件必然成立,而只要上述条件之一不满足,就不会发生死锁。
死锁的解除与预防:
理解了死锁的原因,尤其是产生死锁的四个必要条件,就可以最大可能地避免、预防和解除死锁。
所以,在系统设计、进程调度等方面注意如何不让这四个必要条件成立,如何确定资源的合理分配算法,避免进程永久占据系统资源。
此外,也要防止进程在处于等待状态的情况下占用资源。
因此,对资源的分配要给予合理的规划。
死锁的处理策略:
鸵鸟策略、预防策略、避免策略、检测与恢复策略。
1、程序和进程
进程由两个部分组成:
1)操作系统用来管理进程的内核对象。
内核对象也是系统用来存放关于进程的统计信息的地方。
2)地址空间。
它包含所有可执行模块或DLL模块的代码和数据。
它还包含动态内存分配的空间。
如线程堆栈和堆分配空间。
定义
使用系统运行资源情况
程序
计算机指令的集合,它以文件的形式存储在磁盘上。
程序是静态实体(passiveEntity),在多道程序系统中,它是不能独立运行的,更不能与其他程序并发执行。
不使用【程序不能申请系统资源,不能被系统调度,也不能作为独立运行的单位,因此,它不占用系统的运行资源】。
进程
通常被定义为一个正在运行的程序的实例,是一个程序在其自身的地址空间中的一次执行活动。
定义:
进程是进程实体(包括:
程序段、相关的数据段、进程控制块PCB)的运行过程,是系统进行资源分配和调度的一个独立单位。
使用【进程是资源申请、调度和独立运行的单位,因此,它使用系统中的运行资源。
】
2、进程与线程
如果说操作系统引入进程的目的是为了提高程序并发执行,以提高资源利用率和系统吞吐量。
那么操作系统中引入线程的目的,则是为了减少进程并发执行过程中所付出的时空开销,使操作系统能很好的并发执行。
进程process定义了一个执行环境,包括它自己私有的地址空间、一个句柄表,以及一个安全环境;线程则是一个控制流,有他自己的调用栈callstack,记录了它的执行历史。
线程由两个部分组成:
1)线程的内核对象,操作系统用它来对线程实施管理。
内核对象也是系统用来存放线程统计信息的地方。
2)线程堆栈,它用于维护线程在执行代码时需要的所有参数和局部变量。
当创建线程时,系统创建一个线程内核对象。
该线程内核对象不是线程本身,而是操作系统用来管理线程的较小的数据结构。
可以将线程内核对象视为由关于线程的统计信息组成的一个小型数据结构。
进程与线程的比较如下:
比较
进程
线程
活泼性
不活泼(只是线程的容器)
活泼
地址空间
系统赋予的独立的虚拟地址空间(对于32位进程来说,这个地址空间是4GB)
在进程的地址空间执行代码。
线程只有一个内核对象和一个堆栈,保留的记录很少,因此所需要的内存也很少。
因为线程需要的开销比进程少
调度
仅是资源分配的基本单位
独立调度、分派的基本单位
并发性
仅进程间并发(传统OS)
进程间、线程间并发
拥有资源
资源拥有的基本单位
基本上不拥有资源
系统开销
创建、撤销、切换开销大
仅保存少量寄存器内容,开销小。
3、进程同步
进程同步的主要任务:
是对多个相关进程在执行次序上进行协调,以使并发执行的诸进程之间能有效地共享资源和相互合作,从而使程序的执行具有可再现性。
同步机制遵循的原则:
(1)空闲让进;
(2)忙则等待(保证对临界区的互斥访问);
(3)有限等待(有限代表有限的时间,避免死等);
(4)让权等待,(当进程不能进入自己的临界区时,应该释放处理机,以免陷入忙等状态)。
4、进程间的通信是如何实现的?
进程通信,是指进程之间的信息交换(信息量少则一个状态或数值,多者则是成千上万个字节)。
因此,对于用信号量进行的进程间的互斥和同步,由于其所交换的信息量少而被归结为低级通信。
所谓高级进程通信指:
用户可以利用操作系统所提供的一组通信命令传送大量数据的一种通信方式。
操作系统隐藏了进程通信的实现细节。
或者说,通信过程对用户是透明的。
高级通信机制可归结为三大类:
(1)共享存储器系统(存储器中划分的共享存储区);实际操作中对应的是“剪贴板”(剪贴板实际上是系统维护管理的一块内存区域)的通信方式,比如举例如下:
word进程按下ctrl+c,在ppt进程按下ctrl+v,即完成了word进程和ppt进程之间的通信,复制时将数据放入到剪贴板,粘贴时从剪贴板中取出数据,然后显示在ppt窗口上。
(2)消息传递系统(进程间的数据交换以消息(message)为单位,当今最流行的微内核操作系统中,微内核与服务器之间的通信,无一例外地都采用了消息传递机制。
应用举例:
邮槽(MailSlot)是基于广播通信体系设计出来的,它采用无连接的不可靠的数据传输。
邮槽是一种单向通信机制,创建邮槽的服务器进程读取数据,打开邮槽的客户机进程写入数据。
(3)管道通信系统(管道即:
连接读写进程以实现他们之间通信的共享文件(pipe文件,类似先进先出的队列,由一个进程写,另一进程读))。
实际操作中,管道分为:
匿名管道、命名管道。
匿名管道是一个未命名的、单向管道,通过父进程和一个子进程之间传输数据。
匿名管道只能实现本地机器上两个进程之间的通信,而不能实现跨网络的通信。
命名管道不仅可以在本机上实现两个进程间的通信,还可以跨网络实现两个进程间的通信。
同一机器两个进程间通信
跨网络通信
剪贴板Clipboard
可以
不可以
匿名管道Pipe
可以
不可以
命名管道(点对点单一通信,数据量可较大)Namedpipe
可以
可以
邮槽(一对多,数据量较小,424字节以下)Mailslot
可以
可以
5、线程同步
根据用户模式及内核模式下的同步方式的不同,分类及对比如下:
内核对象/
非内核对象
含义
缺点
适用
关键代码段(临界区)CriticalSection
非内核对象,工作在用户方式下,为用户模式对象
从程序代码的角度来控制线程的并发性
1.因为在等待进入关键代码段时无法设定超时值,所以其很容易进入死锁状态。
2.不能跨进程使用。
单个进程中线程间的同步(同步速度快)
事件对象Event
内核对象
所有内核对象中最基本的。
速度较慢(相比用户模式实现线程同步)
多个进程间的各个线程间实现同步
互斥对象Mutex
内核对象
代表对一个资源的独占式访问
信号量
Semaphore
内核对象
使用计数器来控制程序对一个共享资源的访问
由于进程同步产生了一系列经典的同步问题“生产者-消费者”问题,“哲学家进餐”问题,“读者-写者”问题。
1、使用多进程与多线程有什么区别?
用多进程时,每个进程有自己的地址空间,线程则共享地址空间。
所有其他区别都由此而来:
*速度:
线程产生的速度快,线程间的通信、切换快等,因为他们在同一个地址空间内。
*资源利用率:
线程的资源利用率比较好,也是因为它们在同一个地址空间中
*同步问题:
线程使用公共变量/内存时,需要使用同步机制,还是因为他们在同一个地址空间内。
2、在Windows编程中互斥器(mutex)的作用和临界区(criticalsection)类似,请说一下二者区别。
mutex可以用于进程之间互斥,criticalsection是线程之间的互斥。
3、垃圾回收的优点和原理是什么?
java语言中一个显著的特点就是引入了垃圾回收机制,使C++程序员最头疼的内存管理问题迎刃而解,而Java程序员不再需要考虑内存管理。
垃圾回收可以有效防止内存泄露。
4、CPU中的缓存和OS中的缓存分别是什么?
*块表——Cache在OS中运用的典型范例。
小结:
快表是联想寄存器访问速度比内存快,不用快表要两次访问内存;用了快表只需要一次访问内存。
在OS中,为提高系统的存取速度,在地址映射机制中增加一个小容量的联想寄存器,即块表。
用来存放当前访问最频繁的少数活动页面的页号。
先访问快表中是否有需要的逻辑页号,加上页内地址得到物理地址。
如果快表中没有才访问内存中的页表这样两次访问内存。
*高速缓冲存储器:
Cache在CPU中运用的典型范例。
引入原因:
内存的存取速度跟不上CPU的执行速度
它的容量比内存小,但是交换速度快!
Cache对CPU的性能影响很大。
5、DOS与WindowsNT的权限区别是什么?
DOS是个单任务、单用户的操作系统。
打开装有DOS操作系统的计算机时,就拥有了该操作系统的管理员权限,且该权限无处不在。
所以只能说,DOS不支持权限的设置。
在WindowsNT里,用户被分成许多组,组和组之间有不同的权限。
当然一个组的用户和用户之间也可以有不同的权限。
NT中常见的用户组:
Administrators管理员组、Users普通用户组、Guests来宾组、Everyone计算机上所有用户
第一章引言
1.什么是计算机系统?
它由哪几部分组成?
计算机系统是按用户的要求接收和存储信息,自动进行数据处理并输出结果信息的系统。
计算机系统由硬件系统和软件系统组成。
硬件系统是计算机系统赖以工作的实体,软件系统保证计算机系统按用户指定的要求协调地工作。
2.计算机系统的资源包括哪些?
计算机系统的资源包括两大类:
硬件资源和软件资源。
硬件资源主要有中央处理器、主存储器、辅助存储器和各种输入输出设备。
软件资源有编译程序、编辑程序等各种程序以及有关数据。
3简述操作系统的定义。
操作系统是计算机系统的一种系统软件,它统一管理计算机系统的资源和控制程序的执行。
4.为计算机设计操作系统要达到什么目的?
设计时应考虑哪些目标?
操作系统是一种系统程序,其目的是为其他程序的执行提供一个良好的环境。
它有两个主要设计目标:
一是使计算机系统使用方便,二是使计算机系统能高效地工作。
5.从操作系统提供的服务出发,操作系统可分哪几类?
从操作系统提供的服务出发,操作系统可分为:
批处理操作系统、分时操作系统、实时操作系统、网络操作系统和分布式操作系统。
6.何谓批处理操作系统?
用户准备好要执行的程序、数据和控制作业执行的说明书,由操作员输入到计算机系统中等待处理,操作系统选择作业并按其作业说明书的要求自动控制作业的执行。
采用这种批量化处理作业的操作系统称为批处理操作系统。
7.为什么说批处理多道系统能极大地提高计算机系统的工作效率?
批处理多道系统能极大地提高系统的工作效率,表现在四个方面:
(1)多道作业并行工作,减少了处理器的空闲时间;
(2)作业调度可以合理选择装入主存储器中的作业,充分利用计算机系统的资源;(3)作业执行过程中不再访问低速设备,而直接访问高速的磁盘设备,缩短执行时间;(4)作业成批输入,减少了从操作到作业的交接时间。
8.分时系统如何使各终端用户感到好像自己独占一台计算机?
在分时系统中、系统把CPU时间划分成许多时间片,每个终端每次可以使用由一个时间片规定的cPu时间,多个终端用户就这样轮流地使用cPU,每人都得到了及时响应,感到好像自己独占了一台计算机。
9.网络操作系统有何主要功能?
网络操作系统把计算机网络中的各台计算机有机地联合起来,实现各计算机之间的通信及网络中各种资源的共享。
10.简述操作系统的五大功能。
从资源管理的观点出发,操作系统具有五大功能:
(1)处理器管理。
为用户合理分配处理器时间,提高处理器工作效率。
(2)存储管理。
为用户分配主存空间,保护主存中的程序和数据不被破坏,提高主存空间的利用率。
(3)文件管理。
管理用户信息,为用户提供按文件名存取功能,合理分配文件的存储空间。
(4)设备管现。
负责设备约分配、启动以及虚拟设备的实现等.(5)作业管理。
实现作业调度和控制。
第二章计算机系统结构
1.简述计算机系统的层次结构。
计算机的层次结构的最内层是硬件系统,最外层是使用计算机系统的人,人与硬件系统之间是软件系统。
软件系统包括系统软件、支援软件和应用软件。
2.简述操作系统是如何工作的?
当计算机启动后,引导程序将操作系统核心程序装入主存,如果没有用户请求操作系统服务,它就等待某个事件的发生。
当有某个事件出现,操作系统的服务程序就对它进行处理,处理结束后,再等待下一个事件发生。
3.在多道程序设计技术的系统中、操作系统怎样才会占领中央处理器?
只有当中断装置发现有事件发生时,它才会中断当前占用中央处理器的程序执行,让操作系统的处理服务程序占用中央处理器并执行之。
4.简述计算机系统的中断机制及其作用。
中断机制包括硬件的中断装置和操作系统的中断处理服务程序。
中断装置由一些特定的寄存器和控制线路组成,中央处理器和外围设备等识别到的事件保存在特定的寄存器中,中央处理器每执行完一条指令,均由中断装置判别是否有事件发生。
若无事件发生,cPu继续执行;若有事件发生,则中断装置中断原占有cPu的程序的执行,让操作系统的处理事件服务程序占用cPu,对出现和事件进行处理,事件处理完后,再让原来的程序继续占用CPu执行。
5.计算机系统为什么要配置辅助存储器?
由于主存储器容量的限制,不足以存储所有需要存储的程序和数据,并且主存储器不是一种永久性的存储设备,当电源被切断时主存储器中的信息就会消失;而辅助存储器容量大且能永久地保存信息,所以计算机系统都配置辅助存储器。
6.怎样的输入输出结构才能使cPu与外设并行工作?
这种结构为:
把各种外围设备连接在相应的控制器上,这些设备控制器又通过通道连接在公共的系统总线上。
7.对特权指令的使用有什么限制?
只允许操作系统使用特权指令,用户程序不能使用特权指令。
8.cPu在管态和目态下工作有何不同?
当中央处理器处于管态时,可以执行包括特权指令在内的一切机器指令,而在目态下工作时不允许执行持权指令。
9.计算机系统怎样实现存储保护?
一般硬件设置了基址寄存器和限长寄存器。
中央处理器在目态下执行系统时,对每个访问主存的地址都进行核对,若能满足:
基址寄存器值≤访问地址≤基址寄存器值+限长寄存值,则允许访问;否则不允许访问。
并
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 操作系统 常见 试题