操作系统面试考点汇总

1. 基本概念

1.1 什么是中断系统中的中断?

   中断系统中的中断发生后,系统停止响应,并执行中断响应,这个过程就叫系统中断。
   所谓中断是指CPU对系统发生的某个事件做出的一种反应,CPU暂停正在执行的程序,保留现场后自动地转去执行相应的处理程序,处理完该事件后再返回断点继续执行被“打断”的程序。
   中断一般可以分为两种类型:

  • 强迫性中断:由CPU外部引起的,如I/O中断、时钟中断、控制台中断等;来自CPU的内部事件或程序执行中的事件引起的过程,如由于CPU本身故障、程序故障(非法操作码、地址越界、浮点溢出等)等引起的过程。
  • 自愿性中断:由于在程序中使用了请求系统服务的系统调用而引发的过程,称作“陷入”。
1.2 试解释操作系统原理中的作业、进程、线程、管程各自的定义

作业:用户在一次解题或一个事务处理过程中要求计算机系统所做工作的集合。它包括用户程序、所需要的数据及控制命令等。作业是由一系列有序的步骤组成的。
进程:一个程序在一个数据集合上的一次运行过程。所以一个程序在不同数据集合上运行,乃至一个程序在同样数据集合上的多次运行都是不同的进程。
线程:线程是进程中的一个实体,是被系统独立调度和执行的基本单位。
管程:管程实际上是定义了一个数据结构和在该数据结构上的能为并发进程所执行的一组操作,这组操作能同步进程和改变管程中的数据。

1.3 请描述进程的三种基本状态

   进程在运行中不断地改变其运行状态。 通常,一个运行进程必须具有以下三种基本状态:

  • 就绪(Ready)状态: 当进程已分配到除CPU以外的所有必要的资源,只要获得处理机便可立即执行,这时的进程状态称为就绪状态。
  • 执行(Running)状态: 当进程已获得处理机,其程序正在处理机上执行, 此时的进程状态称为执行状态。
  • 阻塞(Blocked)状态:正在执行的进程,由于等待某个事件发生而无法执行时,便放弃处理机而处于阻塞状态。引起进程阻塞的事件可以有多种, 例如,等待I/0完成、申请缓冲区不能满足、等待信件(信号)等。
1.4 进程间的通信如何实现?

   现在最常用的进程间通信的方式有信号、信号量、消息队列、共享内存。

1.5 请描述进程和线程的差别
  • 概念:进程是程序的一次执行,线程可以理解为进程中执行的一段程序片段。
  • 内存:进程间是独立的, 这表现在内存空间、上下文环境上,而线程运行在进程空间内。一般来讲(不使用特殊技术),进程无法突破进程边界存取其他进程内的存储空间,而线程由于处于进程空间内,所以同一进程所产生的线程共享同一内存空间。
  • 生命周期:线程是属于进程的, 当进程退出时,该进程所产生的线程都会被强制退出并清除。
  • 占用资源:线程占用的资源要少于进程所占用的资源。
  • 优先级:进程和线程都可以有优先级。

2. 多线程编程

2.1 在Windows 编程中互斥器(mutex)的作用和临界区(critical section)类似, 请说一下二者间的主要区别

   两者的区别是 mutex 可以用干进程之间互斥, critical section是线程之间的互斥。

3. 死锁

   所谓deadlocks(死锁)是指两个或两个以上的进程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁。

3.1 死锁预防

   产生死锁的4个必要条件:

  • 互斥条件:一个资源每次只能被一个进程使用。
  • 请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放。
  • 不剥夺条件:进程已获得的资源,在未使用完之前,不能强行剥夺。
  • 循环等待条件:若干进程之间形成一种头尾相接的循环等待资源关系。

   死锁预防是一组方法,以确保至少一个必要条件不成立。(这里注意一点:互斥条件无法被破坏)

  • 采用资源静态分配策略,破坏“部分分配”条件。
  • 允许进程剥夺使用其他进程占有的资源, 从而破坏“不可剥夺”条件。
  • 采用资源有序分配法, 破坏“环路”条件。
3.2 死锁避免

   死锁的避免不严格地限制死锁的必要条件的存在,而是系统在系统运行过程中小心地避免死锁的最终发生。
   避免死锁算法中最有代表性的算法是银行家算法, 该算法需要检查申请者对资源的最大需求量, 如果系统现存的各类资源可以满足申请者的请求, 就满足申请者的请求。这样申请者就可很快完成其计算,然后释放它占用的资源,从而保证了系统中的所有进程都能完成,所以可避免死锁的发生。

3.3 死锁恢复

   通过终止进程以取消死锁:

  • 终止所有死锁进程,但其代价也大。这些进程可能已经计算了很长时间,这些部分计算结果必须放弃,以后可能还要重新计算。
  • 一次只终止一个进程直到取消死锁循环为止,这种方法的开销会很大,这是因为每次终止一个进程,都必须调用死锁检测算法以确定进程是否仍处于死锁。

   通过资源抢占以取消死锁,逐步从进程中抢占资源给其他进程使用,直到死锁环被打破为止。

4. 内存管理

4.1 简述Windows内存管理的几种方式和优缺点

   Windows内存管理方式主要分为:页式管理、段式管理、段页式管理。

  • 页式管理:页式管理的基本原理是将各进程的虚拟空间划分成若干个长度相等的页(page),页式管理把内存空间按页的大小划分成片或者页面,然后把页式虚拟地址与内存地址建立一一对应的页表,并用相应的硬件地址变换机构来解决离散地址变换问题。
       优点:没有外碎片,每个内碎片不超过页的大小。
       缺点:程序全部装入内存, 要求有相应的硬件支持。
  • 段式管理:段式管理的基本思想就是把程序按内容或过程面数关系分成段,每段有自己的名字。一个用户作业或进程所包含的段对应一个二维线形虚拟空间, 也就是一个二维虚拟存储器。 段式管理程序以段为单位分配内存,然后通过地址影射机构把段式虚拟地址转换为实际内存物理地址。
       优点:可以分别编写和编译,可以针对不同类型的段采取不同的保护,可以按段为单位来进行共享,包括通过动态链接进行代码共享。
       缺点:会产生碎片。
  • 段页式管理:为了实现段页式管理,系统必须为每个作业或进程建立一张段表以管理内存分配与释放、缺段处理等。 另外由于一个段又被划分成了若干页。每个段又必须建立一张页表以把段中的虚页变换成内存中的实际页面。
       优点:具有段式管理和页式管理两者的优点。
       缺点:由于管理软件的增加,复杂性和开销也就随之增加了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值