计算机是如何工作的

发布于:2025-04-22 ⋅ 阅读:(17) ⋅ 点赞:(0)

一、计算机组成心脏——冯诺依曼体系

1. 核心部件对比
组件 作用 相当于人体器官
CPU 处理计算和决策 大脑(思考中枢)
内存 临时存储运行数据 短期记忆
硬盘 永久存储文件 长期记忆
输入设备 接收用户指令 感官(眼睛/耳朵)
输出设备 显示结果 动作(手/嘴巴)
2. 日常开发中的体现
  • SSD快速启动项目:内存将代码加载到高速区域 → CPU快速处理
  • 程序卡顿分析:内存不足时需要与硬盘频繁交换数据 → 引发卡顿

二、程序执行底层原理

1. CPU工作四步循环
// Java程序片段示例
public static void main(String[] args) {
    int x = 10 + 20;
    System.out.println(x);
}
步骤 CPU实际处理 Java对应行为
取指 从内存地址0x7FF读取指令ADD 10, 20 执行加法运算
解码 识别要做加法运算并准备寄存器 JVM解释字节码
执行 ALU物理线路通过门电路完成二进制加法 计算结果x=30
写回 将结果存入内存地址0x0100 变量x内存分配
2. 开发者必知特性
  • 缓存重要性:L1/L2缓存读取0.5ns vs 内存读取100ns(差200倍)
  • 流水线优化:I7处理器14级流水线 -> 多条指令并发处理

三、语言演化与编程发展

编程语言进化树

机器语言 (10110011) → 汇编语言 (MOV AX,5) → C/C++ → Java/Python
 

Java核心优势
// Java示例:自动内存管理 vs C手动管理
// C语言
int* arr = (int*)malloc(10*sizeof(int));
free(arr); // 必须手动释放

// Java语言 
int[] arr = new int[10]; // 自动回收
特性 C语言 Java 对开发影响
内存管理 手动 自动GC 减少内存泄漏风险
指针操作 直接 引用代替 提高代码安全性
跨平台性 需重新编译 字节码通用 "一次编写处处运行"

四、操作系统核心机制

1. 进程管理三要素
  • 程序块:能够被调度到CPU执行的程序代码段(程序还能被多个进程共享,也就是说多个进程可以运行同一个程序)
  • 数据块:存储全局变量、常量以及动态分配的数据空间
  • 控制块 PCB:一个进程的身份证。 在进程创建时被建立,之后常驻内存,直到进程结束时才被删除
2. 进程调度类比

餐厅场景

  • 厨师=CPU核心
  • 订单列表=就绪队列
  • 时间片轮转=每个订单处理2分钟切换
  • 优先级调度=VIP订单优先
3. Java多线程开发要点
// 典型的生产者-消费者模型
public class Buffer {
    private Queue<Integer> queue = new LinkedList<>();
    private int capacity;
    
    public synchronized void produce(int item) throws InterruptedException {
        while(queue.size() == capacity) { 
            wait(); // 释放锁等待
        }
        queue.add(item);
        notifyAll(); // 通知消费者
    }
    
    public synchronized int consume() throws InterruptedException {
        while(queue.isEmpty()) {
            wait();
        }
        int item = queue.remove();
        notifyAll();
        return item;
    }
}

关键机制

  • synchronized实现互斥锁
  • wait()释放锁并进入等待集
  • notifyAll()唤醒等待线程

实际场景
当开发Servlet应用时:

  1. Tomcat为每个请求创建独立线程(进程级隔离)
  2. Session数据存在堆内存中(内存管理)
  3. 数据库连接使用连接池(资源复用-进程管理思想)
  4. JVM通过垃圾回收器自动管理内存(操作系统级支持的扩展)

网站公告

今日签到

点亮在社区的每一天
去签到