2022新版计算机基础,计算机组成原理+操作系统+网络

AI摘要
【知识分享】本文系统梳理2022年视角下计算机组成原理、操作系统、计算机网络三大核心板块,涵盖冯·诺依曼体系、Cache与存储层次、进程线程、虚拟内存、TCP/IP协议、HTTP演进等要点,兼顾考研408与面试实战,强调原理理解、知识串联与动手实践,并给出学习顺序与资源建议。

2022 新版计算机基础:计算机组成原理 + 操作系统 + 计算机网络精讲

计算机基础是程序员绕不开的”内功”。本文以 2022 年主流技术视角,系统梳理计算机组成原理、操作系统、计算机网络三大核心板块,兼顾考研 408 与面试实战需求。

一、为什么 2022 年还要重学计算机基础

很多人会问:框架天天更新,为什么计算机基础还要反复学?原因有三:

  1. 技术会过时,原理不会。Vue3 会变,但”进程与线程”几十年不变。

  2. 面试必考。大厂一面、二面几乎必问 TCP 三次握手、进程调度、虚拟内存。

  3. 排查问题的底层能力。CPU 飙高、内存泄漏、网络抖动,最终都要回到这些知识。

2022 年新版的意义在于:结合现代硬件(多核、SSD、云原生)和新场景(容器、微服务、高并发)重新理解经典理论


二、计算机组成原理

2.1 冯·诺依曼体系结构

现代计算机的基石,核心思想:

  • 存储程序:程序和数据一样存在内存里。

  • 五大部件:运算器、控制器、存储器、输入设备、输出设备。

  • 以运算器为中心(现代计算机已演变为以存储器为中心)。

冯·诺依曼瓶颈:CPU 与内存之间的带宽限制。这催生了 Cache、多级存储体系。

2.2 数据的表示与运算

  • 原码、反码、补码:计算机用补码表示整数,因为可以把减法变加法,简化电路。

  • 浮点数 IEEE 754符号位 + 阶码 + 尾数。经典问题 0.1 + 0.2 !== 0.3 就源于此。

  • 定点数与浮点数:定点运算快,浮点范围大。

实战意义:理解浮点误差,才能正确做金额计算(用 BigDecimal 或整数分)。

2.3 存储系统:Cache 与内存

存储层次

text

寄存器 > Cache(L1/L2/L3) > 内存 > SSD > HDD
速度递减,容量递增,价格递减

Cache 映射方式

  • 直接映射:简单但冲突多。

  • 全相联映射:灵活但硬件复杂。

  • 组相联映射:折中方案,最常用。

局部性原理

  • 时间局部性:刚访问的数据很可能再访问。

  • 空间局部性:访问了 A,很可能访问 A 旁边的数据。

实战意义:为什么遍历二维数组,按行遍历比按列快?因为按行符合空间局部性,Cache 命中率高。

c

// 快:按行访问,连续内存
for (int i = 0; i < N; i++)
for (int j = 0; j < N; j++)
sum += a[i][j];

// 慢:按列访问,跨行跳跃
for (int j = 0; j < N; j++)
for (int i = 0; i < N; i++)
sum += a[i][j];

2.4 CPU 与指令系统

  • 指令周期:取指 → 译码 → 执行 → 访存 → 写回。

  • 流水线:多条指令重叠执行,提升吞吐。冒险分三类:结构冒险、数据冒险、控制冒险。

  • CISC vs RISC:x86 是 CISC,ARM 是 RISC。手机、M1/M2 芯片都是 ARM。

  • 多核与超线程:一个物理核通过超线程模拟两个逻辑核,提升并行度。

实战意义:为什么单核性能提升变慢,大家转向多核?因为功耗墙和频率墙。这也解释了为什么并发编程越来越重要。


三、操作系统

3.1 操作系统概述

四大功能:进程管理、内存管理、文件管理、设备管理。

用户态与内核态

  • 用户态:应用程序运行,权限受限。

  • 内核态:操作系统核心,可执行特权指令。

  • 系统调用:用户态进入内核态的唯一入口。

实战意义:频繁系统调用(如 read/write)开销大,所以有了缓冲区、批量读写。

3.2 进程与线程

核心区别

维度 进程 线程
资源 独立地址空间 共享进程资源
开销 创建/切换大 创建/切换小
通信 IPC(管道、消息队列、共享内存) 直接共享变量
崩溃影响 相互隔离 一个线程崩溃可能拖垮进程

进程状态:创建 → 就绪 → 运行 → 阻塞 → 终止。

调度算法

  • 先来先服务(FCFS)

  • 短作业优先(SJF)

  • 时间片轮转(RR)

  • 多级反馈队列(现代 OS 主流)

线程实现模型

  • 用户级线程:切换快,但一个阻塞全阻塞。

  • 内核级线程:切换慢,但可真正并行。

  • 混合模型:如 Go 的 GMP、Java 的虚拟线程(2022 年 JDK 19 预览)。

3.3 内存管理

虚拟内存:每个进程都有独立的虚拟地址空间,通过页表映射到物理内存。

分页 vs 分段

  • 分页:固定大小,解决外部碎片。

  • 分段:按逻辑划分,便于共享和保护。

  • 段页式:先分段再分页,兼顾两者。

页面置换算法

  • FIFO:简单,但有 Belady 异常。

  • LRU:最近最少使用,效果好但实现成本高。

  • LFU:最少使用频率。

  • Clock:LRU 的近似,实际常用。

实战意义:为什么 Redis 用 LRU/LFU 做淘汰策略?为什么数据库 Buffer Pool 用改进 LRU?都是这套理论的应用。

3.4 文件系统与 IO

  • 文件组织:连续分配、链式分配、索引分配。

  • inode:Linux 中文件的元数据,文件名在目录项中,指向 inode。

  • IO 模型:阻塞 IO、非阻塞 IO、IO 多路复用(select/poll/epoll)、异步 IO。

epoll 为什么快

  • select/poll 需要遍历所有 fd。

  • epoll 用红黑树管理 fd,就绪事件用回调,只返回活跃的 fd。

  • 这就是 Nginx、Redis 高并发的底层原因。


四、计算机网络

4.1 分层模型

OSI 七层 vs TCP/IP 四层

OSI 七层 TCP/IP 四层 典型协议
应用层 应用层 HTTP、DNS、SMTP
表示层 应用层 SSL/TLS
会话层 应用层
传输层 传输层 TCP、UDP
网络层 网络层 IP、ICMP、ARP
数据链路层 网络接口层 Ethernet
物理层 网络接口层

实战记忆物-链-网-传-会-表-应(从下到上)。

4.2 TCP 协议

三次握手

text

Client Server
|— SYN ——->|
|<– SYN+ACK —-|
|— ACK ——->|

为什么是三次?防止失效的连接请求突然到达,浪费服务器资源

四次挥手

text

Client Server
|— FIN ——->|
|<– ACK ——–|
|<– FIN ——–|
|— ACK ——->|

为什么是四次?因为 TCP 是全双工,每个方向都要单独关闭。服务端收到 FIN 后可能还有数据要发,所以 ACK 和 FIN 分开。

TCP 可靠传输

  • 序号 + 确认 + 重传

  • 滑动窗口(流量控制)

  • 拥塞控制:慢启动、拥塞避免、快重传、快恢复

实战意义:为什么 HTTP/3 改用 UDP(QUIC)?因为 TCP 队头阻塞在高丢包网络下性能差。

4.3 HTTP 协议

HTTP/1.1 问题

  • 队头阻塞:一个请求慢,后面都等。

  • 头部冗余:每次都要带完整 Header。

HTTP/2 改进

  • 多路复用:一个连接并发多个请求。

  • 头部压缩(HPACK)。

  • 服务器推送。

HTTP/3:基于 QUIC(UDP),解决 TCP 层队头阻塞。

HTTPS

  • 对称加密 + 非对称加密 + 证书。

  • TLS 握手:ClientHello → ServerHello → 证书验证 → 密钥交换 → 加密通信。

4.4 高频面试题

  1. 从输入 URL 到页面展示发生了什么?
    DNS 解析 → TCP 握手 → TLS 握手 → HTTP 请求 → 服务端处理 → 响应 → 浏览器渲染。

  2. TCP 和 UDP 区别?
    TCP 可靠、面向连接、有序;UDP 不可靠、无连接、快。

  3. 为什么 TCP 粘包?怎么解决?
    TCP 是字节流,无消息边界。解决:定长、分隔符、长度字段。

  4. TIME_WAIT 过多怎么办?
    原因:主动关闭方等待 2MSL。
    解决:SO_REUSEADDR、调整内核参数、连接复用。


五、三大板块的联系

不要孤立地学这三门课,它们在实际系统中是联动的:

案例:一次 HTTP 请求的完整链路

  1. 网络:TCP 三次握手建立连接,HTTP 请求发送。

  2. 组成原理:数据经过网卡 → 内存 → CPU 处理,Cache 加速热点数据。

  3. 操作系统:网卡中断 → 内核协议栈 → epoll 通知应用 → 用户态处理。

再比如高并发系统

  • 网络层:epoll 多路复用。

  • 操作系统:多线程/协程调度。

  • 组成原理:多核并行、Cache 亲和性。

理解联动,才是真正学懂。


六、2022 新版学习建议

6.1 学习顺序

text

计算机组成原理 → 操作系统 → 计算机网络

先懂硬件,再懂 OS 如何管理硬件,最后懂网络如何通信。

6.2 推荐资源

  • 书籍:《深入理解计算机系统》(CSAPP)、《现代操作系统》、《计算机网络:自顶向下方法》。

  • 课程:哈工大李治军操作系统、王道考研 408、MIT 6.824(分布式)。

  • 实战:用 C 写一个简易 TCP 服务器;用 Go/Java 写一个简易 HTTP 服务器。

6.3 面试准备

  • 必背:TCP 三次握手/四次挥手、进程线程区别、虚拟内存、epoll。

  • 加分:能手写 LRU、能解释 TCP 拥塞控制、能说清 HTTPS 握手。

  • 避坑:不要只背结论,要能讲清”为什么”。


七、总结

板块 核心问题 一句话精髓
计算机组成原理 硬件如何执行程序 存储程序 + 层次化存储 + 流水线
操作系统 如何管理硬件资源 抽象 + 隔离 + 调度
计算机网络 如何跨机器通信 分层 + 协议 + 可靠传输

计算机基础不是背出来的,是理解 + 串联 + 实战出来的。2022 年新版的意义,不是推翻经典,而是用现代视角重新理解经典。

基础扎实,方能走远。

本作品采用《CC 协议》,转载必须注明作者和本文链接
霍克看主页简介
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!
IT资源搜 @ shanxueit.com
文章
1
粉丝
0
喜欢
0
收藏
0
排名:3883
访问:0
私信
所有博文
社区赞助商