操作系统复习

操作系统复习

Posted by Junvate on April 26, 2025

参考 https://blog.csdn.net/m0_53140426/article/details/140251382

面试题集

1.操作系统的功能是什么 哪些模块? 操作系统的特征?

  • 内存管理:为进程分配回收内存空间,提供内存保护机制,支持虚拟内存,实现地址映射
  • 进程管理:创建和终止进程,进程调度,进程同步与通信,处理死锁
  • 文件系统管理:文件的创建、删除、读写和保护,目录的组织和管理,文件存储空间的分配和回收
  • 输入输出设备管理:设备驱动程序管理,提供设备无关性接口,设备分配与释放,缓冲区管理
  • 网络系统管理:网络协议支持,网络设备控制,网络资源分配,网络通信服务 操作系统的特征
  • 并发性:多个程序同时执行
  • 共享性:系统资源被多个程序共同使用
  • 虚拟性:将物理资源抽象为逻辑资源
  • 异步性:程序的执行不是一次性完成的,而是走走停停

2.什么是并行和并发

  • 并发(Concurrency):一个cpu交替执行不同的任务
    • 定义:指在同一时间间隔内,多个任务交替执行的能力
    • 特点:单处理器也能实现并发,通过时间片轮转等调度算法交替执行不同任务
    • 适用场景:I/O密集型应用,如Web服务器处理多个连接请求
    • 例子:单核CPU运行多个应用程序
  • 并行(Parallelism):多个cpu同时执行不同的任务
    • 定义:指在同一时刻,多个任务同时执行的能力
    • 特点:需要多核或多处理器硬件支持,真正的同时执行
    • 适用场景:计算密集型应用,如图像处理、科学计算
    • 例子:多核CPU同时处理图像的不同区域

并发与并行的比较

| 特性 | 并发 | 并行 | | — | — | — | | 执行方式 | 交替执行不同的任务 | 同时执行 | | 硬件要求 | 单核即可 | 需要多核/多处理器 | | 设计复杂度 | 需要处理同步和通信 | 需要处理任务划分和负载均衡 | | 资源利用 | 提高CPU利用率 | 提高吞吐量 | | 扩展性 | 受单处理器性能限制 | 可通过增加处理器扩展 |

3.用户态,内核态?

  • cpu指令分为(非)特权指令,用户态只能执行非特权指令
  • 用户态无法直接访问硬件
  • 当用户态执行系统调用的时候发生异常会从用户态切换到内核态,系统调用完成之后会从内核态切换回用户态

4.中断和系统调用的区别?

5.进程和线程的区别

  • 进程是内存资源分配的基本单位,线程是cpu调度的基本单位
  • 不同进程可以并发,同一进程的不同线程也可以并发,不同进程的不同线程也可以并发
  • 进程之间进行切换的时候,需要保存当前的上下文(例如寄存器值,程序计数器等等)切换就会产生一些开销,但是线程之间切换开销较小,因为共享同一个内存空间
  • 同一进程下的不同线程可以共享进程的资源

6.进程调度的策略有哪些?

  • 先来先服务:每次从队列中选择最早进入队列的作业调入内存,分配资源创建进程,这样对一些后来的短作业不友好
  • 短作业优先:选择执行时间最短的作业进行调度, 这样会导致长作业饥饿现象
  • 优先权调度: 赋予优先级,优先级高的先调度分配资源创建进程,但是又分为抢占式和非抢占式
  • 轮转算法:在每次调度时,处理机将分配给队列的第一个进程,并且令其执行一个时间片长度。当时间片执行完时,由计时器发出一个时钟请求,此时调度程序停止该程序并将其移动至队尾;

7.进程之间通信的方式

  • 管道:管道在内存中创建,前一个进程在管道前面写,后一个进程在管道后面读,完成通信。分为匿名管道(需要有血缘关系)和命名管道。管道只能支持半双工通信,支持两个方向传输,但是不支持两个方向同时传输
  • 消息队列:
    先进先出队列实现异步通信
  • 信号量机制:
    通过信号量机制控制多个线程对有限个共享资源的访问权限
  • 共享内存: 这是最快的通信方式,两个进程分别拿出一块虚拟内存地址映射到同一个物理内存zhong
  • socket: 跨网络的两个进程进行通信

8.什么是死锁,死锁产生的原因是什么?必要条件是什么?

  • 死锁是指多个进程因为竞争资源造成了相互等待的局面,没有外力的作用这些进程无法继续推进
  • 必要的条件:
    • 1.互斥条件,进程对所获得的资源必须互斥访问,同一时刻只能有一个资源进行访问,
    • 2.不可抢占式,进程所获得的资源在完成之前不会被其他进程抢占,只能自己主动释放资源
    • 3.占有并等待: 一个进程必须持有资源,并且在等待其他进程正在持有的资源
    • 4..环路等待条件 存在一个进程集合{p1,p2,,,pn},p1进程正在等待p2所持有的资源,以此类推形成一个闭环资源等待链

9.解决死锁的条件是什么?

  • 死锁的预防:也就是破坏产生死锁的四个必要条件
  • 死锁的避免:银行家算法
  • 死锁的检测:构造资源分配表看看是否能够完全简化
  • 死锁的解除:撤销一部分进程使得死锁解除

10.简述一下内存空间的分配

  • 传统操作系统分为连续分配和非连续分配:
  • 连续分配就是一个进程是连续存储的不会拆分为不同的内存块,但是这会导致内存碎片问题导致内存利用率低
    • 首次适应
    • 最佳适应
    • 最坏适应
  • 非连续分配就是把进程拆成若干个块,允许一个进程的内存空间在物理上不连续,离散地存放在内存之中
    • 分页存储管理
    • 分段存储管理
    • 段页式存储管理
  • 现代操作系统分配内存采用了虚拟存储技术
  • 虚拟内存的核心思想是为每一个进程提供独立隔离的空间,空间是逻辑上的 是虚拟的,实际的数据还是存放在物理内存中

11.讲解一下动态分配分区算法

  • 关键词:空闲分区表,适应

  • 首次适应算法(first fit) 从空闲表分区开始查找,找到第一个大于等于进程所需空间大小的空闲分区分配给该进程

  • 最佳适应算法(best fit) 遍历整个空闲分区表,找到大小最接近(大于等于)进程所需要分配的空间大小的空闲分区进行分配,这样可以避免产生很大的碎片但是可能导致碎片比较多。时间的开销也比较大

  • 最差适应算法(worst fit) 遍历整个空闲分区表,找到最大的空闲分区进行分配,

  • 邻近适应算法(next fit) 首次适应式从头开始查找只要找到比需要的大就直接分配,临近适应算法类似于首次适应算法,但是是从上一次分配的空闲分区开始查找,这样可以避免对起始位置附近的大分区进行过度的分割。可以更加均匀的使用空闲分区
  • 例子
    起始地址100 500 900 1200
    大小 200 300 150 400

现在有三个进程依次请求内存: 进程 A 需要 120 KB 进程 B 需要 250 KB 进程 C 需要 80 KB

  • first-fit:A从100到220 B从500到750 C从220到300
  • best-fit:A从900到1020 B从500到750 C从100到180
  • worst-fit:A从1200到1320 B从500到750 C从1320到1400
  • next-fit:A从100到220 B从500到750 C从900到980

12.讲解一下非连续型内存分配

关键词:逻辑地址空间,物理内存空间

  • 分页 将逻辑地址空间和物理内存空间都划分为固定的大小进行管理的存储管理办法
    • page:进程的逻辑地址空间被划分为相同大小的单元
    • page frame:物理内存空间被划分为相同大小的单元,页框是物理上的概念是内存分配的基本单位
    • page table:为了实现逻辑地址到物理地址的转化,操作系统为每一个进程都维护一个页表,记录了进程的每个page装入到物理内存的哪个page frame中
  • 分段
    • 进程的逻辑地址空间被划分为若干个逻辑上独立的单元
    • 操作系统为每个进程维护一个段表。段表中记录了进程的每个段在物理内存中的起始地址和段的长度,以及段的保护属性。段表通常存储在内存中。
  • 段页式