当前位置: 首页 > backend >正文

计算机是如何工作的

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

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通过垃圾回收器自动管理内存(操作系统级支持的扩展)
http://www.xdnf.cn/news/981.html

相关文章:

  • 使用Python可视化偶极子的电场
  • 2025年一站式AI创作平台主要功能介绍及使用教程
  • rac防火墙未禁用服务器重启导致二节点启动异常
  • Unity 场景管理核心教程:从 LoadScene 到 Loading Screen 实战 (Day 35)
  • 简单了解一下Unity Shader中的Swizzle操作
  • AI Agent认知框架(ReAct、函数调用、计划与执行、自问自答、批判修正、思维链、思维树详解和对比,最后表格整理总结
  • 移动端数据抓取:Android App的TLS流量解密方案
  • Springboot集成websocket实现消息推送
  • 深入解析 Spring 中的 @Value 注解(含源码级剖析 + 自定义实现)
  • jmeter跟踪重定向和自动重定向有什么区别?
  • 【计算机视觉】CV实战项目- CMU目标检测与跟踪系统 Object Detection Tracking for Surveillance Video
  • JavaScript-原型、原型链详解
  • Kubernetes相关的名词解释POD(13)
  • Spring Boot+Mybatis设置sql日志打印
  • 视频分析设备平台EasyCVR安防视频小知识:安防监控常见故障精准排查方法
  • leetcode 516. Longest Palindromic Subsequence
  • 开关电源实战(六)STM32数控电源BuckBoost
  • 【Tips】统一论文中的公式格式
  • 算法导论第3章思考题
  • 【Device|顶刊】突破衍射极限!20纳米光电探测器开启光学传感新时代
  • Flutter路由模块化管理方案
  • 组件是怎样写的(1):虚拟列表-VirtualList
  • 第 6 篇:衡量预测好坏 - 评估指标
  • 实现侧边栏点击标题列表,和中间列表区域联动效果
  • 《P3029 [USACO11NOV] Cow Lineup S》
  • 代码随想录算法训练营day8(栈与队列)
  • 个性化的配置AndroidStudio
  • MySQL-存储过程--游标
  • 腾讯IMA深度使用指南:从下载安装到高效应用
  • 安全协议分析概述