操作系统查漏补缺
1. 操作系统基础
什么是操作系统?
通过以下三点可以概括操作系统
- 操作系统(Operating System,简称OS)本质上是运行在计算机上的软件程序,主要管理计算机软硬件资源
- 操作系统存在屏蔽了硬件层的复杂性
- 操作系统的内核(Kernel)是操作系统的核心部分
他负责系统的内存,硬件设备,文件系统,应用程序的管理。
内核是连接应用程序和硬件的桥梁,决定着系统的性能和稳定性
操作系统内核(Kernel) 和 中央处理器(CPU) 的区别
- CPU主要提供运算,处理各种命令的能力。
- 内核(Kernel) 主要负责系统管理,比如内存管理,他屏蔽了对硬件的操作
2. 用户态,内核态
什么是用户态和内核态
- 根据进程访问资源的特点,我们可以把进程在系统上的运行分为两个级别
用户态(User Mode):用户态的进程可以直接读取用户程序的数据,有较低的权限
当应用程序需要执行某些特殊操作,比如读写磁盘,网络通讯,就需要向OS发起系统调用请求,进入内核态内核态(Kernel Mode):内核态的进程拥有非常高的权限,可以访问任何资源,内存空间,设备,驱动程序等。
OS接受进程的系统调用请求后,线程就会从用户态切换到内核态,执行相应的系统调用,并将结果返回给进程,最后从内核态切换到用户态。
只有内核态不行吗
- 两个状态的设计为了安全与稳定
- CPU会有一些比较危险的指令,比如内存分配,IO处理,我们需要限制这些危险指令只能内核态运行。这些只能由操作系统内核态执行的指令也被叫做 特权指令 。
用户态切换到内核态的三种方式
系统调用(Trap):最主要的方式,是应用程序主动发起的
举个例子:
我们的程序需要读取一个文件或发送网络数据
但是无法直接操作磁盘或网卡
所以调用了OS提供的接口(如read(),send()),这样会将用户态转化为内核态中断(Interrupt):是被动的,由硬件触发
举个例子:
硬盘完成数据读取会给CPU发送一个中断信号
CPU会暂停当前用户态程序,切换到内核态去处理这个中断异常(Exception):也是被动的,由程序自身错误引起
举个例子
我们的代码执行了一个除以0的操作
CPU捕获了这个异常
用户态会切换到内核态去处理
3. 进程,线程
- 进程:程序的一次执行过程,是资源分配的基本单位,拥有独立的地址空间
- 线程:CPU调度的基本单位,是进程内的一个执行流,共享进程的公共资源
- 区别:进程资源独立,创建切换开销大
线程资源共享,开销小
4. 进程有哪些状态?它们之间是如何转换的
基本状态:就绪(已具备运行条件,等待CPU)、运行(占用CPU执行)、阻塞(等待某事件,如I/O)。
转换关系:
- 就绪 → 运行:调度程序分配CPU。
- 运行 → 就绪:时间片用完或被抢占。
- 运行 → 阻塞:等待事件(I/O请求)。
- 阻塞 → 就绪:事件完成(I/O结束)。
5. 什么是死锁?产生死锁的四个必要条件是什么
死锁:多个进程因竞争资源而互相等待,无法继续推进。
必要条件:
- 互斥:资源一次只能被一个进程占用。
- 保持并等待:进程持有资源并等待其他资源。
- 不剥夺:已分配的资源不能被强制剥夺。
- 循环等待:存在进程资源的循环等待链。
6. 如何避免死锁?请介绍几种常见的死锁预防策略
避免死锁:通过算法(如银行家算法)分配资源,确保系统处于安全状态。
预防策略:
- 破坏“保持并等待”:进程一次性申请所有所需资源。
- 破坏“不剥夺”:允许剥夺资源(如CPU可抢占)。
- 破坏“循环等待”:对资源类型进行线性排序,按序申请。
- 破坏“互斥”通常难以实现,因为有些资源天然互斥。
7. 什么是虚拟内存
- 虚拟内存:将每个进程的虚拟地址空间映射到物理内存,通过页表等机制管理,可使用磁盘作为后备存储。
- 解决的问题:
- 内存隔离,保护进程间不干扰。
- 扩展可用内存,当物理内存不够用时,可以利用磁盘充当,将物理内存页(通常大小为 4 KB)保存到磁盘文件(会影响读写速度)
- 简化内存管理: 进程都有一个一致且私有的虚拟地址空间,程序员不用和真正的物理内存打交道
没有虚拟内存的问题
没有虚拟内存,程序直接访问或操作的都是物理内存,会造成很多问题
- 用户线程可以访问任意物理线程,可能会操作系统运行必须的内存
- 同时运行多个程序容易崩溃
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 进行许可。