Skip to content

操作系统★

操作系统概述、系统调用、用户态与内核态。

Updated View as Markdown
For humans

操作系统

操作系统是硬件和应用的中间层:管理 CPU、内存、磁盘、设备,给进程提供抽象(进程、文件、地址空间)。面试主线:操作系统管什么、系统调用怎么工作、用户态内核态为什么分。

操作系统管什么

资源 抽象 管理机制
CPU 进程/线程 调度
内存 地址空间 虚拟内存、分页
磁盘 文件 文件系统
设备 文件(一切皆文件) 设备驱动、IO

核心思想:用抽象隔离硬件差异,用机制管理资源竞争。应用只和抽象打交道,不用关心硬件细节。

用户态与内核态

系统调用: 用户态请求, 内核态执行

  • 用户态:应用运行,只能执行普通指令,访问受限(不能直接操作硬件)
  • 内核态:内核代码运行,可执行特权指令(IO、内存管理、中断)
  • 系统调用:用户态到内核态的唯一合法通道(read、write、fork、mmap)
  • 切换代价:保存/恢复上下文,有性能开销(所以减少系统调用是优化点)

为什么分:安全隔离。应用出错不能搞坏内核和其他进程;权限集中在内核,应用无法绕过。

系统调用

系统调用 作用
fork / exec 创建进程、加载程序
read / write 文件 IO
open / close 打开/关闭文件
mmap 内存映射
socket / connect / accept 网络

面试点:进程的视角里一切都是文件(fd 文件描述符),read/write 是统一的 IO 入口。每进程有文件描述符表,open 返回表项索引。

本分类地图

  • 进程与线程:并发的基本单元
  • 进程调度 / IPC / 同步互斥 / 死锁:进程的调度与协作
  • 内存管理 / 页面置换与 IO:内存与磁盘
  • 文件系统 / Linux 性能排查:存储与实战

面试追问

  1. 用户态和内核态的区别? 权限不同:用户态受限指令,内核态特权指令。系统调用是切换通道
  2. 为什么要有系统调用? 安全隔离:应用不能直接操作硬件,必须经内核检查后执行
  3. 系统调用开销大吗? 大:上下文切换。高 IO 场景减少系统调用是优化方向(批量读写、mmap)
  4. 一切皆文件? 进程视角:文件、设备、socket 都是 fd,read/write 统一操作。Linux 的设计哲学
  5. fork 做了什么? 复制父进程(写时复制 COW),返回子进程 pid。exec 加载新程序替换映像
Navigation

Type to search…

↑↓ navigate↵ selectEsc close