计算机系统的层次结构
- 现代计算机的解题过程
- 计算机语言发展历程
- 早期
- 20世纪50年代
- 20世纪60年代
- 微程序机器 M 0 M_0 M0
- 操作系统机器 M 2 M_2 M2
现代计算机的解题过程
首先将用户用高级语言编写的源程序与数据一起送入计算机内,再由计算机将其翻译成机器能识别的机器语言程序(称为目标程序),机器自动运行该机器语言程序,并将计算结果输出。
计算机语言发展历程
早期
早期的计算机中,机器语言是唯一可用的编程方式。那时候的计算机没有现代的高级编程语言、编译器或解释器等工具,程序员只能直接使用二进制代码 0 和 1 来编写程序。高编程难度使得程序员必须非常小心地处理每一个二进制位,以确保程序的正确性和效率。
在计算机的硬件层面,机器语言是最原始的语言形式,因为计算机的 CPU(中央处理单元)可以直接识别和执行这些二进制代码而不需要任何额外的转换。直接执行机器语言的机器称为实际机器 M 1 M_1 M1;
总结:实际机器 M 1 M_1 M1:机器语言程序直接在 M 1 M_1 M1 上执行;
20世纪50年代
20世纪50年代,由于直接使用二进制代码极容易出错,且难以理解和维护,汇编语言应运而生。
汇编语言使用助记符(如ADD、SUB、MUL、DIV等)来代表机器指令,这些助记符相对于二进制代码更加直观,便于记忆和理解。通过汇编语言,程序员可以用更加符号化的方式来编写程序,这不仅提高了编程的效率,也减少了编程错误。
但是汇编语言仍然存在局限性,抽象程度低,程序员仍需要对计算机的硬件结构有深入的理解才能编写高效的汇编语言程序,且从本质上看,汇编语言仍是一种面向实际机器的语言。
总结:虚拟机器 M 2 M_2 M2:将汇编语言程序先翻译成机器语言程序,再在实际机器 M 1 M_1 M1 上执行;
20世纪60年代
20世纪60年代出现了多种面向问题的编程语言。这些语言相对于早期的机器语言和汇编语言来说,具有更高的抽象层次,对问题的描述十分接近人们的习惯,使得程序员更加容易地表达复杂的问题和算法。
此刻,程序员已完全不必了解掌握实际机器 M 1 M_1 M1 的架构和指令系统,只需要掌握高级语言的语法和语义,就可以直接使用高级语言来编程。
但是当然,机器 M 1 M_1 M1 本身不能识别高级语言,因此在程序进入机器 M 1 M_1 M1 运行前,必须先将高级语言程序翻译成汇编语言程序(或其他中间语言程序),然后再将其翻译成机器语言程序;或者直接从高级语言程序翻译成机器语言程序,再在机器 M 1 M_1 M1 上运行。由此得到具有三层次结构的计算机系统。
总结:虚拟机器 M 3 M_3 M3:将高级语言程序先翻译汇编语言程序,再在 M 2 M_2 M2、 M 1 M_1 M1(或直接到 M 1 M_1 M1)上执行;
编译与解释:
通常将高级语言程序翻译成机器语言程序的软件称为翻译程序。翻译程序有两种:编译程序与解释程序:
- 编译程序: 将用户编写的高级语言程序全部一次性翻译成机器语言程序,而后再执行机器语言程序;如 FORTRAN、PASCAL 等语言就是用编译程序来完成翻译的。
- 解释程序: 将源程序的一条语句翻译成对应于机器语言的一条语句,并且立即执行这条语句。接着翻译源程序的下一条语句,并且立即执行;如此重复直至完成全部翻译任务;如 BASIC 的翻译就有解释程序和编译程序两种。
微程序机器 M 0 M_0 M0
由于软件的发展,实际机器 M 1 M_1 M1 向上延申构成了各种虚拟机器。同理,机器 M 1 M_1 M1 也向下延申而形成了微程序机器 M 0 M_0 M0。
每条机器指令(宏观指令)被分解为一组微指令(微观操作)。这些微指令是计算机控制单元中微程序存储器(Microprogram Store)中的最小存储单元,它们定义了执行一条机器指令所需的一系列控制信号。
需要注意的是,微程序设计方法在上世纪60年代和70年代非常流行,但随着计算机技术的发展,许多现代处理器采用了更直接的方法来执行指令,如流水线技术和超标量技术。这些技术可以直接并行执行多个机器指令的操作,从而提高了处理器的性能。然而,微程序控制的思想在某些特定领域仍然有其应用价值,例如在某些嵌入式系统和一些特殊用途的处理器中。
操作系统机器 M 2 M_2 M2
操作系统,如电脑端的 Windows、MacOS,手机端的 Android、iOS;提供了在汇编语言和高级语言的使用和实现过程中所需的某些基本操作,还起到控制和管理计算机系统全部硬件和软件资源的作用,为用户使用计算机系统提供方便的条件。
操作系统是计算机系统的基础,它直接影响计算机的性能、稳定性和用户体验。随着技术的发展,操作系统也在不断进化,加入新的特性和功能,以适应不断变化的需求。
定稿:2024/1/24
版本:第一版
如有任何问题,请留言或私信,感谢!