导论
什么是软件?
软件是用代码解决实际问题的一种方式,比如写一个记事本程序用于记录信息。
如何写出一个软件?
写软件需要我们程序员兼修 内功心法 与 外功招式。
- 内功心法:Java基础语法、数据结构、数据库、计算机基础等核心知识。
- 外功招式:API、库、框架。比如模拟鼠标点击操作,就需要调用系统提供的API。
比如图形化程序可以使用 Qt,开发安卓应用则需掌握 Android SDK。
内外兼修,才能写出有实际价值的应用程序。
我们需要了解计算机是如何工作的
CPU(核心硬件)
CPU 是计算机的大脑。其内部由门电路构成半加器、全加器,再构建成加法器等模块。
对于 Java 程序员来说无需了解过于底层的结构,因为 Java 虚拟机会封装底层调用。
CPU 架构
- x86 架构:如 Intel、AMD,主要用于 PC 和服务器。
- ARM 架构:如苹果 M 系列、高通芯片,常见于移动设备和部分笔记本电脑。
两者主要区别在于 指令集。
多核与超线程
现代 CPU 多为多核设计,并搭载超线程技术。比如 8 核 CPU 可模拟为 16 线程执行,提升并发能力。
CPU 频率
CPU 频率(GHz)表示其执行速度,是每秒指令数的粗略估计。频率具有动态变化特性,取决于负载情况,称为 睿频技术。
缓存与流水线
因为内存速度不如 CPU,我们引入了 缓存 和 流水线技术:
- 缓存:存储即将使用的数据,速度远快于内存。
- 流水线:多个指令阶段并行处理,提高效率。
指令集与执行流程
- x86:复杂指令集
- ARM:精简指令集
操作系统
操作系统是管理硬件资源并为应用程序提供运行环境的软件。
常见操作系统:
- Windows
- Linux
- macOS
- iOS
- Android
Java 程序员通过 JVM 调用系统 API,从而实现跨平台运行。
小结
- 冯诺依曼架构:将指令加载至内存,由 CPU 执行。因访问效率低,引入了缓存与流水线。
- 操作系统:抽象封装硬件与软件资源,为程序提供统一运行接口。
- 进程(任务):是系统分配资源的最小单位,支持多任务并发执行。
进程管理
进程(Process) 是操作系统中正在运行的程序,是资源调度的核心单位。
多任务操作系统
允许多个程序同时运行,如浏览器、画图板、音乐播放器同时开启。
PCB(进程控制块)
操作系统通过结构体(如 Linux 的 task_struct
)来描述进程信息。多个 PCB 使用链表等数据结构进行组织。
关键属性
- pid:进程唯一标识。
- 内存指针:描述进程使用哪些内存区域。
- 文件描述表:管理进程与外部文件的交互。
- CPU 占用:表示进程在 CPU 上的运行时间。
分时复用与并发
同一时刻,每个核心仅能执行一个进程。多个进程通过快速切换实现“并发”,多个核心支持“并行”。