操作系统基础
March 13, 2025About 4 min
操作系统是管理计算机硬件与软件资源的计算机程序,同时也是计算机系统的内核与基石。
进程管理
进程与线程
进程与线程的基本概念
- 进程(Process):是操作系统进行资源分配和调度的基本单位,每个进程都有独立的内存空间。
- 线程(Thread):是CPU调度和分派的基本单位,线程共享所属进程的资源。
在Java中:
- 一个JVM实例就是一个进程
- Java线程是映射到操作系统的原生线程上的
- 通过
java.lang.Thread
类可以创建和管理线程
进程调度
常见的进程调度算法
- 先来先服务(FCFS):按照进程到达的先后顺序进行调度
- 短作业优先(SJF):优先调度运行时间短的进程
- 优先级调度:Java线程的优先级(1-10)就是基于此实现
- 时间片轮转:多线程并发执行的基础
- 多级反馈队列:结合多个队列的优势
进程通信
进程间通信(IPC)的主要方式:
- 管道(Pipe):用于父子进程间通信
- 消息队列:进程间传递格式化数据
- 共享内存:多个进程共享同一块内存空间
- 信号量:用于进程同步和互斥
- Socket:网络通信的基础
Java中的进程通信主要通过Socket或者借助中间件实现。
内存管理
内存管理基础
内存管理的主要功能
- 内存分配与回收:与Java的堆内存管理类似
- 地址转换:虚拟地址到物理地址的映射
- 内存保护:进程间内存隔离
- 内存共享:共享内存段
虚拟内存
虚拟内存的重要性
- 让物理内存扩充成更大的虚拟内存
- 提供内存隔离,保护进程地址空间
- 在Java中,堆内存的动态扩展机制也是基于虚拟内存实现的
页面置换算法
常见的页面置换算法:
- 最佳置换算法(OPT):理论最优,实际无法实现
- 最近最少使用(LRU):置换最长时间未使用的页面
- 先进先出(FIFO):置换最早进入内存的页面
JVM的垃圾回收算法在设计时也参考了这些经典算法。
文件系统
文件管理
文件系统的主要功能
- 文件存储:数据的物理组织
- 目录管理:文件的逻辑组织
- 文件共享:多用户访问控制
- 文件保护:访问权限控制
Java的File
类和NIO包提供了对文件系统的访问接口。
磁盘调度
常见的磁盘调度算法:
- 先来先服务(FCFS):按请求顺序访问磁盘
- 最短寻道时间优先(SSTF):优先访问最近的磁道
- 扫描算法(SCAN):电梯算法,双向扫描磁道
I/O管理
I/O控制方式
I/O控制的主要方式
- 程序直接控制:CPU轮询等待I/O完成
- 中断驱动:I/O完成时通过中断通知CPU
- DMA方式:直接内存访问,减少CPU干预
- 通道控制方式:专门的I/O处理器
Java的NIO(New I/O)就是基于操作系统的非阻塞I/O实现的。
设备管理
操作系统对设备管理的主要任务:
- 设备的分配与回收
- 设备驱动程序管理
- 设备独立性保证
Linux系统基础
系统调用
重要的系统调用
- 进程控制:fork、exec、wait等
- 文件操作:open、read、write等
- 设备操作:ioctl等
- 信息维护:getpid、alarm等
- 通信:pipe、shmget等
Java通过JNI(Java Native Interface)间接使用这些系统调用。
文件权限
Linux文件权限的基本概念:
- 读(r)、写(w)、执行(x)权限
- 用户(u)、组(g)、其他(o)的权限分配
- 权限的数字表示方式
Java开发中的应用
- 在部署Java应用时需要正确设置文件权限
- 使用
java.nio.file.attribute
包可以操作文件权限 - 容器化部署时需要特别注意权限问题