操作系统常见的面试题汇总(一)

1:什么是操作系统?

操作系统是管理和控制计算机系统资源方便用户使用程序和数据结构的集合

2:操作系统分类

  • 批处理操作系统
  • 分时操作系统:由于中断处理机制的出现,是得一台计算机可以连接多个终端,用户可以通过各自的终端来控制和使用计算机。
  • 实时操作系统:是一种联机的操作系统,对外部的请求,实时操作系统能够在规定的时间内处理完毕。
  • 分布式操作系统:

       特点:功能的分布

             坚强性

           高可靠性

  • 个人计算机操作系统
  • 网络操作系统


3:操作系统的功能

(1)处理机管理

(2)存储管理(内存分配、存储保护,内存扩充)

(3)设备管理(通道、控制器、输入输出设备的分配与管理,设备独立性)

(4)信息管理(文件系统管理)

(5)用户接口(通道、控制器、输入输出设备的分配与管理,设备独立性)


4:通道

用于控制I/O设备与内存之间的数据传输。启动以后可以独立与CPU的运行,实现CPU与I/O的并行。

通道有专用的I/O处理器,可以与CPU并行运行

实现I/O联机处理


5:中断技术(极其重要)

(1)什么是中断技术?

CPU接到外部中断信号以后,停止原来的工作,转去处理中断事件,完毕后回到原来的断点继续工作。

(2)中断处理过程

中断请求——中断响应——中断点(暂停当前任务并保存现场)——中断处理例程——中断返回(恢复中断点的现场并继续原有任务)。

(3)中断与轮询的特点?

轮询——效率低,处理事件长,CPU利用率低

中断——CPU利用率高,但是容易遗漏一些问题。


6:进程与线程管理(进程同步的核心)

(1)进程与线程的区别

进程是系统资源分配的最小单位,线程是作为调度的最小单位。创建一个新的进程时,系统会给他们分配独立的地址空间,建立更多的数据来维护它的代码段、堆栈段与数据段。但是线程不需要。

线程间彼此切换所需要的时间远远小于进程间切换所需要的时间。

(2)简述进程的三态。

运行态,就绪态,等待。

(3)IPC的方式有哪几种?

管道(有名管道、无名管道):以文件系统为基础

信号量

共享内存

消息队列

(4)例举几种进程同步的机制。

在说明进程间同步的问题,不得不提一下并发和竞态的问题。

并发:多个执行单元同时被执行

竞态:并发的执行单元对共享资源的访问导致竞争状态。

常用的处理机制有如下几种:


  • 信号量机制:

信号量是一种睡眠锁,如果有一个想要获得已经被占用的信号量时,信号量会将此进程放入一个等待队列,然后让其睡眠。


  • 自旋锁:不会引起调用者睡眠,最多被一个执行单元持有。

特点:“忙等”,如果一个执行线程试图获得一个已被持有的自旋锁,那么线程会一直进行忙循环,一直等待下去,在那里看是否该自旋锁的保持已经释放。

  • 原子操作:所谓原子操作是指不会被线程调度机制打断的操作;这种操作一旦开始,就一直运行到结束,中间不会有任何 context switch (切换到另一个线程)。
  • 管程、会合、分布式系统。


(5)为什么要进行IPC?

数据传输:一个进程需要将它的数据发送给另一个进程

资源共享:多个进程之间共享一个资源

通知事件:一个进程需要向另一个进程发送消息,通知它们发生了某事件。

进程控制:有些进程希望完全控制另一个进程的执行。


(6)线程间同步的几种方式?

  • 临界区:当多个线程访问一个独占性共享资源时,可以使用临界区对象。拥有临界区的线程可以访问被保护起来的资源或代码段,其他线程若想访问,则被挂起,直到拥有临界区的线程放弃临界区为止。
  • 事件(CEvent):则允许一个线程在处理完一个任务后,主动唤醒另外一个线程执行任务。这个常用在网络编程之中,常常是一个线程监听通信端口,另一个线程负责更新用户数据。

  • 互斥量(CMutex):互斥对象和临界区对象非常相似,只是其允许在进程间使用,而临界区只限制与同一进程的各个线程之间使用,
但是更节省资源,更有效率。
  • 信号量:(非常重要)
如同进程一样,线程也可以使用信号量来完成线程间的同步。

信号量的同步操作是重中之重。

信号量主要作用是保护临界资源,用于访问控制和进程同步。

信号量实质是一个整数。

例如:A、B进程均希望使用S资源。若S为临界资源,同一时刻只允许一个进程访问。

S资源的信号量为M,当M=1时,S可以访问。

A首先获取信号量,此时M=1,当A获得信号量时,把M-1;

B想要获得信号量时,判断M的值,发现此时信号量不可用,那么就把进程进行阻塞。

当释放信号量时,M+1;

上述提到的是使用二值信号量的方法。

但是实际过程中运用的是计算信号灯 的方法:
S表示资源,信号量的值与资源的使用情况相关。当它的值大于0时,表示可用资源的数量。当它的值小于0时,其绝对值表示等待使用该资源的进程个数。信号量值的改变由PV操作来实现。

一般来说当S>=0时,执行一次P操作,意味着请求分配一个单元资源,因此S值减1;当S<0时,表示已经没有可用资源,请求者必须等待别的进程释放该类资源,它才能运行下去。

而执行一次V操作,意味着释放一个单元的资源,因此S值加1.如果S<0表示有某些进程正在等待该资源,因此要唤醒一个等待状态的进程,使之运行下去。(关于PV原语的相关操作在专门的章节中详细分析,包括生产者—消费者模型的问题)。

(7)内核线程与用户线程之间的区别

用户线程:指的是不需要内核支持而运行在应用程序的线程。其不依赖于操作系统核心,应用进程利用线程库提供创建、同步、调度和管理线程的函数来控制用户线程。不需要用户态/核心态的切换。速度快,操作系统内核不需要知道多线程的存在。因此一个线程阻塞将导致整个进程的阻塞。由于这里的处理器时间片分配是以进程为基本单位,所以每个线程执行的时间相对减少。

内核线程:由操作系统内核创建、撤销。内核维护进程及线程的上下文信息以及线程切换。一个内核线程由于I/O操作而阻塞,不会影响其它线程的运行。Windows NT和2000/XP支持内核线程。

(8)什么是死锁?产生死锁的条件是什么?

死锁是指,在两个或多个并发进程中,如果每个进程持有某种资源而又都等待别的进程释放它们现在保持着的资源,否则就不能向前推进.此时,每个进程都占用了一定的资源但是又不能向前推进,称这一组进程产生了死锁。多个进程因竞争资源而形成一种僵局。若无外力的作用,谁也无法继续往前。


死锁产生的条件有:

互斥:存在着某种资源,在某个时刻只能被一个执行绪持有

持有:当请求的资源被占有,从而导致执行绪被阻塞时,资源占有者不仅不需要释放资源,而且还在不停的请求资源。

不可剥夺:简单的来说资源占有者只能自己才能释放资源

环路:若干执行绪以不同的次序获取互斥资源,从而在由多个执行绪组成的环形链中,每个执行绪都在等待下一个执行绪释放它持有的资源。

(9)死锁的原因。

一是由于进程推进的顺序非法,另一个是由于系统资源的竞争。

(10)预防死锁的方法?避免死锁的方法?

对于死锁形成的原因,死锁产生的四个必要条件缺一不可。因此只要让上述四个必要条件有一个不满足即可预防死锁的出现。

  • 解决资源互斥的问题时,唯一的策略就是采用资源共享的方式。但是实际情况下“破坏资源互斥”的办法是行不通的。
  • 占有并等待条件:解决这个问题通常使用的策略是静态分配资源和释放已占资源策略。
      静态分配资源策略(也称为预分配资源)——要求每个进程在开始执行前就申请它所需要的全部资源,仅当系统         能满足进程的资源申请要求且把资源分配给进程后,该进程才能开始执行。

       特点:静态分配资源的策略实现简单,但降低了资源的利用率。

       释放已占资源策略——这种分配策略是仅当进程没有占有资源时才允许它去申请资源。如果进程已占用了某些资        源而又要再申请资源,则它应先归还所占的资源后再申请新资源。

       特点:仍会使进程处于等待资源状态,但不会出现占有了部分资源再等待其它资源的现象。

  • 可抢夺条件:使用抢占式资源分配策略。
  • 环路:采用按需分配资源策略。
(11)死锁处理

死锁处理策略有: 鸵鸟策略、预防策略、避免策略、检测与解除死锁策略。

(12)常见的进程调度算法有哪些?

  • 先来先服务算法
  • 短进程优先调度算法
  • 高优先级调度算法
  • 时间片轮转法








你可能感兴趣的:(操作系统)