十二天深入理解计算机系统(一)
计算机系统漫游
1 信息就是位+上下文
系统中所有的信息都是由一串位表示的,在不同的上下文中,一个同样的字节序列可能表示一个整数、浮点数、字符串或者机器指令。
2 文本文件和二进制文件
有ASCII字符构成的文件称为文本文件,所有其他文件都是二进制文件。
3 源程序到可执行目标文件的过程
1)预处理 根据以字符#开头的命令,修改原始的hello.c程序,生成hello.i文件。
2)编译阶段 把hello.i文件翻译为汇编语言的hello.s文本文件。
3)汇编阶段 把hello.s翻译为可重定位目标文件hello.o
4)连接阶段 合并hello.o、printf.o生成可执行目标文件
4 字
与总线相关的概念,总线每次可以转送一个字,字中的字节数是一个基本的系统参数,一般为四个字节。
5 进程
是对处理器、主存、I/O设备的抽象,比如我们运行一个程序,看上去只有这个程序在使用处理器、主存和I/O设备。
6 虚拟存储器
是主存和I/O设备的抽象(参考文章内存就是RAM?更能体会),每个进程看到的是一致的存储器。详细介绍请参考我前面的文章内存管理之程序内存分布
7 文件
是I/O设备的抽象,为应用程序提供了一个统一的视角,来看待系统中可能含有的所有各式各样的I/O设备。
8 多处理器 多核以及超线程
这几个概念可以参考我前面的文章超线程 多核 多处理器区别
9 超标量
指在一个时钟周期执行比一条指令更快的速率。
10 总结
本章主要介绍一些基本概念。但是我们除了了解这些基本概念外,我们要学到一种基本思想--抽象,比如抽象出进程、虚拟存储器、文件以及我们在编程中对代码抽象出了函数,对函数抽象出了类等等。
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET制作智能桌面机器人:结合BotSharp智能体框架开发语音交互
· 软件产品开发中常见的10个问题及处理方法
· .NET 原生驾驭 AI 新基建实战系列:向量数据库的应用与畅想
· 从问题排查到源码分析:ActiveMQ消费端频繁日志刷屏的秘密
· 一次Java后端服务间歇性响应慢的问题排查记录
· 互联网不景气了那就玩玩嵌入式吧,用纯.NET开发并制作一个智能桌面机器人(四):结合BotSharp
· Vite CVE-2025-30208 安全漏洞
· 《HelloGitHub》第 108 期
· MQ 如何保证数据一致性?
· 一个基于 .NET 开源免费的异地组网和内网穿透工具