美文网首页
程序怎么跑起来的

程序怎么跑起来的

作者: 夏至悲歌 | 来源:发表于2019-01-23 22:36 被阅读0次

            linux下的可执行文件有三个段文本段(text)、数据段(data)、bss段

            对于堆来讲,频繁的new/delete 势必会造成内存空间的不连续,从而造成大量碎片,使程序效率降低;对于栈来讲,则不会存在这个问题,因为栈是先进后出的队列,永远都不可能有一个内存块从栈中间弹出。

            链接通俗的说就是把几个可执行文件。如果程序A中引用了文件B中定义的函数,为了A中的函数能正常执行,就需要把B中的函数部分也放在A的源代码中,那么将A和B合并成一个文件的过程就是链接了。有专门的过程用来链接程序,称为链接器。

            加载的过程可以这样理解:先为程序中的各部分分配好虚拟地址,然后再建立虚拟地址到物理地址的映射。其实关键的部分就是虚拟地址到物理地址的映射过程。程序装在完成之后,cpu的程序计数器pc就指向文件中的代码起始位置,然后程序就按顺序执行。

            编译是将源文件转换成汇编代码的过程,具体的步骤主要有:词法分析 -> 语法分析 -> 语义分析及相关的优化 -> 中间代码生成 -> 目标代码生成(汇编文件.s)

    相关文章

      网友评论

          本文标题:程序怎么跑起来的

          本文链接:https://www.haomeiwen.com/subject/pycejqtx.html