ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

计算机系统|零基础术语大全【庖丁解牛版】

计算机系统|零基础术语大全【庖丁解牛版】 核心思路把一台计算机当成一个工厂顺着「程序代码 → CPU执行 → 内存暂存 → 磁盘持久化 → 网络传输」这条流水线切开。不讲晦涩数学全部拆成血肉骨架从底层硬件到操作系统再到进程、内存、IO一层层剖开搞懂每个术语到底在流水线里承担什么角色。前置一句话总纲硬件是身体操作系统是大脑管家程序是任务进程是正在干活的工人内存是工作台磁盘是仓库CPU是车间核心加工机。一、硬件层计算机的身体骨架1. CPU 中央处理器是什么整台机器的运算指挥核心。负责做加减乘除、逻辑判断执行一条条机器指令。类比工厂车间的加工主机。关键术语核心 Core一个独立运算单元。多核 车间里多个加工头可以同时并行干活。线程 Thread硬件线程单个核心的分身技术超线程一个核心可以交替处理两个任务提升利用率。时钟频率 GHz每秒能执行多少轮指令频率越高单核处理速度越快。不代表整体性能唯一标准。指令集CPU能识别的原始命令x86、ARM。x86电脑服务器ARM手机、Mac M系列、嵌入式。重点CPU运算速度极快最怕等待等内存、等磁盘、等网络这就是系统性能瓶颈根源。2. 内存 RAM主存是什么临时工作台。CPU要处理的数据、正在运行的程序全部先加载到内存。断电数据全部消失。特点速度远快于磁盘容量小价格贵。底层CPU不能直接读取磁盘数据磁盘的内容必须读到内存CPU才能操作。3. 高速缓存 CacheCPU缓存 L1/L2/L3是什么CPU芯片内置的一小块超高速临时存储比内存还要快得多容量很小。目的解决「CPU太快、内存跟不上」的速度鸿沟。CPU会把经常要用的数据预先放到Cache。L1最快最小L3最慢容量最大。例子反复读取同一个变量数据留在L1缓存几乎不用等待内存。缓存失效就会产生性能断崖。4. 磁盘硬盘HDD / SSDHDD机械硬盘磁头盘片机械转动读写速度慢、容量大、便宜。有寻道时间。SSD固态硬盘闪存芯片无机械结构比HDD快很多但仍然比内存慢几百上千倍。定位永久仓库断电数据保留。程序不运行时躺在磁盘里。启动时加载进内存。5. 总线 Bus硬件之间通信的通道。CPU、内存、磁盘、网卡靠总线互相传递数据。类比工厂的传送管道。6. 网卡 NIC负责计算机收发网络数据包连接网络。二、操作系统 OS机器的大管家核心重点操作系统本质管理硬件资源向上给程序提供一套统一接口隔离硬件细节。Windows、Linux、macOS都是操作系统。后端开发最常用 Linux。7. 内核 Kernel操作系统最核心的程序开机后常驻内存。负责管理CPU、内存、磁盘、网络所有硬件操作应用程序不能直接碰硬件必须请求内核完成。用户态 User Mode普通应用程序运行空间。权限低不能直接操作硬件。内核态 Kernel Mode内核运行空间拥有全部硬件权限。用户态 ↔ 内核态切换叫上下文切换有开销。频繁切换会降低性能。8. 进程 Process定义正在运行程序实例。程序是磁盘上的静态文件把程序加载到内存分配资源就变成进程。类比工厂里开工的工人。同一个程序比如PHP可以启动多个工人多个进程。每个进程独立有独立内存空间进程之间互相隔离。A进程不能随便读写B进程内存。PID进程ID操作系统给每个进程分配唯一编号。9. 线程 Thread软件线程进程内部的执行分支。一个进程至少有1个主线程可以创建多个子线程。类比一个工人进程分出多只手线程同时做多件事。特点同一个进程内所有线程共享同一份内存空间互相访问数据很方便但会带来竞争问题。线程切换开销 进程切换开销。区分一句话进程是资源分配单位线程是CPU调度单位。10. 并发 Concurrency多个任务交替使用同一个CPU核心宏观看起来同时在跑。不是真正同一时刻执行。单核CPU靠快速切换线程实现并发。11. 并行 Parallelism多个任务在多个CPU核心上同一时刻真正一起运行。必须多核CPU才能并行。12. 上下文切换 Context SwitchCPU放下当前线程/进程保存现场切换去执行另一个。动作保存寄存器、内存现场切内核态。代价消耗CPU。高并发场景过多上下文切换是性能杀手。13. 内存管理操作系统模块虚拟内存 Virtual Memory操作系统给每个进程编造一套独立的虚拟地址空间。进程以为自己独占一整块完整内存。物理内存真实内存条。地址映射内核把进程使用的虚拟地址翻译成真实物理内存地址。页 Page / 页表虚拟内存最小管理单位通常4KB页表是内核用来记录虚拟页和物理页映射关系的表格。缺页中断 Page Fault进程访问一个虚拟内存地址发现对应数据不在物理内存。内核触发中断去磁盘把数据加载进内存。缺页会产生IO很慢。Swap 交换分区磁盘划出一块空间当作内存临时替补。物理内存不够时内核把暂时不用的内存页挪到Swap。坑Swap本质磁盘一旦大量使用性能暴跌。服务器尽量避免Swap。14. 文件系统 File System操作系统管理磁盘数据的一套规则。磁盘裸盘不能直接存文件需要格式化建立文件系统。Linux常用ext4、xfsWindowsNTFS。管理文件、目录、权限记录文件数据存在磁盘哪些块。InodeLinux文件元数据记录文件大小、权限、磁盘块位置不存文件名。文件名存在目录项。15. IO 输入输出 Input / Output程序和外部设备读写数据统称IO读磁盘、写磁盘、网络读写都是IO。CPU计算速度 内存 SSD HDD 网络IO等待就是CPU没事干原地等磁盘/网络返回数据。系统大部分性能瓶颈都在IO。阻塞IO Blocking IO调用IO操作线程卡住原地等待IO完成才能继续往下跑。PHP-FPM就是典型阻塞模型。非阻塞IO Non-blocking IO发起IO请求线程不会卡住立刻返回不管IO有没有完成。程序不断轮询检查结果。消耗CPU。IO多路复用 IO Multiplexing单个线程同时监听多个IO事件哪个IO就绪就处理哪个。Linuxselect、poll、epoll。Swoole、Nginx底层核心就是epoll。事件循环 Event Loop基于IO多路复用循环监听事件IO就绪就执行回调。Nginx、Node.js、Swoole。16. 中断 Interrupt硬件主动通知内核有事处理。比如网卡收到数据包、磁盘读完数据硬件发送中断信号打断CPU当前工作。17. 信号 SignalLinux内核给进程发送的通知消息。比如 kill 命令本质发送信号SIGTERM终止、SIGKILL强制杀死进程。三、网络栈术语操作系统网络子系统18. Socket 套接字操作系统提供给程序的接口用来收发网络数据。类比两个程序通信的电话听筒。IP地址定位机器端口Port定位机器上对应的进程。19. TCP面向连接、可靠传输协议。通信前三次握手建立连接数据有确认、重传、拥塞控制保证数据有序不丢包。代价开销大。HTTP/HTTPS底层基于TCP。20. UDP无连接不可靠。不握手不确认。速度快可能丢包。直播、DNS用UDP。21. 端口 Port一台机器上多个网络服务区分标记。0~65535。80 HTTP443 HTTPS。端口不是硬件是内核的逻辑编号。22. 协议栈 TCP/IPLinux内核里面一套分层网络模块应用层→传输层(TCP/UDP)→网络层(IP)→链路层。程序发数据包一层层封装接收一层层解包。四、程序编译、链接、存储代码如何变成机器指令23. 机器码 Machine CodeCPU原生可以直接执行的二进制指令只有0和1。24. 汇编语言机器码的人类可读简写。和CPU指令集一一对应。25. 编译型语言C/C源码 → 编译器一次性翻译成机器码生成可执行文件保存在磁盘。运行时直接执行机器码不依赖解释器。优点性能高缺点修改代码要重新编译。26. 解释型语言PHP、Python源码不提前编译成完整机器码。运行时由解释器程序边读源码边执行。PHP特殊源码编译成Opcode中间码交给Zend虚拟机执行属于解释执行中间字节码方案。27. 虚拟机 VM不直接跑硬件机器码跑自定义中间指令Opcode。PHP Zend VM、Java JVM。好处跨平台同一套字节码在不同操作系统运行。28. 链接 Link多个代码模块合并把外部函数地址补齐生成最终可执行程序。分静态链接、动态链接。29. 静态库 / 动态库 so/dll静态库编译时把库代码直接拷贝进程序文件。动态库程序运行时才加载库到内存多个程序可以共享同一份库文件。Linux后缀.soWindows .dll。五、并发同步术语多进程多线程抢资源30. 临界区 Critical Section一段代码多个线程不能同时执行。操作同一个共享变量的代码块。31. 互斥锁 Mutex保护临界区。线程进入临界区前拿锁离开释放。拿到锁才能执行没拿到就阻塞等待。防止多个线程同时修改共享数据造成错乱。32. 死锁 Deadlock多个线程互相持有对方需要的锁循环等待谁都无法继续。前面MySQL锁那里也出现过。33. 原子操作 Atomic不可拆分的操作。要么完整执行完要么完全没执行中间不会被CPU打断。不需要锁就能保证安全。六、庖丁总骨架总结一句话串完整链路源代码磁盘静态文件→ 加载到内存 → 生成进程分配虚拟内存空间创建线程CPU从内存读取指令L1/L2/L3缓存加速程序读写磁盘/网络时发起IOIO操作进入操作系统内核内核负责硬件交互多线程/进程靠CPU并发调度靠锁保护共享资源网络通信走内核Socket和TCP/IP协议栈。所有性能问题根源CPU等待内存、内存等待磁盘、程序等待网络还有上下文切换、锁竞争。
返回列表