一、操作系统与 JDK、JVM、JRE 的概念与区别
1. 什么是操作系统(Operating System, OS)
定义
操作系统是管理计算机硬件与软件资源的系统软件,同时为用户和应用程序提供统一的接口与运行环境。它是计算机系统的核心,负责协调硬件与软件的工作。
主要功能
- 进程管理:创建、调度、终止进程,分配 CPU 时间。
- 内存管理:分配与回收内存,提供虚拟内存机制。
- 文件系统管理:提供文件的存储、读取、权限控制等功能。
- 设备管理:管理输入输出设备,提供驱动程序支持。
- 用户接口:提供命令行界面(CLI)或图形用户界面(GUI)。
常见操作系统
- Windows 系列
- Linux/Unix 系列
- macOS
- Android、iOS(移动端)
2. 什么是进程(Process)
定义
进程是操作系统进行资源分配和调度的基本单位,是程序在计算机上的一次执行过程。
它包含了程序代码、运行时数据、程序计数器、寄存器状态、堆栈等信息。
特点
- 独立性:每个进程有独立的地址空间和资源。
- 动态性:进程是程序的一次执行过程,有生命周期。
- 并发性:多个进程可以在单个 CPU 上交替执行(通过时间片轮转等调度算法)。
3. 什么是线程(Thread)
定义
线程是操作系统调度的最小单位,是进程中的一个执行流。一个进程可以包含多个线程,这些线程共享进程的资源(如内存、文件句柄等)。
特点
- 轻量级:线程创建和切换的开销比进程小。
- 共享性:同一进程内的线程共享内存和资源。
- 并发性:多线程可以并发执行,提高程序响应速度。
4. 线程与进程的区别
| 对比项 | 进程 | 线程 |
|---|---|---|
| 定义 | 程序的一次执行过程,资源分配的基本单位 | 进程中的一个执行流,CPU 调度的基本单位 |
| 资源 | 拥有独立的内存空间和系统资源 | 共享进程的内存和资源 |
| 开销 | 创建、销毁和切换开销大 | 创建、销毁和切换开销小 |
| 通信 | 需要进程间通信(IPC)机制 | 直接通过共享内存通信 |
| 稳定性 | 一个进程崩溃不影响其他进程 | 一个线程崩溃可能导致整个进程崩溃 |
5. JDK、JVM、JRE 的概念与区别
5.1 JVM(Java Virtual Machine)
- 定义:Java 虚拟机,是 Java 程序的运行环境,负责将字节码(.class 文件)解释或编译为机器码执行。
- 作用:
- 跨平台(一次编译,到处运行)
- 内存管理(垃圾回收)
- 安全性(字节码验证)
5.2 JRE(Java Runtime Environment)
- 定义:Java 运行环境,包含 JVM 以及运行 Java 程序所需的核心类库和支持文件。
- 作用:提供运行 Java 应用的环境,但不包含编译工具。
5.3 JDK(Java Development Kit)
- 定义:Java 开发工具包,包含 JRE、编译器(javac)、调试工具等。
- 作用:用于开发、编译、调试 Java 程序。
5.4 区别总结
| 对比项 | JVM | JRE | JDK |
|---|---|---|---|
| 包含内容 | 仅虚拟机 | JVM + 核心类库 | JRE + 开发工具 |
| 用途 | 运行字节码 | 运行 Java 程序 | 开发 Java 程序 |
| 是否包含编译器 | 否 | 否 | 是 |
| 面向对象 | 程序运行 | 程序运行 | 程序开发 |
6. 面试小结与建议
- 操作系统部分:重点掌握进程、线程的概念与区别,以及操作系统的核心功能。
- Java 部分:理解 JVM、JRE、JDK 的关系,能画出它们的包含关系图(JDK ⊃ JRE ⊃ JVM)。
- 延伸:可进一步学习进程调度算法、线程同步机制、JVM 内存结构等。