Skip to content

Latest commit

 

History

History
25 lines (16 loc) · 1.91 KB

File metadata and controls

25 lines (16 loc) · 1.91 KB

零.从hello world谈一个程序的执行周期


计算机系统是由硬件和系统软件组成的,如图就是一个典型系统的硬件组织。(主存储器是内存,磁盘是硬盘)

#include<stdio.h>

int main()
{
    printf('hello world\n');
}

写完这个程序,保存,然后运行他。首先有一个概念,程序的运行并不是直接按照原本的样子进行。计算机只存储了二进制01,而后用01组成ASCii码代表不同的字符。比如说#对应35之类的。所以要运行这么一个程序是需要进行编译处理,处理成计算机能明白的01进行处理。

执行的四个顺序分别是hello.c->预处理器(cpp)->编译器(ccl)->汇编器(as)->链接器(id)->输出。

硬件当中的执行顺序:首先我们通过键盘设备编写程序,保存在硬盘当中。我们要运行该程序,于是用DMA将硬盘中的程序读取到内存当中。内存将程序传给CPU处理,CPU处理完成返回给显示器,输出内容。
执行的过程很像是一个搬运的过程。为了能够更加快速的搬运,CPU当中有一个L1高速缓存,在CPU外有一个L2高速缓存。

执行hello这个程序的时候产生一个进程占用了CPU。CPU的处理速度是非常快的,是内存执行的100倍,而内存的执行速度又是硬盘执行速度的100000倍。毕竟机械比不上电子。为了能够有效利用CPU性能,而不是执行一个进程就占用一次总线,于是有了一个中断的操作,有时候程序执行到一半,突然中断去执行其他程序,执行完成后回来继续执行这个中断的程序。因为CPU处理速度很快,我们感觉CPU像是一直在处理。但是中断只适用于小批量的处理,比如键盘的输入,对于数据量比较大的则不行。这个时候就有了DMA来处理。

虚拟存储器……to be continue