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

计算机基础:操作系统学习的基石

—— 从电子流动到内存访问的底层逻辑

信息表示:0和1的魔法

计算机的本质是数字电路,其核心特性是电压离散化:

高电平 → 1,低电平 → 0

二进制抽象:电子器件中电荷的存在(1)与缺失(0)构成所有数据的基础。

进制转换示例(十进制→二进制):

5 ÷ 2 = 21  
2 ÷ 2 = 10  
1 ÷ 2 = 01  
结果:0101(高位补0)  

十六进制:简化二进制的工具(4位一组转换):

1110 0110 → 0xE6  
0111 1011 → 0x7B  

💡 为什么重要?
操作系统的指令、内存地址、文件数据最终都以二进制存储,理解进制是分析内存转储、调试程序的基础。

逻辑运算:CPU的思维单元

布尔代数(逻辑运算)是CPU指令执行的底层逻辑:

运算符号规则
与(AND)&全1则1
或(OR)竖线有1则1
非(NOT)~取反
异或(XOR)^不同则1

逻辑门:物理实现这些运算的电路单元,如AND门、OR门。

💡 操作系统关联:进程调度、锁机制依赖逻辑运算(如互斥锁基于AND/OR组合)。

加法器:算术运算的引擎

加法是CPU运算的基石:

  • 减法 → 补码转加法(A - B = A + (-B))
  • 乘法 → 加法+移位(二进制累加)
  • 除法 → 减法+移位(减法由补码加法实现)

加法器实现:

  • 半加器:用XOR计算和位(s = x^y),用AND计算进位(c = x&y)。
  • 全加器:增加低位进位输入,串联为行波进位加法器(延迟高),或并行超前进位加法器(现代CPU采用)。
xys(和)c(进位)
1101
1010

💡 为什么关键?
操作系统的中断处理、时间片计算均依赖底层算术运算。

内存与存储:数据的物理之家

  • 内存单元 = 晶体管(开关) + 电容(存储)

    • 电容充电 → 1,无电荷 → 0。
  • 位(bit):最小单位(1b),字节(Byte):基本访问单元(1B = 8b)。

  • 地址:内存单元的编号,操作系统通过地址读写数据。

⚠️ 重要限制:内存只能以字节为单位访问,无法单独操作某一位。

总线:计算机的“高速公路”

连接CPU、内存与外设的三大总线:

总线类型功能
地址总线传递内存地址(如32位总线→4GB寻址空间)
数据总线传输实际数据
控制总线发送读写信号(如内存读、I/O写)
时钟信号协调各部件动作的“指挥棒”,决定CPU主频。

寄存器:CPU的快速工作台

  • 作用:临时存储指令地址、运算状态、中间结果(如计算1+2+4时暂存3)。

  • 与内存的区别:速度极快(纳秒级),容量小(通常64位CPU有16个通用寄存器)。

  • 无状态电路:组合逻辑电路(如半加器)结果不保存,需寄存器持久化中间值。

💡 操作系统视角:上下文切换时需保存/恢复寄存器状态!

外设与接口:扩展计算机的能力

  • 外设:键盘、显示器、硬盘(外存)等I/O设备。

    • 接口:处理器与外设的“翻译官”(如USB、SATA)。

    • 协议转换(总线信号→外设信号)

  • 支持热插拔(如即插即用设备)

  • 主板:集成CPU、内存、接口的电路基板。

地址空间:资源的“门牌号”系统

  • 内存地址空间:CPU可寻址的范围(如32位→4GB),大于物理内存(如实际2GB)。

  • I/O地址空间:独立编址外设(x86用16位→64K个端口),实际设备占用部分端口。

💡 操作系统核心作用:
通过虚拟内存管理将逻辑地址映射到物理地址,实现多进程隔离!

总结:基础如何支撑操作系统?

  1. 二进制与逻辑门 → 指令执行
  2. 寄存器与时钟 → 进程调度
  3. 地址空间与总线 → 内存管理
  4. 外设接口 → I/O子系统

学习建议:

理解电容存0/1、总线传数据、寄存器暂存结果,是掌握操作系统内存管理、进程调度的底层钥匙!

http://www.dtcms.com/a/316017.html

相关文章:

  • 【前端】Node.js 简易服务器搭建全指南:从基础到实践
  • 调试|谷歌浏览器调试长连接|调试SSE和websocket
  • Redis内存耗尽时的应对策略
  • Day115 SpringBoot整合Redis,RedisTemplate和注解两种方式的使用
  • SQL164 删除表
  • 输入12-21V输出5V 10A电源转换芯片方案
  • 什么是模型并行?
  • C语言基础_随机数、数组、函数、指针
  • 注意点:如何使用conda创建虚拟环境并使用虚拟环境以及当安装相关库时,如何指定安装到那个环境里面 ---待看
  • Java中公用字符串工具类拿走、直接用
  • 山东省天地图API申请并加载到QGIS和ArcGIS Pro中
  • 什么是mysql的垂直分表,理论依据是什么,如何使用?
  • 无人机光伏识别误检率↓83%!陌讯多模态融合算法实战解析
  • PHP获取淘宝商品详情返回参数详解
  • K8S 性能瓶颈排查
  • 路由的类型
  • Linux驱动学习(八)设备树
  • 无人机 × 巡检 × AI识别:一套可复制的超低延迟低空视频感知系统搭建实践
  • BloodHound 8.0 首次亮相,在攻击路径管理方面进行了重大升级
  • 03-顺序表
  • Spring之【详解FactoryBean】
  • 小程序实时保存优化
  • WWDC 25 极地冰原撸码危机:InlineArray 与 Span 的绝地反击
  • Dell电脑Windows系统更新后声卡驱动无法识别插线耳机问题
  • WebRTC音视频编码模块深度解析:从编解码器到自适应码率控制(2025技术实践)
  • 【安卓][Mac/Windows】永久理论免费 无限ip代理池 - 适合临时快速作战
  • Java+Redis+SpringBoot定时器-定时发布商品
  • 使用vscode编写markdown文档(使用Markdown Preview Enhanced和markdownlint两个插件)以及若干配置
  • Patsy的dmatrix() 函数
  • Docker概述