程序是如何运行的
计算机程序是怎样运行的呢?对于多数人来说,或多或少地知道任何程序必须首先有人写出来,即“编程”,然后放到计算机里即可运行。这种解释当然是过于简单了。计算机程序的运行实际上是一件十分复杂的事情,牵扯到方方面面。
首先当然是进行编程,而编程需要计算机程序设计语言作为基础。对于绝大多数编写程序的人来说,使用的编程语言称为“高级程序设计语言”,如C,C++ ,Java等。但由于计算机并不认识高级语言编写的程序,编好的程序需要通过编译变成计算机能够识别的机器语言程序,而这需要编译器和汇编器的帮助。其次,机器语言程序需要加载到内存,形成一个运动中的程序,即“进程”,而这需要操作系统的帮助。进程需要在计算机芯片CPU上执行才算是真正在执行,而将进程调度到CPU上运行也由操作系统完成。再次,在CPU上执行的机器语言指令需要变成能够在一个个时钟脉冲里执行的基本操作,这需要指令集结构和计算机硬件的支持,而整个程序的执行过程还需要操作系统提供的服务和程序语言提供的执行环境( runtime environment)。这样,一个从程序到微指令执行的整个过程就完成了。下图所示的就是这个过程。
当然了,上图描述的从程序到结果的演变过程还是过于简单。我们只是从一个线性的角变来看程序的演变过程,而没有考虑到各种因素之间的穿插和交互过程。不过,这种描述能够帮助理解整个程序是如何在计算机上执行的问题。
从这个描述可以看出:程序的运行至少需要如下4个因素:·
- 程序设计语言。
- 编译系统。
- 操作系统。
- 指令集结构(计算机硬件系统)。
操作系统在程序的执行过程中具有关键的作用。
需要提醒的是,上图给出的程序执行过程是从高级语言编写的程序开始,而实际并非总是这样。事实上,程序可以直接在机器语言或汇编语言上编写。用这种称为“低级”的语言编写出来的机器语言程序无需经过编译器的翻译就可以在计算机指令集上执行。如果是在汇编语言上编写的汇编程序,则只需要经过汇编器的翻译即可加载执行。
什么是操作系统
Operating Systems 指的就是掌控局势的一种系统。也就是说计算机里面的一切事情均由Operating Systems来掌控。那么,我们现在面临两个问题:第一个问题是操作系统到底是什么?第二