操作系统面试常问——for考研复试面试

article/2025/10/26 15:14:38

关于操作系统的一些面试常问问题

前言:

本人22考研党已上岸,发一些复试准备整理的资料作为对考研准备的一个收尾。由于近几年基本都是线上复试,线上的话会更加注重概念的考察,本人在复试准备期间搜集了面试题,整理了很多资料。本文主要概括了操作系统在复试面试中可能会考察的一些问题,仅供大家参考,如果对大家有帮助,希望大家点赞哦~
本文目前仅针对的是考研复试环节,不涵盖操作系统全部的知识,祝大家复试顺利。由于作者本人水平有限,若本文有任何不对欢迎大家留言指正!上岸不易,希望大家都能去到想去的地方,加油。

1. 操作系统是什么

概念:操作系统是用户和计算机的接口,同时也是计算机硬件和其他软件的接口,提供的功能有管理计算机硬件、软件和数据资源,控制程序的运行,改善人机界面,提供其他应用程序的支持等,使计算机系统所有资源最大限度的发挥作用。
特征:并发、共享、虚拟、异步(大概什么意思,怎么实现的要知道)

2. 进程的特性

动态性 并发性 独立性 异步性 结构性

3. 进程创建过程

1)分配进程标识号,申请空白PCB
2)为进程分配资源(程序、数据、内存空间)(分配失败则转为阻塞状态而非失败)
3)初始化PCB(标志信息、处理机状态信息、处理控制信息、设置优先级)。
4)如果就绪队列可以接纳新进程,则接收到就绪队列中。

4. 进程和线程的区别

进程是拥有资源的基本单位,线程是独立调度的基本单位,线程不拥有系统资源(除了一些少量的资源,比如栈、程序计数器等),进程内的线程共享进程所拥有的资源;
并发性方面,在引入线程的操作系统中,不仅进程之间可以并发执行,而且同一个进程内的多个线程之间也可以并发执行,能提高系统的吞吐量,系统的并发性也更好;
在系统开销方面,创建和撤销进程,系统要为之分配或者回收资源,所以创建和撤销进程的系统开销远比线程的要多。
进程之间不会相互影响,而一个线程挂掉可能导致整个进程挂掉。

5. 进程和程序的区别

进程是动态的,程序是静止的。进程是程序的运行过程,程序是有序代码的集合。
进程是暂时的,程序是永久的。进程是一个状态变化的过程,程序可以长久保存。
进程和程序的组成不同:进程包括程序,数据和进程控制块。
进程和程序是密切相关的。通过多次执行,一个程序可以对应多个进程;通过调度关系,一个进程可以包括多个程序。
进程可以创建其他进程,但是程序不能形成新的程序。

6. 为什么引入线程

虽然进程可以提高CPU的利用率,但是进程之间的切换是非常耗费资源和时间的,为了能更进一步的提高操作系统的并发进,引进了线。这样,进程是分配资源的基本单位,而线程则是系统调度的基本单位。一个进程内部的线程可以共享该进程的所分配到的资源.线程的创建与撤消,线程之间的切换所占用的资源比进程要少很多。总的来说引入线程就是为了更进一步提高系统的并发性,提高CPU的利用率。线程是进程的基础,进程包含多个线程,是线程的载体。

7. 进程的状态转换

创建 就绪 运行 阻塞 结束(五态模型)
在这里插入图片描述

8. 进程间的通信方式(必会)

共享存储:在通信的进程之间存在一块可以直接访问的共享空间,通过对这片共享空间的读写实现进程之间的信息交换
管道通信:实现父子进程互动需要两个管道
消息传递:进程不必借助任何共享存储区或者数据结构,而是以格式化的消息为单位,将数据封装在消息中,并利用OS提供的一组通信命令原语在进程进行信息传递。
分为
直接通信方式:发送进程直接把消息发送给接收进程的消息缓冲队列
间接通信方式:发送进程把消息发到中间实体,类似于邮件

9. 管程

代表共享资源的数据结构,以及由该共享数据结构进行操作的一组过程所组成的资源管理程序,称为管程。管程的引入是为了解决临界区分散所带来的问题。其特性保证了进程互斥,降低死锁发生的可能性。

10. 进程调度算法

先来先服务调度
短作业优先调度
时间片轮转调度
高响应比优先调度
优先级调度
多级反馈队列调度
(能稍微展开描述各种算法,了解算法的思想。)

11. 并发、并行的区分

并行是指两个或者多个事件在同一时刻发生;而并发是指两个或多个事件在同一时间间隔内发生。在多道程序环境下,并发性是指在一段时间内宏观上有多个程序在同时运行,但在单处理机系统中,每一时刻却仅能有一道程序执行,故微观上这些程序只能是分时地交替执行。倘若在计算机系统中有多个处理机,则这些可以并发执行的程序便可被分配到多个处理机上,实现并行执行,即利用每个处理机来处理一个可并发执行的程序,这样,多个程序便可以同时执行

12. 多道程序设计

多道程序设计是指在主存中同时存放多道用户作业,使它们都处于执行的开始点和结束点之间,这些程序共享计算机系统资源。多道程序设计的主要优点有:(1) 提高CPU的利用率。在多道程序环境下,多个程序共享计算机资源,当某个程序等待I/O操作时,CPU可以执行其他程序,大大提高了CPU的利用率。
(2) 提高设备的利用率。多个程序共享系统的设备,大大提高系统设备的利用率。
(3) 减少了程序的等待时间,提高了系统的吞吐量。

13. 临界资源、临界区

一次仅允许一个进程使用的资源称为临界资源,访问临界资源的那段代码称为临界区。

14. 原语

处于操作系统的最底层,最接近硬件的部件;操作一气呵成,不能被打断;运行时间短,调用频繁。

15. 同步机制的准则

空闲让进
忙则等待
有限等待,能在有限时间内进入临界区
让权等待,不能进入临界区应立即释放处理器

16. 信号量机制

可以利用信号量实现进程同步、进程互斥以及前驱关系

17. 经典同步问题(了解内容)

生产者-消费者问题
读者-写者问题
哲学家进餐问题
吸烟者问题

18. 死锁

定义:两个或两个以上进程由于争夺资源造成的一种互相等待的状态,若如外力作用,他们都无法继续推进下去

原因:系统资源不足;进程推进顺序不当。

造成死锁必要条件
互斥:在一段时间内某资源只由一个进程占用。
请求和保持:进程已经保持至少一个资源,但又提出了新的资源请求,而该资源已被其它进程占有,此时请求进程阻塞,但又对自己已获得的其它资源保持不放。
不可剥夺:指进程已获得的资源,在未使用完之前,不能被剥夺,只能在使用完时由自己释放。
循环等待:发生死锁的进程构成一环路。

死锁的解决办法
预防死锁:破坏产生死锁的必要条件中的一个或几个
避免死锁:在系统资源的动态分配过程中,防止系统进入不安全的状态。比如银行家算法(在每次进行资源分配时,它首先检查系统是否有足够的资源满足要求,如果有,则先试行分配,并对分配后的新状态进行安全性检查。如果新状态安全,则正式分配上述资源,否则拒绝分配上述资源。这样保证系统始终处于安全状态,从而避免死锁现象的)。
检测死锁:允许系统运行过程中发生死锁,但可通过系统设置的检测机构,及时检测出死锁的发生,确定与死锁有关的进程和资源。
解除死锁:撤销或者挂起一些进程,以便回收一些资源,再将这些资源分配给处于阻塞状态的进程,使之转为就绪态,以继续运行。

19. 页面置换算法(了解算法思想)

先进先出
最近最久未使用
最佳置换算法(每次淘汰以后不再使用的页面或者最迟再被使用的页面)
时钟置换算法

20. 抖动、工作集

频繁的页面调度称为抖动
工作集就是在某段时间内,进程要访问页面的集合

21. 中断

外中断是由CPU执行指令以外的事件引起的,如I/O中断,时钟中断
内中断(异常) CPU执行指令的内部事件引起的,指令中断,地址越界,算术溢出

22. 内核态、用户态

内核态: CPU可以访问任意的数据,包括外围设备,比如网卡、硬盘等,处于内核态的CPU可以从一个程序切换到另外一个程序,并且占用CPU不会发生抢占情况,
用户态: 处于用户态的CPU只能受限的访问内存,不允许访问外围设备,用户态下的CPU不允许独占,也就是说CPU能够被其他程序获取。

23. 系统调用的过程

系统调用提供了用户程序和操作系统之间的接口,应用程序通过系统调用实现其余 OS 的通信,并取得它的服务。系统调用不仅可供所有的应用程序使用,而且也可供 OS 本身的其它部分,如命令处理程序。
系统调用的处理步骤(三步):
首先,将处理机状态由用户态转为系统态保护被中断进程的 CPU 环境,将处理机状态字 PSW 、程序计数器 PC 、系统调用号、用户栈指针以及通用寄存器内容等压入堆栈;再然后将用户定义的参数传送到指定的地址保存起来。
其次,分析系统调用类型,转入相应的系统调用处理子程序。(通过查找系统调用入口表,找到相应处理子程序的入口地址转而去执行它。)
最后,在系统调用处理子程序执行完后,应恢复被中断的货设置新进程的CPU 现场,然后返回被中断进程或新进程,继续往下执行。

24. 孤儿、僵尸、饥饿进程

孤儿进程 :父进程退出,子进程未退出,子进程为孤儿进程
僵尸进程 :子进程退出,父进程未推出,子进程必须等到父进程捕获到子进程的退出状态才真正结束
进程饥饿:等待时间给进程推进和响应带来明显影响时成为饥饿进程
饥饿与死锁的区别:饥饿进程一个,死锁进程两个或两个以上
饥饿进程可以是就绪状态,死锁进程只能是阻塞状态

25. 调度

高级调度 作业调度
中级调度 内存调度
低级调度 进程调度
这个了解这些名称就好~

26. 调度方式

抢占式:一个进程正在处理机上执行时,若有更为紧迫的进程需要处理机,则立即停止本进程,将处理及分配给这个更为紧迫的进程
非抢占式:虽然有更紧迫的进程进入就绪队列,但仍让本进程继续执行,直到该进程完成或者发生某种事件进入阻塞状态,才将处理机分配给更紧迫的进程

27. 程序装入方式

绝对装入:在编译时就知道程序将要驻留在内存的物理地址
可重定位装入:根据内存当前情况,将装入模块装入到内存的适当位置,地址变换通常在装入时一次完成,之后不再改变,也称静态重定位。
动态运行装入:允许程序运行时在内存中移动位置,把装入模块装入到内存后的所有地址都是相对地址,在程序执行过程中每当访问到相应指令或数据时,才将要访问的程序或数据的相对地址转换为物理地址。动态重定位的实现要依靠硬件地址变换机构。

28. 程序链接方式

静态链接:在程序运行之前,先把各个目标模块及所需库链接为一个完整的可执行程序,以后不再拆开。
装入时动态链接:将应用程序编译后所得到的一组目标模块在装入内存 时采用边装入边链接的链接方式。
运行时动态链接:知道程序运行过程中需要一些模块时,才对这些模块进行链接。

29. 内存分配管理方式

单一连续分配(静态分配)
固定分区分配(分区大小可以不等,但事先必须确定,运行时不能改变)
动态分区分配(详细算法见动态分区分配算法)

30. 内部碎片、外部碎片

内部碎片:分配出去的存储空间中未被利用的部分
外部碎片:系统中无法利用的小存储块

31. 动态分区分配算法

首次适应算法(最好):空闲分区以地址递增的次序链接,顺序查找满足的分区
循环首次适应算法(最差):与首次适应算法不同的时,它每次查找是在上次查找结束位置继续查找
最佳适应算法(外部碎片):空闲分区以容量递增的次序链接,找最大满足的空闲分区
最坏适应算法:空闲分区以容量递减的次序链接,找最小满足的空闲分区

32. 磁盘调度算法

先来先服务:按进程访问磁盘的先后顺序进行调度
最短寻道时间优先:选择与当前磁头所在磁道距离最近的请求作为下一次服务的对象
扫描算法:在磁头当前移动方向上选择与当前磁头所在磁道距离最近的请求作为下一次服务的对象
循环扫描算法(单向移动,最外回到最里):磁头单向移动,如自里向外移动,移动到最外磁道时立即返回最里磁道,如此循环扫描

33. 存储器管理的功能

内存的分配和回收
地址变换(将逻辑地址转换为物理地址)
内存扩充:借助虚拟存储技术或其他覆盖技术,从逻辑上扩充内存
存储保护:进入内存的各道作业在自己的存储空间内运行,互不干扰

34. 设备独立性

应用程序独立于具体使用的物理设备。设备独立性又称为数据无关性。它指的是应用程序在使用设备进行I/O时,使用的是逻辑设备,而系统在实际执行时使用的是物理设备,由操作系统负责逻辑设备与物理设备的映射。

原因:用户用逻辑设备名来申请使用某类物理设备,当系统中有多台该类型的设备时,系统可以将其中的一台分配给请求进程,而不必局限于某一台指定的设备,这样可以显著改善资源的利用率

35. 局部性原理

程序执行时出现的一般规律,一段时间内,程序的执行仅限于某个部分,访问的存储空间也仅限于某个部分
时间局部性 某个指令被执行后,不久后可能被再次访问。
空间局部性 某个存储单元被访问后,不久后它附近的也会被访问。

36. 虚拟存储器

基于局部性原理,应用程序在运行之前,仅将那些当前要运行的少数页面或段先装入内存便可运行,其余部分暂时留在盘上。程序运行时,如果它要访问的页已调入内存,便可继续执行下去;如果程序要访问的页或段尚未调入内存(即缺页),程序应将它们调入内存,以继续执行下去。
这样,就实现了大的用户程序能在较小的内存空间里运行,也可以在内存中同时装入更多的进程使它们并发运行。从用户角度出发,该系统的内存容量比实际内存容量大很多,故成这样的存储器为虚拟存储器。

37. 虚拟内存

虚拟内存是计算机系统内存管理的一种技术。它使得应用程序认为它拥有连续的可用的内存(一个连续完整的地址空间),而实际上,它通常是被分隔成多个物理内存碎片,还有部分暂时存储在外部磁盘存储器上,在需要时进行数据交换。
虚拟内存的最大容量取决于cpu的寻址范围,实际容量

38. 交换技术、覆盖技术

交换(对换):交换的基本思想就是把内存中的暂时在等待状态的进程从内存中调到辅存中去。把内存空间腾出来叫换出,再把准备好竞争cpu资源的进程放进内存,这叫换入。它是一种内存扩充技术。
覆盖技术:把一个大的程序划分为一系列覆盖,每个覆盖是一个相对独立的程序单位,把程序执行时并不要求同时装入内存的覆盖组成一组,成为覆盖段,这个覆盖段分配到同一个存储区域,这个存储区域成为覆盖区,它与覆盖段一一对应。覆盖段的大小由覆盖段中最大的覆盖来确定。覆盖技术为了解决内存容量太小的问题,打破了必须将一个程序全部信息装入内存后才能运行的限制。

39. 文件目录

单级目录:在整个文件系统中只建立一张目录表,每个文件占一个目录项。
实现了“按名存取”,但查找速度慢,不允许重名,不便于实现文件共享。
二级目录:将文件目录分成主文件目录和用户文件目录,系统为每个用户建立一个单独的文件用户目录。解决了文件重名问题,并可以获得较高的查找速度,但二级目录缺乏灵活性,不能对文件分类。
多级目录:即树形目录结构。便于对文件分类,层次结构清晰,也能够更有效地进行文件的管理和保护;但在查找一个文件时,需要按照路径名逐级访问中间节点增加了磁盘访问次数,影响查询速度。

40. 文件逻辑结构有哪些

一种是无结构的流式文件,是指对文件内信息不再划分单位,它是依次的一串字符流构成的文件;
一种是有结构的记录式文件, 是用户把文件内的信息按逻辑上独立的含义划分信息单位,每个单位称为一个逻辑记录(简称记录)。所有记录通常都是描述一个实体集的,有着相同或不同数目的数据项,记录的长度可分为定长和不定长记录两类。

41. 假脱机技术

所有字符设备都是独占设备并属于慢速设备,因此,当一个进程在某台字符设备上进行数据交换时,往往要等待较长时间,并且在此进程未释放该设备之前,其它进程不能同时访问该设备。另一方面,分配到字符设备的进程,在整个运行期间也并非一直使用设备,利用率较低,从而降低了整个系统的性能。SPOOLING技术正是针对上述问题提出的一种技术。SPOOLING技术的核心思想是使一台独占设备变成多台可并行使用的虚拟设备,对IO操作进行批处理,在联机情况下实现外部设备的同时操作,以联机的方式获得脱机的效果,缓和CPU高速性和IO设备低速性之间的矛盾。
SPOOLING系统主要由输入井和输出井、输入缓冲区和输出缓冲区以及输入进程和输出进程3部分组成。在SPOOLING系统中,输出进程将用户要求的数据从输入设备送到输入井,当需要输入数据时,CPU直接从输入井将数据读入内存;输出进程把用户要输出的数据先从内存送到输出井,等输出设备空闲时再将输出井中的数据输出到设备上。
SPOOLING技术可带来如下好处
(1)提高了I/O速度
(2)将独占设备改造成共享设备
(3)实现了虚拟设备功能

42. 引入缓冲的目的是什么

(1)缓和外部设备和CPU的速度差异;
(2)减少CPU被中断的次数;
(3)实现CPU和设备、设备和设备之间的并行操作。

43. 设备控制表

整个系统只有一张设备控制表(SDT),它记录已经连接到系统中的所有物理设备的情况,每个物理设备占一个表目。


http://chatgpt.dhexx.cn/article/uXhJyCGx.shtml

相关文章

操作系统面试题(三)

请你来说一说协程 参考回答: 1、概念: 协程,又称微线程,纤程,英文名Coroutine。协程看上去也是子程序,但执行过程中,在子程序内部可中断,然后转而执行别的子程序,在适…

操作系统面试题(十四):什么是虚拟内存?

虚拟内存(virtual Memory) 日常生活中,当我们使用电脑的时候,尤其是windows电脑,经常会打开许多软件,这些软件占用的内存已经远远大于计算机的物理内存。之所以会这样,就是因为虚拟内存的存在 …

操作系统面试题:设备管理

管理什么设备? 除cpu,内存外的所有设备 怎么管理设备? 通过将物理设备映射成逻辑设备 为什么要把物理设备映射成逻辑设备? 物理设备是I/O系统中实际安装的设备,物理名通常是字符串或者ID 而逻辑设备的逻辑名比较好记 如何理解…

操作系统面试问题汇总(超详细)

操作系统的组成 1、驱动程序是最底层的、直接控制和监视各类硬件的部分,它们的职责是隐藏硬件的具体细节,并向其他部分提供一个抽象的、通用的接口。 2、内核是操作系统之最内核部分,通常运行在最高特权级,负责提供基础性、结构性…

操作系统面试题(二)

请你讲述一下互斥锁(mutex)机制,以及互斥锁和读写锁的区别 参考回答: 1、互斥锁和读写锁区别: 互斥锁:mutex,用于保证在任何时刻,都只能有一个线程访问该对象。当获取锁操作失败时…

几率大的杂乱+操作系统面试题(含答案)

其他面试题类型汇总: Java校招极大几率出的面试题(含答案)----汇总 几率大的网络安全面试题(含答案) 几率大的多线程面试题(含答案) 几率大的源码底层原理,杂食面试题(含…

操作系统常见面试题

文章目录 进程和线程进程和线程的区别协程与线程的区别进程与线程的切换流程什么是虚拟地址空间为什么虚拟地址空间切换后感觉程序变慢进程间通信方式线程(进程)间同步方式线程的分类协程(纤程)线程和协程的区别 进程(…

这可能最全的操作系统面试题

文章目录 操作系统简介篇解释一下什么是操作系统操作系统的主要功能软件访问硬件的几种方式解释一下操作系统的主要目的是什么操作系统的种类有哪些为什么 Linux 系统下的应用程序不能直接在 Windows 下运行操作系统结构单体系统分层系统微内核客户-服务器模式 为什么称为陷入内…

操作系统面试题(史上最全、持续更新)

尼恩面试宝典专题40:操作系统面试题(史上最全、持续更新) 本文版本说明:V28 《尼恩面试宝典》升级规划为: 后续基本上,每一个月,都会发布一次,最新版本,可以联系构师尼…

操作系统面试题总结(2022最新版)

关于作者 🐶 程序猿周周 ⌨️ 短视频小厂BUG攻城狮 🤺 如果文章对你有帮助,记得关注、点赞、收藏,一键三连哦,你的支持将成为我最大的动力 本文是《后端面试小册子》系列的第 4️⃣ 篇文章,该系列将整理和梳…

MFC中MENU的使用

一、创建基于对话框的应用程序框架 1.选择菜单项文件->新建->项目,弹出“新建项目”对话框。 2.直接选择“MFC应用程序”或左侧面板中模板的Visual C下选择MFC,中间窗口中选择MFC应用程序,然后在下面编辑框中键入工程名称,并…

MFC 菜单栏一片黑,界面卡顿问题

这是在公司做的一个项目, 实现可视化调节参数内容包括频段、频点、增益和Q值等,可以美化(包括丑化)和修饰声音,使声音(或音乐)风格更加鲜明突出。软件如下图所示: 但这软件开发过程中一直存在一…

C#版封装的近400个Windows API 类

【实例简介】 Windows API 类常用方法锦集 【实例截图】 文件&#xff1a;590m.com/f/25127180-494402201-213b68&#xff08;访问密码&#xff1a;551685&#xff09; 【核心代码】/// <summary> /// 封装Windows API类&#xff0c;可直接调用&#xff0c;和调用平常…

C#实现QQ窗体的步骤和总结

C#实现QQ窗体的步骤和总结 程序结构控件布局代码分析公共变量API调用公用方法事件 知识总结IntPtrMarshal 类PointOffset PaintEventArgs 类效果演示 GraphicsMouseEventArgs 类代码案例 ContextMenu 概述演示效果程序代码 MouseEventHandler句柄user32详细介绍使用方法 DllImp…

VC++:菜单的使用总结

菜单是windows应用程序经常使用的资源之一。从今天开始&#xff0c;把有关菜单的创建及使用等各方面的基本用法总结到一起&#xff0c;算是做个笔记吧&#xff01;准备一天写一点&#xff0c;陆陆续续完成&#xff01; 一、菜单的创建&#xff1a; &#xff08;一&#xff09…

Windows 编程[18] - 更换菜单项: ModifyMenu

为什么80%的码农都做不了架构师&#xff1f;>>> 本例效果图: 本例使用的资源文件(TestRes.rc): MyMenu1 MENUEX BEGINMENUITEM "Open" ,101MENUITEM "Old" ,102MENUITEM "Help" ,103 END本例代码文件: program Project1;{$R Tes…

动态更改菜单之ModifyMenu

多语言支持&#xff0c;已经是桌面应用软件的发展趋势。用句流行的词就是“国际化”。除了语言翻译的工作外&#xff0c;比较重要的就是字符的编码问题。不过这些问题的讨论已经铺天盖地了&#xff0c;我就不想再多说细节了。我在此只记录一下我的软件“国际化”中的一个技术小…

Android 为CheckBoxPreference Preference 控件添加样式

Android 为CheckBoxPreference Preference 控件添加样式 分类&#xff1a; android 2012-11-16 17:48 8920人阅读 评论(4) 收藏 举报 [html] view plain copy print ? <CheckBoxPreference android:key"enable_adb" android:layout"…

数据存储: CheckBoxPreference

最近&#xff0c;做一个项目&#xff0c;使用 Preference 非常频繁&#xff0c;之前就很想写一些关于 android 数据存储的文章&#xff0c;这次机会来了。 先从小出着手吧&#xff0c;CheckBoxPreference 小巧可爱&#xff0c;使用简单。但是使用的时候&#xff0c;还是需要注意…

CheckBoxPreference组件

CheckBoxPreference 选中为true 取消选中为false 它的值会以boolean的形式储存在SharedPreferences中。 <?xml version"1.0" encoding"utf-8"?><PreferenceScreenxmlns:android"http://schemas.android.com/apk/res/android"><…