zoukankan      html  css  js  c++  java
  • “C语言” 读书札记(四)之[再续编译执行]

     
    介绍
     
      上一篇a.out(hello,world程序)执行之后发生了什么?这次通过系统硬件和操作做粗略的描述,这样对我们也是有一些帮助的。
     
      如果中间若有误,请不吝赐教。
     
     从键盘上读取a.out命令
     
      当我们打开我们的终端的时候,shell程序会执行它的指令,等待我们的输入。
      当我们在键盘上输入"a.out",敲回车时,shell就知道我们结束了命令的输入。然后shell的指令就会逐一读取目标文件a.out的代码和数据到寄存器,再把代码和数据拷贝到主存储器。
                                     流程图如下

                                     那么在硬件中是如何奔跑的呢?
     

    科普普及:

    1、主存用来存放指令和指令处理的数据。

    2、处理器(CPU的简称)是解释(或执行)存储在主存中指令的引擎。在任何一个时间点上,CPU中的PC(程序计数器)都指向主存中的某条机器语言指令。

     3、有一种DMA(直接存储器存取)技术,数据可以不通过处理器而直接从磁盘到达主存储器。

    从存储器写输出串到显示器
     
     1、 一旦a.out目标文件中的代码和数据被加载到了主存储器,CPU就开始执行main.c程序的主程序中机器语言指令。
     2、 这些指令将"hello,world\n"串中的字节从主存储器中拷贝到寄存器文件。
     3、 再从寄存器中文件拷贝到显示设备,最终显示在屏幕上。
     
    流程图:
      

                                      那么这些在硬件中是如何奔跑的呢?
     
     
     

    总结
     
    从两个角度分析上面的问题:
      机器指令:最初是在磁盘上——》(程序加载时)拷贝到主存——》(处理器运行指令时)从主存拷贝到处理器。
      数据串:最初是在磁盘上——》拷贝到主存——》显示设备。
     
    参考文献:
    《深入理解计算机系统》
     
    推荐
     
     
     
     
     
     
     
     
     
     
     
     
     
  • 相关阅读:
    libv4l 库【转】
    Leap Motion颠覆操控体验的超精致手势追踪技术【转】
    嵌入式Linux下Camera编程--V4L2【转】
    C语言高级应用---操作linux下V4L2摄像头应用程序【转】
    通过摄像头设备采集一帧数据的例子程序(完整版)【转】
    V4L2 camera 驱动 capture测试程序【转】
    v4l2 spec 中文 Ch01【转】
    Video for Linux Two API Specification Revision 2.6.32【转】
    Video for Linux Two API Specification revision0.24【转】
    OpenCV实践之路——人脸检测(C++/Python) 【转】
  • 原文地址:https://www.cnblogs.com/baochuan/p/2559766.html
Copyright © 2011-2022 走看看