操作系统原理

返回计算机基础

操作系统(OS)是管理硬件资源、为上层应用提供抽象接口的系统软件,核心职责包括:进程管理、内存管理、文件系统、设备驱动和安全控制。


内核类型

类型说明代表
宏内核(Monolithic)所有系统服务运行在内核态,性能高但耦合重Linux、Unix
微内核(Microkernel)只保留最小内核,其余运行在用户态,稳定但 IPC 开销大Mach、QNX
混合内核兼顾两者,部分服务在内核态Windows NT、macOS XNU

系统调用

用户程序通过**系统调用(syscall)**请求内核服务,触发从用户态到内核态的模式切换(ring 3 → ring 0)。

用户程序 → 触发软中断(syscall 指令)
       → CPU 切换到内核态
       → 内核执行对应服务
       → 返回用户态,继续执行

常见分类:进程控制(fork/exec/exit)、文件操作(open/read/write)、内存管理(mmap/brk)、网络(socket/connect)。


CPU 调度

算法特点适用场景
FCFS(先来先服务)简单,有护航效应批处理
SJF(最短作业优先)平均等待时间最短,需预知执行时间批处理
轮转(Round Robin)公平,响应时间均匀,时间片大小关键分时系统
优先级调度高优先级先执行,可能饥饿实时/通用
多级反馈队列动态调整优先级,兼顾响应和吞吐Linux CFS 思想来源

调度指标:CPU 利用率、吞吐量、周转时间、等待时间、响应时间。


内存管理

每个进程拥有独立的虚拟地址空间,通过 MMU 映射到物理内存,实现隔离和保护。

虚拟地址空间(Linux 64 位)
┌─────────────┐ 高地址
│  内核空间    │ (用户态不可访问)
├─────────────┤
│  栈(↓)    │
│    ...      │
│  堆(↑)    │
├─────────────┤
│  BSS 段     │ 未初始化全局变量
│  数据段      │ 已初始化全局/静态变量
│  代码段      │ 只读,可执行
└─────────────┘ 低地址(0)

分页:将地址空间分为固定大小的页(通常 4 KB),通过页表映射物理帧;TLB 缓存热点映射加速转换;缺页中断时从磁盘换入。

页面替换:OPT(理论最优)→ LRU(实用近似)→ CLOCK(LRU 近似实现)。


文件系统

  • inode:存储文件元数据和数据块地址,不含文件名
  • 目录:文件名到 inode 的映射表
文件系统平台特点
ext4Linux日志、extent 树
XFSLinux大文件/高并发
NTFSWindows日志、ACL、压缩/加密
APFSmacOS写时复制、快照、加密

中断与异常

类型来源示例
硬件中断外部设备键盘输入、网卡收包、时钟中断
异常CPU 内部除零、缺页、非法指令
系统调用用户主动触发read()write()

中断发生:保存现场 → 跳转中断向量表 → 执行处理程序 → 恢复现场。


相关链接