您的位置:首页 > 职场人生

操作系统笔试面试题

2012-09-19 11:08 239 查看
1 系统调用与过程(函数)调用的区别

程序中执行系统调用或过程(函数)调用,虽然都是对某种功能或服务的需求,但两者从调用形式到具体实现都有很大区别。
(1) 调用形式不同。过程(函数)使用一般调用指令,其转向地址是固定不变的,包含在跳转语句中;但系统调用中不包含处理程序入口,而仅仅提供功能号,按功能号调用。
(2) 被调用代码的位置不同。过程(函数)调用是一种静态调用,调用者和被调用代码在同一程序内,经过连接编辑后作为目标代码的一部份。当过程(函数)升级或修改时,必须重新编译连结。而系统调用是一种动态调用,系统调用的处理代码在调用程序之外(在操作系统中),这样一来,系统调用处理代码升级或修改时,与调用程序无关。而且,调用程序的长度也大大缩短,减少了调用程序占用的存储空间。
(3) 提供方式不同。过程(函数)往往由编译系统提供,不同编译系统提供的过程(函数)可以不同;系统调用由操作系统提供,一旦操作系统设计好,系统调用的功能、种类与数量便固定不变了。
(4) 调用的实现不同。程序使用一般机器指令(跳转指令)来调用过程(函数),是在用户态运行的;程序执行系统调用,是通过中断机构来实现,需要从用户态转变到核心态,在管理状态执行,因此,安全性好。

2 进程

进程是一个可并发执行的具有独立功能的程序关于某个数据集合的一次执行过程,也是操作系统进行资源分配和保护的基本单位。每个进程至少有三要素组成:程序块、数据块和进程控制块。一般来说,按进程在执行过程中的不同情况至少要定义三种不同的进程状态:
运行(running)态:进程占有处理器正在运行。
就绪(ready)态:进程具备运行条件,等待系统分配处理器以便运行。
等待(wait)态:又称为阻塞(blocked)态或睡眠(sleep)态,指进程不具备运行条件,正在等待某个事件的完成。

运行态—→等待态:等待使用资源或某事件发生,如等待外设传输;等待人工干预。
等待态—→就绪态:资源得到满足或某事件己经发生,如外设传输结束;人工干预完成。
运行态—→就绪态:运行时间片到,或出现有更高优先权进程。
就绪态—→运行态:CPU 空闲时被调度选中一个就绪进程执行。

Linux 的进程状态共有6 种:
TASK_RUNNING:正在运行(己获得CPU)或准备运行(等待获得CPU)的进程,由current 指针指向当前运行的进程。
TASK_INTERRUPTIBLE:处于等待队列中的进程,一旦资源可用时被唤醒,也可以由其他进程通过信号(SIGNAL)或定时中断唤醒(阻塞型等待)。
TASK_UNINTERRUPTIBLE:处于等待队列中的进程,一旦资源可用时被唤醒,不可以由其他进程通过信号(SIGNAL)或定时中断唤醒(直接或间接等待硬件状态)。
TASK_ZOMBIE:进程运行结束但是尚未消亡时处于的状态。
TASK_STOPPED:进程被暂停,正在等待其他进程发出的唤醒信号。
TASK_SWAPPING:页面被交换出内存的进程。

/article/1448981.html

每一个进程都有一个也只有一个进程控制块PCB(Process Control Block),进程控制块是操作系统用于记录和刻画进程状态及有关信息的数据结构,也是操作系统掌握进程的唯一资料结构,是操作系统控制和管理进程的主要依据。进程控制块包含三类信息:

(1) 标识信息。常用的标识信息包括进程标识符、父进程的标识符、用户进程名、用户组名等。

(2) 现场信息。常用的现场信息包括:通用寄存器的内容、控制寄存器(如PSW 寄存器)的内容、用户堆栈指针、系统堆栈指针等。

(3) 控制信息。常用的控制信息包括:1)进程调度相关信息,如进程状态、等待事件和等待原因、进程优先级、队列指引元等;2)进程组成信息,如正文段指针、数据段指针;3)进程间通信信息,如消息队列指针、信号量等互斥和同步机制;4)进程在辅存储器内的地址;5)CPU资源的占用和使用信息,如时间片余量、进程己占用CPU 的时间、进程己执
行的时间总和,记账信息;6)进程特权信息,如在内存访问权限和处理器状态方面的特权;7)资源清单,包括进程所需全部资源、已经分得的资源,如主存资源、I/O 设备、打开文件表等。

3 原语和系统调用

原语(Primitive)是在管态下执行、完成系统特定功能的过程。原语和机器指令类似,其特点是执行过程中不允许被中断,是一个不可分割的基本单位,原语的执行是顺序的而不可能是并发的。系统对进程的控制如不使用原语,就会造成其状态的不确定性,从而,达不到进程控制的目的。

原语和系统调用都使用访管指令实现,具有相同的调用形式;但原语由内核来实现,而系统调用由系统进程或系统服务器实现;原语不可中断,而系统调用执行时允许被中断,甚至有些操作系统中系统进程或系统服务器干脆在用户态运行;通常情况下,原语提供给系统进程或系统服务器使用(反之决不会形成调用关系),系统进程或系统服务器提供系统调用给系统程序(和用户)使用,而系统程序提供高层功能给用户使用,例如,语言编译程序提供语句供用户解决应用问题.

4 进程的控制

包括:创建进程、阻塞进程、唤醒进程、挂起进程、激活进程、终止进程和撤销进程等。这些控制和管理功能是由操作系统中的原语来实现的。

5 多进程程序的缺点

(1) 进程时空的开销大,频繁的进程调度将耗费大量处理器时间,要为每个进程分配存储空间限制了操作系统中进程的总数。
(2) 进程通信的代价大,每次通信均要涉及通信进程之间或通信进程与操作系统之间的信息传递。
(3) 进程之间的并发性粒度较粗,并发度不高,过多的进程切换和通信延迟使得细粒度的并发得不偿失。
(4) 不适合并行计算和分布并行计算的要求,对于多处理器和分布式的计算环境来说,进程之间大量频繁的通信和切换,会大大降低并行度。
(5) 不适合客户/服务器计算的要求。对于C/S 结构来说,那些需要频繁输入输出并同时大量计算的服务器进程(如数据库服务器、事务监督程序)很难体现效率。

6 多线程

线程具有:
(1) 线程执行状态(运行、就绪、等待、…);
(2) 当线程不运行时,有一个受保护的线程上下文,用于存储现场信息。所以,观察线程的一种方式是运行在进程内一个独立的程序计数器;
(3) 一个执行堆栈;

(4) 一个容纳局部变量的主存存储区。

多线程程序的优点

(1) 快速线程切换。进程具有独立的虚地址空间,以进程为单位进行任务调度,系统必须交换地址空间,切换时间长,而在同一进程中的多线程共享同一地址空间,因而,能使线程快速切换。
(2) 减少(系统)管理开销。对多个进程的管理(创建、调度、终止等)系统开销大,如响应客户请求建立一个新的服务进程的服务器应用中,创建的开销比较显著。面对创建、终止线程,虽也有系统开销,但要比进程小得多。Mach开发者的研究表明,与没有使用线程的UNIX 相比,进程创建的速度提高了10 倍。
(3)(线程)通信易于实现。为了实现协作,进程或线程间需要交换数据。对于自动共享同一地址空间的各线程来说,所有全局数据均可自由访问,不需什么特殊设施就能实现数据共享。而进程通信则相当复杂,必须借助诸如通信机制、消息缓冲、管道机制等设施,而且还要调用内核功能才能实现,同时线程通信的效率也很高。
(4) 并发程度提高。许多多任务操作系统限制用户能拥有的最多进程数目,如早期UNIX 一般为50 个,这对许多并发应用来说是不够的。而对多线程技术来说,一般可达几千个,基本上不存在线程数目的限制。
(5) 节省内存空间。多线程合用进程地址空间,而不同进程独占地址空间,使用不经济。
(6) 由于队列管理和处理器调度是以线程为单位的,因此,多数涉及执行的状态信息被维护在线程数据结构中。然而,存在一些影响到一个进程中所有线程的活动,操作系统必须在进程级进行管理。挂起意味着将主存中的地址空间对换到磁盘上,因为,在一个进程中的所有线程共享同一地址空间,此时,所有线程也必须进入挂起状态。相似地,终止一个进程时,所有线程应被终止。

7 进程同步

指两个以上进程基于某个条件来协调它们的活动。一个进程的执行依赖于另一个协作进程的消息或信号,当一个进程没有得到来自于另一个进程的消息或信号时则需等待,直到消息或信号到达才被唤醒。

在操作系统中,信号量用以表示物理资源的实体,它是一个与队列有关的整型变量。实现时,信号量是一种变量类型,常常用一个记录型数据结构表示,它有两个分量:一个是信号量的值,另一个是信号量队列的队列指针。除赋初值外,信号量仅能由同步原语对其进行操作,没有任何其他方法可以检查和操作信号量。

P(s):当信号量s 大于0 时,把信号量s 减去l,否则调用P(s)的进程等待直到信号量s 大于0 时。
V(s):把信号量s 加1。

8 死锁的条件和处理策略

http://blog.163.com/wupengzhi2005@126/blog/static/17101002200911705842855/

死锁就是一个进程集合里面的每个进程都在等待只能由这个集合中的其他进程(包括他自身)才能引发的事件,这种情况就是死锁。这里的引发事件一般指的是释放相应的资源。

资源包括了软的资源(代码块)和硬的资源(例如扫描仪)。资源一般可以分两种:可剥夺资源(Preemptable)和不可剥夺资源(Nonpreemptable)。一般来说对于由可剥夺资源引起的死锁可以由系统的重新分配资源来解决,所以一般来说大家说的死锁都是由于不可剥夺资源所引起的。

死锁的四个必要条件

互斥条件(Mutual exclusion):资源不能被共享,只能由一个进程使用。
请求与保持条件(Hold and wait):已经得到资源的进程可以再次申请新的资源。
非剥夺条件(No pre-emption):已经分配的资源不能从相应的进程中被强制地剥夺。
循环等待条件(Circular wait):系统中若干进程组成环路,改环路中每个进程都在等待相邻进程正占用的资源。

处理死锁的策略

1.忽略该问题。例如鸵鸟算法,该算法可以应用在极少发生死锁的的情况下。为什么叫鸵鸟算法呢,因为传说中鸵鸟看到危险就把头埋在地底下,可能鸵鸟觉得看不到危险也就没危险了吧。跟掩耳盗铃有点像。
2.检测死锁并且恢复。
3.仔细地对资源进行动态分配,以避免死锁。
4.通过破除死锁四个必要条件之一,来防止死锁产生。

.基本知识点:

http://www.mianwww.com/html/2011/11/11917.html
1) 操作系统是控制和管理计算机软硬件资源,以尽量合理有效的方法组织多个用户共享多种资源的程序集合。
2) 操作系统的基本功能:(1)处理机管理。主要功能包括进程控制、进程调度、进程同步和进程通信。(2)存储器管理。主要功能包括内存分配、地址映射、内存保护和内存扩充。(3)设备管,也叫I/O管理。主要功能包括缓冲区管理、设备分配、设备驱动和设备的无关性处理。(4)文件管理。主要功能包括文件存储空间的管理、文件操作的一般管理、目录管理、文件的读写管理和存取控制。(5)用户界面管理。操作系统的用户界面就是操作系统与用户的接口,包括控制接口和程序接口。
3) 现代操作系统的基本特征:并发性、共享性、虚拟性、异步性和不确定性。
4) 所谓中断是指系统发生某一事件后,CPU暂停正在执行的程序去执行处理该事件的程序过程,处理中断事件的程序称为中断处理程序,产生中断信号的那个部件称为中断源。中断处理具体过程:保存现场;分析原因,转中断处理程序;恢复现场。
5) 进程是一个具有独立功能的程序关于数据集合的一次可以并发执行的运行活动,其基本特征:动态特征、并发特征、独立性、相互制约性。进程的构成:程序、数据和进程控制块。进程有三种基本的调度状态:执行状态、就绪状态和等待状态。
6) 进程的引入大大地提高了资源的利用率和系统的吞吐量,而引入线程的目的是为了减少程序并发所付出的系统开销。进程是资源分配的单位,而线程是系统调度的单位。
7) 所谓死锁是多个进程间的一种僵持状态。进程死锁的原因:资源竞争及进程推进顺序非法。死锁的4个必要条件:互斥、占有等待、不可剥夺、环路。死锁的处理:鸵鸟策略、预防策略、避免策略、检测与解除死锁。
8) 临界资源是一次只允许一个进程使用的资源。临界区是在进程中操作临界资源的程序段。
2.进程和线程的区别?
答:线程是指进程内的一个执行单元,也是进程内的可调度实体.与进程的区别:(1)调度:线程作为调度和分配的基本单位,进程作为拥有资源的基本单位。(2)并发性:不仅进程之间可以并发执行,同一个进程的多个线程之间也可并发执行。(3)拥有资源:进程是拥有资源的一个独立单位,线程不拥有系统资源,但可以访问隶属于进程的资源. (4)系统开销:在创建或撤消进程时,由于系统都要为之分配和回收资源,导致系统的开销明显大于创建或撤消线程时的开销。
3.网络编程中设计并发服务器,使用多进程 与 多线程 ,请问有什么区别?
解析:(1)进程:子进程是父进程的复制品。子进程获得父进程数据空间、堆和栈的复制品
(2)线程:相对与进程而言,线程是一个更加接近与执行体的概念,它可以与同进程的其他线程共享数据,但拥有自己的栈空间,拥有独立的执行序列。
两者都可以提高程序的并发度,提高程序运行效率和响应时间。线程和进程在使用上各有优缺点:线程执行开销小,但不利于资源管理和保护;而进程正相反。同时,线程适合于在SMP机器上运行,而进程则可以跨机器迁移。
答:用多进程时每个进程有自己的地址空间,线程则共享地址空间。所有其他区别都是由此而来的:(1)速度:线程产生的速度快,线程间的通信快,切换快等,因为它们在同一个地址空间内。(2)资源利用率:线程的资源利用率比较好也是因为它们在同一个地址空间内。(3)同步问题:线程使用公共变量/内存时需要使用同步机制,还是因为它们在同一个地址空间内。
4. 操作系统中常见的进程调度策略有哪几种?
答:FCFS(先来先服务),优先级,时间片轮转,多队列、多级反馈队列。
5.进程间的通信如何实现?
答:现在最常见的进程间通信的方式有:信号,信号量,消息队列,共享内存,管道。信号是使用信号处理器来进行的,信号量是使用P、V操作来实现的。消息队列是比较高级的一种进程间通信方法,因为它真的可以在进程间传送消息。
6.在Windows编程中互斥器(mutex)的作用和临界区(critical section)类似,请说一下二者间的主要区别。
答:两者的区别是mutex开业用于进程之间互斥,critical section是线程之间的互斥。
7.进程进入等待状态有哪几种方式?
答:CPU调度给优先级更高的Thread(线程),原先Thread 进入Waiting(等待)状态。阻塞的Thread获得资源或者信号,进入Waiting状态。在时间片轮转的情况下,如果时间片到了,也将进入等待状态。
8.试说明进程在三个基本状态之间转换的典型原因。
答:a.处于就绪状态的进程,当进程调度程序为之分配了处理机后,该进程便由就绪状态变为执行状态。b.当前进程因发生某事件而无法执行,如访问已被占有的临界资源,就会使进程由执行状态变为阻塞状态。c.当前进程因事件片用完而被暂停执行,该进程便由执行状态变为就绪状态。
9.同步机构应遵循哪些基本准则?
答:a.空闲让进;b.忙则等待;c.有限等待;d.让权等待。
10.在单处理机环境下,进程间有哪几种通信方式?
答:a.共享存储器系统通信方式;b.消息传递系统通信方式;c.管道通信方式。
11.试比较消息队列与管道通信机制。
答:a.所谓管道,是指用于连接一个读进程和一个写进程,以实现它们之间通信的共享文件,又称pipe文件,管道通信是属于共享存储系统的。b.消息队列通信机制属于消息传递系统通信机制,存在通信链路,有消息的格式,有若干缓冲队列,采用独特的发送原语和接受原语。
12.在请求分页系统中,常采用哪几种页面置换算法?
答:a.最佳置换算法;b.先进先出算法;c.最近最久未使用LRU置换算法;d.Clock置换算法;e.此外,还有最少使用置换算法和页面缓冲算法。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: