操作系统查漏补缺

yin_bo_ Lv3

1. 操作系统基础

什么是操作系统?

  • 通过以下三点可以概括操作系统

    1. 操作系统(Operating System,简称OS)本质上是运行在计算机上的软件程序,主要管理计算机软硬件资源
    2. 操作系统存在屏蔽了硬件层的复杂性
    3. 操作系统的内核(Kernel)是操作系统的核心部分
      他负责系统的内存,硬件设备,文件系统,应用程序的管理。
      内核是连接应用程序和硬件的桥梁,决定着系统的性能和稳定性
  • 操作系统内核(Kernel) 和 中央处理器(CPU) 的区别

    • CPU主要提供运算,处理各种命令的能力。
    • 内核(Kernel) 主要负责系统管理,比如内存管理,他屏蔽了对硬件的操作

2. 用户态,内核态

什么是用户态和内核态

  • 根据进程访问资源的特点,我们可以把进程在系统上的运行分为两个级别
    • 用户态(User Mode):用户态的进程可以直接读取用户程序的数据,有较低的权限
      当应用程序需要执行某些特殊操作,比如读写磁盘,网络通讯,就需要向OS发起系统调用请求,进入内核态

    • 内核态(Kernel Mode):内核态的进程拥有非常高的权限,可以访问任何资源,内存空间,设备,驱动程序等。
      OS接受进程的系统调用请求后,线程就会从用户态切换到内核态,执行相应的系统调用,并将结果返回给进程,最后从内核态切换到用户态。

只有内核态不行吗

  • 两个状态的设计为了安全与稳定
    • CPU会有一些比较危险的指令,比如内存分配,IO处理,我们需要限制这些危险指令只能内核态运行。这些只能由操作系统内核态执行的指令也被叫做 特权指令 。

用户态切换到内核态的三种方式

  1. 系统调用(Trap):最主要的方式,是应用程序主动发起的
    举个例子:
    我们的程序需要读取一个文件发送网络数据
    但是无法直接操作磁盘或网卡
    所以调用了OS提供的接口(如read(),send()),这样会将用户态转化为内核态

  2. 中断(Interrupt):是被动的,由硬件触发
    举个例子:
    硬盘完成数据读取会给CPU发送一个中断信号
    CPU会暂停当前用户态程序,切换到内核态去处理这个中断

  3. 异常(Exception):也是被动的,由程序自身错误引起
    举个例子
    我们的代码执行了一个除以0的操作
    CPU捕获了这个异常
    用户态会切换到内核态去处理

3. 进程,线程

  • 进程:程序的一次执行过程,是资源分配的基本单位,拥有独立的地址空间
  • 线程:CPU调度的基本单位,是进程内的一个执行流,共享进程的公共资源
  • 区别:进程资源独立,创建切换开销大
    线程资源共享,开销小

4. 进程有哪些状态?它们之间是如何转换的

基本状态:就绪(已具备运行条件,等待CPU)运行(占用CPU执行)阻塞(等待某事件,如I/O)

转换关系:

  • 就绪 → 运行:调度程序分配CPU。
  • 运行 → 就绪:时间片用完或被抢占。
  • 运行 → 阻塞:等待事件(I/O请求)。
  • 阻塞 → 就绪:事件完成(I/O结束)。

5. 什么是死锁?产生死锁的四个必要条件是什么

死锁:多个进程因竞争资源而互相等待,无法继续推进

  • 必要条件:

    1. 互斥:资源一次只能被一个进程占用。
    2. 保持并等待:进程持有资源并等待其他资源。
    3. 不剥夺:已分配的资源不能被强制剥夺。
    4. 循环等待:存在进程资源的循环等待链。

6. 如何避免死锁?请介绍几种常见的死锁预防策略

避免死锁:通过算法(如银行家算法)分配资源,确保系统处于安全状态。

预防策略:

  1. 破坏“保持并等待”:进程一次性申请所有所需资源
  2. 破坏“不剥夺”:允许剥夺资源(如CPU可抢占)
  3. 破坏“循环等待”:对资源类型进行线性排序,按序申请
  4. 破坏“互斥”通常难以实现,因为有些资源天然互斥。

7. 什么是虚拟内存

  • 虚拟内存:将每个进程的虚拟地址空间映射到物理内存,通过页表等机制管理,可使用磁盘作为后备存储。
  • 解决的问题:
  • 内存隔离,保护进程间不干扰。
  • 扩展可用内存,当物理内存不够用时,可以利用磁盘充当,将物理内存页(通常大小为 4 KB)保存到磁盘文件(会影响读写速度)
  • 简化内存管理: 进程都有一个一致且私有的虚拟地址空间,程序员不用和真正的物理内存打交道

没有虚拟内存的问题
没有虚拟内存,程序直接访问或操作的都是物理内存,会造成很多问题

  1. 用户线程可以访问任意物理线程,可能会操作系统运行必须的内存
  2. 同时运行多个程序容易崩溃

9. 软链接和硬链接的区别是什么

硬链接:多个目录项指向同一个inode,文件删除需所有链接删除,不能跨文件系统,不能链接目录

软链接(符号链接):是一个特殊文件,存储指向另一文件或目录的路径,可跨文件系统,可链接目录,原文件删除后链接失效。

10. 软链接和硬链接的区别是什么

  • 一种IO优化技术,避免CPU在用户态和内核态之间多次复制数据
    通过DMA直接将数据从磁盘或网络传输到目标缓冲区,或利用页表映射共享内存,减少上下文切换和数据拷贝,提升性能
  • 标题: 操作系统查漏补缺
  • 作者: yin_bo_
  • 创建于 : 2026-03-24 21:26:38
  • 更新于 : 2026-03-27 22:40:38
  • 链接: https://www.blog.yinbo.xyz/2026/03/24/面试题/操作系统查漏补缺/
  • 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。