当前位置:编程语言->C++语言 ->C++语言零基础入门教程:2.8 从代码上看程序生死周期(生死循环,生命周期)

原创版权标志C++语言零基础入门教程:2.8 从代码上看程序生死周期(生死循环,生命周期)

作者:codexia  发表时间:2015-10-4  阅读:
[摘要] 从你双击exe文件到系统又去调度其他进程运行,这个过程经历了加载器加载程序,系统创建进程线程,然后启动运行时库执行,运行时库引导执行到main函数,然后执行你写的代码逻辑,然后退回运行时库执行,再退回加载器执行,加载器执行完毕。最后又回到了系统的调度程序执行。这个过程,就是一个程序的生死周期,也就是程序的生死过程。当你在双击exe文件,又会开始一轮循环。如此就是程序的生死周期了。

    前面的几节课中,我们已经简单的介绍了第一个程序的基本知识框架。这些东西是我们在后面代码中经常使用的,我想你应该清楚了吧。

    循环周期动态图
    好的,那么我们现在来看看这个程序的生命周期。生命周期这个词,看上去很高大上,通俗点说就是一个程序的生死。那什么叫做程序生,什么叫做程序死呢?
    这里在代码方面来阐述一下程序的生和死。程序运行于CPU中存储于内存中时,才表示程序是活的。当程序执行完毕退出后,就从CPU撤出执行,也从内存中撤出存储的东西,这样程序就死了。
    在系统使用方面来看,我们双击exe启动一个程序,然后操作exe完成一些工作,然后关闭退出程序,然后就找不到这个程序的进程了。这样程序就经历了一个生死周期。exe文件是程序的物质基础,exe里存储了程序运行时需要的代码和数据,但是这个文件本身并不代表程序,只能说是程序文件。只有这个文件被系统载入内存,被执行了,exe文件里的数据就在内存和CPU中活跃起来,这样就产生了一个程序活体。我们看到的程序,都是活体,否则我们根本就不知道程序的样子。
    我们写代码,生成程序文件时,编译器等就根据我们的代码,根据设定的生成规则,将代码编译链接创建了一个exe文件。而exe文件...【登录后阅读更多内容】

微信扫码关注公众号CPP技术网,微信号cpp_coder,关注我们的公众号,阅读更多精彩内容!每天还可以领取大红包哦!!!每天还可以领取大红包哦!!!每天还可以领取大红包哦!!!
文章来源:C++技术网原创文章版权为网站和作者共同所有,会员文章禁止转载。非会员文章转载做好本文超链接即表示授权转载。通过文章下面的分享按钮可以自由分享所有文章。


  •     2015/10/17 7:13:39回复
    有专门的C%2b%2b运行时库安装文件吗,而不是在开发工具中带的?codexia: 回复 说:可以去网上下载。【回复】张恩域: 回复 codexia说:哪里可以啊【回复】

  • zz773922    2016/5/26 17:04:46回复
    很抽象,不过还是能懂。

  • snkzlg4    2016/5/17 14:03:02回复
    这一篇真的写的很仔细啊。。特别容易看晕。。
    我感觉这里的内容,比如运行啊什么的流程,可以出一个番外篇算了。
    codexia: 回复 snkzlg4 说:恩恩【回复】

  • yang490520    2017/9/22 20:44:58回复
    执行完代码逻辑后,为什么又要退回到运行时库里去,运行时库所做的清理工作是什么?运行时库运行完后退回到加载器执行,加载器执行的工作时负责把程序的内存给清除腾出内存来吗?
    我们打开一个软件的时候,软件是否结束运行是我们使用者决定的,为什么软件可以不单线呈的走完生死周期,而是可以选在在一个时点停留并继续占用内存呢?
    codexia: 回复 yang490520 说:程序的执行是系统来管理的,而程序想被执行,需要被加载到内存,程序自己无法进入到内存,需要加载器帮忙。而不同的程序由不同的运行时库写的,运行时库是按照系统接口写的,运行在运行时库上的程序,必然是经过运行时库才能跑起来。运行时库只是负责启动你写的程序,相当于系统和你程序的一个中间人。当然,你也可以不需要运行时库,直接基于系统API开发。加载器加载完你的程序,可以算是完成了工作,这个是系统内部程序,我们知道大概意思就行。加载器把我们程序文件加载到内存,然后将执行指令引向我们的程序就差不多了。后面的问题就是多线程的问题了。很早以前的程序运行在控制台下,是单线程的。现在可以支持多线程运行,只要主线程还在,其他子线程就可以继续使用。线程和进程都会被系统调度,调到谁就执行谁,没有调用,就在内存中等着CPU。大概 就是这样,详细的学习,要看操作系统原理。【回复】

返回顶部

在线提问
问题标题:
问题描述:(简陋的描述会导致问题被最后回答、没有针对性回答甚至无法解答。请确保问题描述的足够清楚。)