操作系统概述
操作系统(Operating System,OS)是管理计算机硬件与软件资源的系统软件,是应用程序与硬件之间的大管家。面试里的进程线程、内存、文件系统等所有专题,都以理解操作系统的基本角色为前提。
操作系统是什么
没有操作系统时,程序要直接操作 CPU、内存、磁盘,既繁琐又危险。操作系统向上给应用程序提供统一易用的接口(系统调用),向下管理 CPU、内存、磁盘、网卡等硬件。它的职责可概括为四大管理:
| 管理对象 | 要解决的问题 | 典型机制 |
|---|---|---|
| 进程管理 | 多个程序如何轮流使用 CPU | 进程/线程、调度器 |
| 内存管理 | 内存如何隔离、如何扩展 | 虚拟内存、分页 |
| 文件管理 | 数据如何持久化与组织 | 文件系统、目录树 |
| 设备管理 | 外设如何统一访问 | 设备驱动、中断 |
用户态与内核态
为保安全,CPU 划分了特权级别。内核态运行操作系统内核代码,可执行特权指令、访问全部内存;用户态运行普通应用程序,访问受限,必须通过系统调用(如 read、write、fork)请求内核服务。
用户程序(用户态)
│ 系统调用:open / read / write / socket
▼
内核(内核态):进程调度、内存管理、设备驱动、网络协议栈
▼
硬件:CPU / 内存 / 磁盘 / 网卡
从用户态切换到内核态需要一次陷入(trap),有一定开销。所以"减少系统调用、减少上下文切换"是高性能服务调优的常见方向。
内核与 shell、发行版的关系
- 内核:操作系统的核心,负责资源管理;Linux 就是"内核",遵循 GPL 开源协议。
- shell:命令行解释器,是用户与操作系统交互的门面,如 bash、zsh。
- 发行版:内核 + 常用软件打包而成,如 Ubuntu、CentOS、Debian——它们内核相同,外围工具不同。
一句话:内核是发动机,发行版是整车,shell 是方向盘。
主流操作系统一览
| 系统 | 内核来源 | 典型用途 |
|---|---|---|
| Linux | 开源 Linux | 服务器、Android 底层、云原生事实标准 |
| Windows | Windows NT | 桌面办公、政企环境 |
| macOS | Unix 系(XNU) | 桌面开发 |
| Android / iOS | Linux / Unix 系 | 移动设备 |
面试常问的几个基础概念
- 并发与并行:并发是单核上多个进程"看似同时"交替运行;并行是多核真正同时执行。
- 中断:硬件主动通知 CPU"有事发生"的机制,是操作系统响应外设、实现抢占的基础。
- 系统调用与库函数:系统调用进入内核(如 read),库函数可能只是封装(如 printf 内部调用 write)。
- 开机启动过程(简述):BIOS/UEFI → 引导加载程序 → 加载内核 → 启动第一个进程(Linux 为 init/systemd)。
小结:操作系统 = 资源管理器 + 服务提供者。抓住"四大管理 + 用户态/内核态 + 系统调用"这条主线,后面学习进程调度、内存管理、文件系统、死锁等专题就都有了可挂靠的框架。