程序代码是软件的核心载体,软件开发的主要产出是代码,但没有运行的代码是没有任何意义的
程序运行的原理
一般书写的代码是文本格式的代码,不能直接运行,需要被编译器编译成存储在文件系统中可以被操作系统运行的可执行代码。程序完成计算任务需要把程序加载到内存中,并在操作系统的管理调度下由CPU执行。
进程包括可执行代码、内存堆空间、栈空间、供操作系统管理的数据结构。
程序执行过程
(1)操作系统将可执行代码加载到内存中,并生成相应的数据结构和内存空间;
(2)从可执行代码的起始位置读取指令并交给CPU顺序执行。若遇到跳转指令时,需要跳转到相应位置执行;
(3)程序运行时需要创建数组等数据结构时,会在无序的堆空间申请相应的内存空间,把此内存首地址记录到进程栈中。分配到内存地址记录在栈中
(4)栈由操作系统维护,主要用来记录函数内部的局部变量、堆空间分配的内存地址等
(5)每次函数调用,操作系统都会创建一个栈帧。