操作系统面试常常问到的问题

拥有回忆 提交于 2020-03-09 23:50:56

什么是操作系统?它的功能和特征?

  • 操作系统就是管理和控制计算机硬件和软件资源的程序,它的管理功能有:
    • 进程管理
    • 内存管理
    • 文件管理
    • I/O管理
  • 操作系统是用户与硬件之间的接口,也是硬件和软件之间的接口。
  • 操作系统的四大特征:
    • 并发:两个或多个进程在同一时间间隔内发生,注意和并行的区别。
    • 共享:系统中的资源可供多个并发执行的进程使用。
    • 虚拟:把一个物理实体,变为若干个逻辑上的对应物,如虚拟处理器、虚拟内存、虚拟外部设备。
    • 异步:由于多个程序并发执行和资源有限,进程执行是走走停停的。

什么是管态和目态?为什么要区分管态和目态?

  • 管态:特权态/系统态/核心态,处于管态的程序可以访问计算机任何资源,访问权限不受限制。通常操作系统在管态运行。
  • 目态:常态/用户态,处于目态的程序只能执行非特权指令,不能直接使用系统资源,不能改变CPU工作状态,且只能访问本程序的存储空间。
  • 区分管态和目态的目的:出于安全考虑,保护操作系统程序。内核程序是用户程序的管理者,需要执行一些特权指令,如I/O指令,中断指令等,特权指令不允许用户直接使用。

如何从目态切换到管态

  • 系统调用:使用中断机制,用户态的进程通过系统调用申请使用操作系统提供的服务程序,主动要求切换到内核态。
  • 异常:CPU运行用户态进程时,发生异常,例如缺页,则会切换到处理当前异常的内核程序中。
  • I/O中断:I/O设备完成用户请求的操作后,向CPU发出中断信号,CPU执行中断处理程序,从用户态切换到内核态。
  • 系统调用为用户进程主动发起,异常和I/O中断是被动的。

什么是进程?有几种状态?

  • 进程是具有独立功能的程序在一个数据集合上运行的过程,它是系统进行资源分配和调度的基本单位。
  • 进程拥有独立的地址空间,一个进程无法直接访问另一个进程的变量和数据,如要访问,则需要使用进程间通信,例如管道、文件、套接字等。
  • 进程控制块Process Control Block,保存进程运行期间的数据,PCB是进程存在的唯一标志。
  • 五个状态:创建、就绪、执行、阻塞、结束。

什么是线程?和进程的区别?

  • 线程即轻量级进程,线程是CPU调度的基本单元,由线程ID、程序计数器、寄存器集合和堆栈组词。它属于进程,是进程的一个实体,但是线程自己不拥有系统资源,一个进程内的所有线程共享进程拥有的全部资源。
  • 调度:引入线程后,线程是CPU调度的基本单位,进程则变成了拥有资源的基本单位。
  • 系统开销:由于线程占用资源极少,创建和销毁的时间比进程小很多,所以同一进程内的线程切换的系统开销很小,进程间的切换就很大。
  • 线程的执行要进行互斥和同步,因为共享同一进程的资源。
  • 进程的标志:PCB,线程的标志:TCB。

进程间通信有哪几种?

  • 低级通信方式:PV操作。高级通信方式:以较高的效率传输大量数据,有以下三种。
  • 共享存储:顾名思义,通信的两个进程间有一块可直接访问的共享空间,进程对共享空间进行读/写操作来交互信息,因为是共享空间,所以要使用同步互斥工具。
  • 消息传递:数据交互以格式化的消息(Message)为单位,操作系统提供发送信息和接受信息两个原语。消息传递有直接通信和间接(信箱)通信两种方式。
  • 管道通信:管道(pipe)文件连接一个读进程和写进程,以字符流的形式传递,管道机制需要提供协调能力:互斥、同步和确定对方存在。

高级调度和低级调度的任务?为什么引入中级调度?

  • 高级调度(作业调度):内存与外存之间的调度,按一定原则从外存的后备队列挑选一个或多个作业,给它们分配内存、I/O等资源,并建立进程,使它们有竞争处理机的权利。对于每个作业,只调入一次、调出一次,频率最低。
  • 低级调度(进程调度):按照某种算法或策略从就绪队列选取一个进程,将处理机分配给它,最基本的调度,频率最高。
  • 中级调度(内存调度):为了提高内存利用率和系统吞吐量,将暂时不能运行的进程挂起,调至外存等待;当具备运行条件且内存空闲时,再将进程重新调入内存,放入就绪队列。

常用的调度算法有哪些?

  • 先来先服务(FCFS):最先进入队列的进程得到资源,非抢占,对长作业有利,对短作业不利。
  • 短作业优先(SJF):运行时间最短的进程得到资源,平均等待时间、平均周转时间最少,对长作业不利,长作业出现"饥饿"现象。
  • 优先级调度:选择优先级最高的进程。对于新的更高优先级的进程,有非抢占/抢占两种调度;对于进程创建后优先级是否可以改变,有静态优先级/动态优先级两种。
  • 高响应比优先:响应比=(等待时间+要求服务时间)/ 要求服务时间。等待时间相同,要求服务时间越短,响应比越高,有利于短作业;服务时间相同,等待时间越长,响应比越高,实现了先来先服务,克服了饥饿状态,兼顾了长作业。
  • 时间片轮转:适用于分时系统,时间片大小应选择适当。
  • 多级反馈队列:集合了时间片轮转和优先级调度,设置多个优先级、时间片大小不同的队列,如果进程不能在当前队列的时间片内完成,则调入更低级的队列;仅当优先级高的队列为空时,才调度低的队列。

不同的进程间存在什么关系

  • 同步与互斥的制约关系。

什么是死锁?为什么会产生死锁?怎么解决死锁?

  • 死锁:多个进程竞争临界资源造成互相等待,若无外力作用,则无法向前推进。
  • 死锁产生的必要条件:互斥、不剥夺、请求和保持、循环等待。
  • 死锁预防:破坏必要条件。
  • 死锁避免:安全状态,银行家算法。
  • 死锁检测和解除:简化资源分配图检测死锁;资源剥夺、撤销进程和进程回退解除死锁。

为什么引入动态重定位?如何实现?

分区存储管理常用分配策略?优缺点?

具有快表的段页式存储管理中,如何实现地址变换?

分页和分段的异同?

什么是局部性原理?什么是虚拟存储器?

页面置换算法有哪些?什么是抖动?

目前广泛采用的文件目录结构是那种?有什么有点?

常用的文件分配方式和优缺点?

常用的磁盘调度算法?

有哪几种I/O控制方式?

引入缓冲区的目的?

SPOOLing技术

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!