【1.1】系统漫游——信息就是位+上下文
来源:互联网 发布:网络招聘的劣势是 编辑:程序博客网 时间:2024/06/04 01:34
计算机系统发展这么多年,虽然具体的实现方式一直在变,但底层的原理一直都不曾变化。为了更好的理解我们的程序是如何被执行如何被底层影响的,有必要开展一次全新的计算机系统之旅了。
我们学习C语言几乎都是从“helloword”开始的,这么一个简单的程序也需要计算机系统各个部件之间紧密配合、协同工作,才能使程序正确的执行。当程序执行时,我们希望知道内部到底发生了什么,只有真正了解本质,对问题的分析才能准确透彻!这次学习之旅会非常漫长,下面就以对“hello”程序的整个生命周期跟踪,大概了解一下关键概念和具体路径,后续章节会进行详细分析。
hello.c :
#include <stdio.h> int main(){ printf("hello world\n");}
通过WinHex查看hello.c文件,可以看到:
左边是文件对应的16进制代码,右边是我们的源程序,也就是说源程序在计算机中是以ascii码值来保存的,例如:“#”的ascii值是0x23。需要特别注意一下:第2行中有2个连续的0x0D 0x0A ,这是windows中特有的“换行符\r\n” ,在linux中的是“换行符\n”。可以看到,源程序文件是程序员通过编辑器建立的一个“文本文件”,test.c文件就是由一系列的字节(ascii)组成,每个byte都代表某一个“文本字符”。就像hello.c文件这样只由ascii码组成的文件叫做个“文本文件”,其他所有文件都叫“二进制文件”。
该文件说明一个基本原则:所有的信息,无论是保存在磁盘还是内存中,或者传输在网络中,都是由一系列的bits组成,区分这些不同数据对象的的唯一方法是我们观察的视角。例如:对于0x69,我们可以认为是字符“i”,或者是数值,或者是图像中某一个像素点等等。不管他们是什么,在计算机中都是用二进制表示的,因为计算机只有“开关”两种状态。关于“文本文件”和“二进制文件”:
前面讲到,计算机中的信息都是用二进制位来表示的,就上图中左边的数据内容(计算机物理级别上存储的内容),如果把它看做是文本文件,那么编译器就会把这些数值以8bits为单位,转化成ascii码展现出来,就变成了右边的代码;如果看做是二进制文件,就不会做任何转化,直接呈现出来。应该都有过打开一个未知扩展名文件的经历,这些扩展名就是告诉计算机用什么方式来解析文件,是用“文本文件”还是“二进制文件”,如果用二进制文件,还要看如何解析二进制文件(不同的文件解析规则不同)。如果把.jpg文件扩展名改为.txt,则系统会认为是“文本文件”,解析出来多半是密密麻麻的乱码,这就是把“二进制文件”故意解析成“文本文件”的后果。总的来说,物理层上讲数据都是二进制存储的,逻辑层上讲就会出现“文本文件”和“二进制文件”的不同解析方式。这些就是他们最本质的区别,至于其他的可以自行搜索相关介绍。
- 【1.1】系统漫游——信息就是位+上下文
- 信息就是位+上下文
- 信息就是位+上下文
- 深入理解计算机系统 1.1 信息就是位 + 上下文
- 计算机系统(一)信息就是(位+上下文)
- 信息就是位+上下文 读深入理解计算机系统
- 推荐系统——利用上下文信息
- 系统上下文信息PROVIDER
- 【1.9】系统漫游——几个关键概念
- Struts2设定系统上下文信息PROVIDER
- 【1.3】系统漫游——了解编译系统如何工作的好处
- 【1.4】系统漫游——系统硬件结构以及程序执行过程
- 推荐系统实践---第五章:利用上下文信息
- 【1.2】系统漫游——“程序”被其他程序翻译成不同格式
- 【1.5+1.6】系统漫游——高速缓存和金字塔型存储设备
- 【1.7+1.8】系统漫游——操作系统管理硬件(包括网络)
- OptionMenu 和 ContextMenu (系统菜单栏——上下文菜单栏)
- linux 系统信息查询——系统版本,内核信息,cpu信息,内存信息,硬盘信息
- 数据库51年来十八件大事年表
- Hibernate事物管理
- linux自检和systemtap
- linux 定时任务: at & crontab
- SCROLLBAR
- 【1.1】系统漫游——信息就是位+上下文
- 成员变量方法_继承有别
- Application.SetCompatibleTextRenderingDefault(false)
- ESQL/C资料(完全版)一
- APP市场火热的背后 云计算技术不是核心竞争力
- SecureCRT修改颜色方案
- WebLogic10gr3 & MyEclipse 配置
- ESQL/C资料(完全版)二
- 复习