兴海北路

---男儿仗剑自横行
<2010年1月>
272829303112
3456789
10111213141516
17181920212223
24252627282930
31123456

统计

  • 随笔 - 85
  • 文章 - 0
  • 评论 - 17
  • 引用 - 0

常用链接

留言簿(6)

随笔分类

随笔档案

收藏夹

全是知识啊

搜索

  •  

最新评论

阅读排行榜

评论排行榜

Linux下C语言程序开发过的程视图
by falcon<zhangjinw@gmail.com>
2008-03-01

    到今天,关于"Linux下C语言开发过程"的一个简单视图总算粗略的完成了,从寒假之前的一段时间到现在过了将近一个月左右吧。写这个主题的目的源自 “shell编程范例之进程操作”,当我写到“shell编程范例之进程操作”这一节时,“突然”对进程的由来、本身和去向感到“迷惑不解”。所以想着好 好花些时间来弄清楚它们,现在发现,这个由来就是这里的程序开发过程,进程来自一个普通的文本文件,在这里是C语言程序,C语言程序经过编辑、预处理、编 译、汇编、链接、执行而成为一个进程;而进程本身呢?当一个可执行文件被执行以后,有了exec调用,被程序解释器映射到了内存中,有了它的内存映像;而 进程的去向呢?通过不断的执行指令和内存映像的变化,进程完成着各项任务,等任务完成以后就可以退出了(exit)。
    这样一份视图实际上是在寒假之前绘好的,你可以从附件中看到它;不过到现在才明白背后的很多细节。这些细节就是下面的这些blogs,你可以对照“视图”来阅读它们。
    1、把VIM打造成源代码编辑器(源代码编辑过程:用VIM编辑代码的一些技巧)
    2、GCC编译的背后 第一部分:预处理和编译 第二部分:汇编和链接(编译过程:预处理、编译、汇编、链接)
    3、程序执行的那一刹那 (执行过程:当我们从命令行输入一个命令之后)
    4、进程的内存映像 (进程加载过程:程序在内存里是个什么样子)
    5、动态符号链接的细节(动态链接过程:函数puts/printf的地址在哪里)
    6、代码测试、调试与优化小结(程序开发过后:内存溢出了吗?有缓冲区溢出?代码覆盖率如何测试呢?怎么调试汇编代码?有哪些代码优化技巧和方法呢?)
    7、为你的可执行文件“减肥”(从"减肥"的角度一层一层剖开ELF文件)
    8、进程和进程的基本操作(关于进程本身的相关操作,主要是介绍了一些shell命令)
    需要补充的是,“高等数学”(higher mathematics)、“线性代数”(linear algebra)、“数据结构”(data structure)、“数学建模”(mathematical modeling)、“设计模式”(design pattern)、“算法”(algorithm)、“离散数学”(discrete mathematics)、“数学分析”( mathematical analysis)等应该是程序设计必备的一些知识,在掌握相关工具的同时,这些相关的理论课程也需要很好的熟悉。
    欢迎大家一起交流和探讨。

PS: 因为时间关系,很多blog都写得比较仓促,里头有错别字甚至是语义表达不清晰的地方,敬请原谅,我会逐步花时间进行检查的。

推荐资料

[1] mathematical modeling
http://jpkc.nwu.edu.cn/sxjm/yxal.htm
[2] design pattern
[3] algorithm
http://oss.lzu.edu.cn/blog/blog.php?/do_showone/tid_338.html

posted on 2008-03-14 15:17 随意门 阅读(549) 评论(0)  编辑 收藏 引用


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理