当前位置: 首页 > 操作系统, 操作系统&&数据库 > 正文

程序员的编程心法–序章

                                             程序员的编程心法

                                                                                                                                                           ———–序章

                之前在学习LINUX网络编程时,有个学长告诉我,编程不光要写好代码,还要懂得代码在底层在内存,在CPU运算过程中到底是如何运行的,要站在系统的角度上审视一个程序,思考自己的程序是否能够移植到别的平台上,是否可以封装成一个独立的函数。要了解编译器级别,机器级别的代码运行才能在编程的道路上走的更远。

             为此我也买了本It界的圣经《深入理解计算机系统》这本书正好解决的就是这个问题,这本书就是再讲LINUX环境下的编程与很多要注意的地方。

           我决定以这个标题开始,总结记录我学习这本书的过程,程序人生,与诸君共勉。

        从哪个最经典的程序HELLO,WORD!说起,以后的文章均建立在Linux的环境下,编译器为GCC。这个程序的生命周期我是从一个源程序开始的,即是从程序员写好这个程序开始的。

         首先它是一个源文件hello.c 经过编译后才能成为一个可以运行的程序,我们现在来浅析下这个编译的过程。

             首先是hello.c文件这是一个纯文本文件,里面存的是文本,在计算机中以ASCII码来保存,接着进入预处理阶段(之前的博文已经详细讲了预处理)此时文件变为hello.i此时的程序依然是文本形式,接着是编译器处理(编译器级别的处理开始了)文件变为hello.s此时依然是文本文件不过高级语言程序文本已经被转化为汇编程序文本,下来由汇编器处理文件变为hello.o这是一个可重定位目标程序(全是二进制的)最终由连接器将此程序需要的库中的函数连接起来,————》生产a.out(或者自己起名字)可执行文件。

           到此这个程序算是成了,接下来就可以运行了。
          作为序章顺便对计算机系统做一个小结:
             计算机系统由一个硬件与软件组成,他们协同做事以保证应用程序的正常运行,就像这个最简单的程序,其实运行这个程序的大部分时间都用在了,存储器,寄存器,总线设备,内存中的复制数据,所以存储类设备也是系统的一个重要组成部分。其实不管是寄存器,高速缓存,硬盘,主存,其实都是一个缓存体系。操作系统内核是应用程序和硬件之间的媒介:
           它提供三个最基本的抽象 
                      1.文件是对总线设备的冲抽象。
                      2.虚拟存储器是对主存和磁盘的抽象。
      3.进程是对处理器和内存和总线设备的抽象。
   计算机系统的一个重大课题就是对不同的层次结构进行抽象,来隐藏其中的复杂性。

版权声明:本文为博主原创文章,未经博主允许不得转载。

]]>

本文固定链接: http://zmrlinux.com/2015/04/09/%e7%a8%8b%e5%ba%8f%e5%91%98%e7%9a%84%e7%bc%96%e7%a8%8b%e5%bf%83%e6%b3%95-%e5%ba%8f%e7%ab%a0/ | Kernel & Me

该日志由 root 于2015年04月09日发表在 操作系统, 操作系统&&数据库 分类下, 你可以发表评论,并在保留原文地址及作者的情况下引用到你的网站或博客。
原创文章转载请注明: 程序员的编程心法–序章 | Kernel & Me