计算机是怎么跑起来的(二)

一、CPU
1、 小知识
1.1、程序是什么? 指示计算机每一步动作的一组指令。
1.2、程序是由什么组成的? 指令和数据。
1.3、什么是机器语言? CPU可以直接识别并使用的语言。
1.4、正在运行的程序存储在什么位置? 内存
1.5、什么是内存地址?内存中,用来表示命令和数据存储位置的数据。
1.6、计算机的构成元件中,负责程序的解释和运行的是哪个?CPU
2、CPU构成:由寄存器、控制器、运算器、时钟
2.1、寄存器:可用来暂存指令、数据等处理对象,可以将其看作内存的一种,根据种类的不同,一个CPU内部会有20-100个寄存器。
2.2、控制器:负责把内存上的指令、数据等读入寄存器,并根据指令的执行结果控制整个计算机。
2.3、运算器:负责运算从内存读入寄存器的数据。
2.4、时钟:负责发出CPU开始计时的时钟信号。也有些计算机的时钟位于CPU的外部。
3、CPU执行比较的机制:在CPU内部做减法运算
4、函数的调用机制:函数调用使用的是call指令,而不是跳转指令。在将函数的入口地址设定到程序计数器之前,call指令会把调用函数后要执行的指令地址存储在名为“栈”的主存内。函数处理完毕后,再通过函数的出口来执行return命令。return命令的功能是把保存在栈中的地址设定到程序计数器中。
5、机器语言指令的主要类型和功能
5.1、数据转送指令:寄存器和内存、内存和内存、寄存器和外围设备之间的数据读写操作;
5.2、运算指令:用累加寄存器执行算术运算、逻辑运算、比较运算和移位运算;
5.3、跳转指令:实现条件分支、循环、强制跳转等;
5.4、call/return: 函数的调用/返回调用前的地址
二、数据(计算机中数据是用二进制数表示的)
1、对于用二进制数表示的信息,计算机不会区分它是数值、文字,还是某种图片的模式等,而是根据编写程序的各位对计算机发出的指示来进行信息的处理。具体进行何种处理,取决于程序的编写方式。
2、在表示负数是需要使用“二进制的补数”。补数就是用正数来表示负数,将二进制数的各数位的数值全部取反,然后再将结果加1。
3、十进制数左移后会变成远啊来的10倍、100倍、1000倍,同样,二进制数左移后就会变成原来的2倍、4倍、8倍。。。繁殖,二进制数有以后则会变成原来的1/2、1/4、1/8.。。
三、计算机进行小数运算时出错的原因
1、计算机计算出错的原因之一是,采用浮点数来处理小数。
2、避免计算机计算出错的方法:
2.1、回避策略,即无视这些错误;
2.2、把小数转换成整数来计算
四、内存
1、小知识、
1.1、有十个地址信号引脚的内存IC(集成电路)可以指定的地址范围是0000000000-1111111111(用十进制数来表示的话是1-1023)
1.2、高级语言中的数据类型表示的是占据内存区域的大小和存储在该内存区域的数据类型。
1.3、在32位内存地址的环境中,指针变量的长度是32位,指针值得是用于存储内存地址的变量。
1.4、与物理内存有着相同构造的数组的数据类型长度是1字节,物理内存是以字节为单位进行数据存储的。
1.5、用LIFO(Last In First Out)方式进行数据读写的数据结构称为栈。
1.6、根据数据的大小链表分叉成两个方向的数据结构称为二叉查找树
2、指针变量(如:char *d; long *f),这些数据类型表示死的是从指针存储的地址中一次能够读写的数据字节数。
3、栈和队列:
3.1、特点:都可以不通过指定地址和索引来对数组的元素进行读写,用于临时保存计算过程中的数据、连接在计算机上的设备或者输入输出的数据。如果每次保存历史数据都需要指定地址和索引,程序就会变得比较麻烦。
五、磁盘
1、小知识
1.1、存储程序方式指的是 在存储装置中保存程序,并逐一运行的方式。
1.2、通过使用内存来提高磁盘访问速度的机制称为Disk Cache(磁盘缓存)。磁盘缓存是指,把从磁盘中读出的数据存储在内存中,当该数据再次被读取时,不是从磁盘而是直接从内存中高速读出。
1.3、把磁盘的一部分作为假想内存来使用的机制称为虚拟内存,借助虚拟内存,哪怕是内存容量不足的计算机,也可以运行很大的程序。
1.4、在程序运行时,存储着可以动态加载调用的函数和数据的文件称为DLL(Dynamic Link Liabrary).
1.5、在EXE程序文件中,静态加载函数的方式称为静态连接。函数的加载方式有静态连接和动态链接两种。
1.6、在Windows计算机中,一般磁盘的1个扇区是512字节,扇区是磁盘保存数据的物理单位。
1.7、内存是用电流来实现存储的,磁盘是利用磁效应来实现存储的。
2、不读入内存就无法运行
在磁盘中保存的原始程序是无法直接运行的。这是因为,负责解析和运行程序内容的CPU,需要通过内部程序计数器来指定内存地址,然后才能读出程序。
3、磁盘缓存加快了磁盘访问速度
3.1、磁盘缓存指的是 把从磁盘啊中读出的数据存储到内存空间中的方式。这样,当接下来需要读取同一数据时,就不用通过实际的磁盘,而是从磁盘缓存中把内容读出,以提升磁盘访问速度。
3.2、把低速的网络数据保存到相对高速的磁盘中。如Web浏览器。
4、虚拟内存
4.1、虚拟内存是指把磁盘的一部分作为假想的内存来使用
4.2、虚拟内存 在剩余5MB内存空间的情况下也能运行10MB的程序。为了实现虚拟内存,就必须把实际内存的内容和磁盘上的虚拟内存的内容进行部分置换,并同时运行程序。
六、压缩数据
1、小知识、
1.1、文件存储的基本单位是字节
1.2、文件内容用“数据的值 x 循环次数”来表示的压缩方法是RLE算法。
1.3、可逆压缩和非可逆压缩的不同点:压缩后的数据能复原的是可逆压缩,无法复原的是非可逆压缩。
2、文件以字节为单位保存:文件代销之所以用xxKB、xxMB等来表示,就是因为饿文件是以字节(B= Byte)为单位来存储的。文件就是字节数据的集合。
七、程序的运行环境
1、小知识、
1.1、应用的运行环境,值得是操作系统和计算机本身(硬件)的种类。
1.2、FreeBSD提供的Ports,指的是通过源代码来提供应用,并根据运行环境来整合编译,从而得以在该环境下运行的机制。
八、源文件及可执行文件、
1、小知识、
1.1、CPU可以解析和运行的程序行使称为本地代码(机器语言代码)。
1.2、将多个目标文件结合生成EXE文件的工具称为连接器。
1.3、扩展名为.obj的目标文件的内容,是本地代码.
1.4、把多个目标文件收录在一起的文件称为库文件,连接器会从库文件中抽取出必要的目标文件并将其结合到EXE文件中。
1.5、仅包含Windows的DLL文件中存储的函数信息的文件称为导入库。
1.6、在程序运行时,用来动态申请分配的数据和对象的内存区域形式称为堆。
1.7、栈和堆、
1.7.1、栈和堆都是在程序运行时得到申请分配的。
1.7.2、栈用来存储函数内部临时使用的变量(局部变量),以及函数调用时所用的参数的内存区域。堆是程序运行时的任意数据及对象的内存领域。
1.7.3、栈中堆数据进行存储和舍弃是由编译器自动生成的,因此不需要程序员的参与。堆的内存空间,要根据程序员编写的程序,来明确进行申请分配或释放。
2、有难度的小知识、
2.1、编译器和解释器有什么不同?
编译器是在运行前堆所有源代码进行解释处理的。而解释器是在运行时对源代码的内容一行一行进行解释处理的。
2.2、分割编译指的是什么?
将整个程序分为多个源代码来编写,然后分别进行编译,最后连接成一个EXE文件,这样每个源代码都相对变短,便于程序管理。
2.3、Build指的是什么?
根据开发工具种类的不同,有的编译器可以通过选择“Build”菜单来生成EXE文件。这种情况下,Build指的是连续执行编译和连接。
2.4、使用DLL文件的好处是什么?
DLL文件中的函数可以倍多个程序共用。因此,借助该功能可以节约内存和磁盘。此外,在对函数的内容进行修整时,还不需要重新连接使用这个函数的程序。
2.5、不链接导入库的话 就无法调用DLL文件中的函数吗?
通过使用一些API,即使不链接导入库,也可以在程序运行时调用DLL文件中的函数。
2.6、“叠加链接”这个术语指的是什么?
将不会同时执行的函数,交替加载到同一个地址中运行。
2.7、和内存管理相关的“垃圾回收机制”指的是什么?
垃圾回收机制指的是对处理完毕后不再需要的堆内存空间的数据和对象进行清理,释放它们所使用的内存空间。
九、汇编语言
1、小知识、
1.1、本地代码的指令中,表示其功能的英语缩写称为助记符。
1.2、汇编语言的源文件的扩展名,通常是.asm
1.3、汇编语言程序中的段定义指的是构成程序的命令和数据的集合组。
1.4、汇编语言的跳转指令,在将程序流程跳转到其他地址时需要用到该指令。
十、硬件控制方法、
1、小知识、
1.1、在汇编语言中,用IN指令和OUT指令来同外围设备进行输入输出操作的;
1.2、
十一、计算机的计算过程
1、小知识、
1.1、用计算机进行的模拟试验称为计算机模拟;
1.2、伪随机数指的是通过公示产生的伪随机数;
1.3、随机数的种子指的是生成伪随机数的公式中使用的参数。
1.4、计算机中的内存和磁盘等有记忆功能。
2、程序的作用、
2.1、作为工具使用;
2.2、用程序来代替执行人类的思考过程。

你可能感兴趣的:(计算机是怎么跑起来的(二))