
程序是怎样跑起来的
文章平均质量分 80
读书笔记
Fiona-Dong
这个作者很懒,什么都没留下…
展开
-
(九)操作系统和应用的关系
1. 要意识到操作系统的存在在Windows操作系统下,用C语言制作一个具有表示当前时间功能的应用:运行代码清单9-1的应用时,硬件的受控过程如下所示:(1) 通过time_t tm;,为time_t类型的变量申请分配内存空间。(2) 通过time(&tm);,将当前的日期和时间数据保存到变量的内存空间中。(3) 通过print("%s\n", ctime(&tm));,把变量内存空间的内容输出到显示器上。在操作系统这个运行环境下,应用并不是直接控制硬件,而是通过操作系原创 2021-07-18 19:13:34 · 357 阅读 · 1 评论 -
(八)从源文件到可执行文件
1. 计算机只能运行本地代码用某种编程语言编写的程序就称为源代码,保存源代码的文件称为源文件。用C语言编写的源文件的扩展名通常是“.c“源代码是无法直接运行的。这是因为,CPU能直接解析并运行的不是源代码而是本地代码的程序。作为计算机大脑的CPU,只能解释已经转换成本地代码的程序内容。本地(native) 这个术语有“母语的”意思。对CPU来说,母语就是机器语言,而转换成机器语言的程序就是本地代码。用任何编程语言编写的源代码,最后都要翻译成本地代码(图8-2),否则CPU就不能理解。也就是说,即原创 2021-07-18 18:12:17 · 638 阅读 · 2 评论 -
(七)程序是在何种环境中运行的
1. 运行环境 = 操作系统 + 硬件操作系统和硬件决定了程序的运行环境。同一种类型的硬件可以选择安装多种操作系统。从程序的运行环境这一角度来考量硬件时,CPU的种类是特别重要的参数。CPU只能解释其自身固有的机器语言。机器语言的程序称为本地代码(native code)。程序员用C语言等编写的程序,在编写阶段仅仅是文本文件。文本文件(排除文字编码的问题)在任何环境下都能显示和编辑。我们称之为源代码。通过对源代码进行编译,就可以得到本地代码。2. 不通操作系统的API不同应用原创 2021-07-18 18:12:08 · 499 阅读 · 0 评论 -
(六)亲自尝试压缩数据
1. 文件以字节为单位保存文件是将数据存储在磁盘等存储媒介中的一种形式。程序文件中存储数据的单位是字节。文件就是字节数据的集合。在任何情况下,文件中的字节数据都是连续存储的。2. RLE算法的机制把文件内容用“数据*重复次数”的形式来表示的压缩方法称为RLE(Run Length Encoding,行程长度编码)算法(图6-2)。3. 通过莫尔斯编码来看哈夫曼算法的基础哈夫曼算法的关键在于“多次出现的数据用小于8位的字节数来表示,不常用的数据则可以用超过8位的字节数来表示”。原创 2021-07-13 20:44:24 · 136 阅读 · 0 评论 -
(五)内存和磁盘的亲密关系
1. 不读入内存就无法运行计算机中主要的存储部件是内存和磁盘。磁盘中存储的程序,必须要加载到内存后才能运行。在磁盘中保存的原始程序是无法直接运行的。这是因为,负责解析和运行程序内容的CPU,需要通过内部程序计数器来指定内存地址, 然后才能读出程序。2. 磁盘缓存加快了磁盘访问速度磁盘缓存(dik cache)指的是把从磁盘中读出的数据存储到内存空间中的方式。这样,当接下来需要读取同一数据时,就不用通过实际的磁盘,而是从磁盘缓存中把内容读出。使用磁盘缓存可以大大改善磁盘数据的访问速度原创 2021-07-13 20:44:05 · 402 阅读 · 2 评论 -
(四)熟练使用有棱有角的内存
1. 内存的物理机制很简单内存实际上是一种名为内存IC的电子元件。内存IC中有电源、地址信号,数据信号、控制信号等用于输入输出的大量引脚(IC的引脚),通过为其指定地址(address),来进行数据的读写。图4-1是内存IC(在这里假设它为RAM)的引脚配置示例。虽然这是一个虚拟的内存IC,但它的引脚和实际的内存IC是一样的。VCC和GND是电源,A0~A9是地址信号的引脚,D0~D7是数据信号的引脚,RD和WR是控制信号的引脚。将电源连接到VCC和GND后,就可以给其他引脚传递比如0原创 2021-07-11 10:02:51 · 251 阅读 · 0 评论 -
(三)计算机进行小数运算时出错的原因
1. 将0.1累加100次也得不到10举一个计算机运算错误(无法得到正确结果)的例子:0.1累加100次的结果是10,但上述代码运行后,显示的结果并不是10。10.1000022. 用二进制数表示小数把1011.0011这个有小数点的二进制数转换成十进制数。将各数位的数值和位权相乘的结果相加即可,如下图所示:3. 计算机运算出错的原因计算机之所以会出现运算错误,是因为“有一些十进制数的小数无法转换成二进制数”。代码清单3-1中程序无法得到正确结果的原因是,因为无法正确原创 2021-07-08 19:56:12 · 3287 阅读 · 4 评论 -
(二)数据是用二进制数表示的
1. 用二进制数表示计算机信息的原因IC的一个引脚,只能表示两个状态。这个特性,决定了计算机的信息数据只能用二进制数来处理。计算机处理信息的最小单位一一位,就相当于二进制中的一位。位的英文bit是二进制数位(binary digit)的缩写。二进制数的位数一般是8的倍数,这是因为计算机所处理的信息的基本单位是8位二进制数。8位二进制数被称为一个字节,字节是最基本的信息计量单位。位是最小单位,字节是基本单位。内存和磁盘都使用字节单位来存储和读写数据,使用位单位则无法读写数据。因此,字节是原创 2021-07-07 20:40:10 · 755 阅读 · 1 评论 -
(一)对程序员来说是CPU是什么
1. CPU的内部结构解析CPU和内存是由许多晶体管组成的电子部件,通常称为IC(Integraed Circuit,集成电路)。从功能方面来看,如图1-2所示,CPU的内部由寄存器、控制器、运算器和时钟四个部分构成,各部分之间由电流信号相互连通。寄存器可用来暂存指令、数据等处理对象,可以将其看作是内存的一种,根据种类的不同,一个CPU内部会有20~100个寄存器。控制器负责把内存上的指令,数据等读入寄存器,井根据指令的执行结果来控制整个计算机。运算器负责运算从内存读入寄原创 2021-07-04 09:21:07 · 499 阅读 · 4 评论