浅显的理解程序是如何在计算机上运行的

计算机系统是由硬件和系统软件组成的,他们共同来运行应用程序。

  1. 信息就是位+上下文
    一个程序的生命是从一个源程序(source program)或者源文件(source file)开始的,该源程序是由程序员通过编辑器创建并保存为文本文件的,文件名就是(例如Hellow.c)。
    源程序实际上就是一个由0和1组成的位(比特)序列,这些位被组织成8个一组,称为字节,每个字节表示程序中的某个文本字符。大部分都使用ASCII码来表示文本字符。每行文本都是以一个看不见的换行字符“\n”结束的,所对应的整数值是10。只由ASCII码构成的文件称为文本文件,其他的文件称为二进制文件(例如音频图像)。
  2. 程序被其他程序翻译成不同的格式
    刚开始的程序也就是源程序,是可以被人读懂的程序。但是为了能在计算机中运行程序,每条语句都得被其他程序转化成一系列的低级机器语言指令。然后这些指令按照一种称为可执行目标程序(executable object program)的格式打好包,并以二进制磁盘文件的形式存放起来,也称位目标程序。
  3. 了解编译系统如何工作是大有益处的
    优化程序性能
    理解链接时出现的错误
    避免安全漏洞
  4. 处理器读并解释储存在存储器中的指令
    此时该目标文件已经存放在磁盘上
  5. 系统的一部分硬件
    寄存器:寄存器是CPU内部用来存放数据的一些小型存储区域,用来暂时存放参与运算的数据和运算结果。寄存器拥有非常高的读写速度,所以在寄存器之间的数据传送非常快。它是由具有存储功能的触发器组合起来构成的。一个触发器可以存储1位二进制代码,故存放n位二进制代码的寄存器,需用n个触发器来构成。它可以并行也可以串行。
    -主存:是一个临时存储设备,在处理器执行程序的时候,被用来存放程序和程序处理的数据。·
  6. 执行程序
    shell程序执行它的指令,等待我们输入命令。当我们在键盘上输入字符串“./hello”后,shell程序就逐一从磁盘读取字符到寄存器,再把它存放到存储器中。在这里插入图片描述
    而利用DMA的技术,数据可以不通过处理器而直接从磁盘到达主存,然后处理器开始执行目标程序中的指令,然后这些字节从存储器中拷贝到寄存器堆,再从寄存器堆中拷贝到显示设备。在这里插入图片描述
    在这里插入图片描述
  7. 高速缓存
    系统花费大量的时间把信息从一个地方挪到另一个地方。以后将学习高速缓存存储器SRAM。
  8. 进程
    进程是操作系统对运行程序的一种抽象。在一个系统上可以同时运行多个进程,而每个进程都好像在独占使用硬盘,我们称之为并发运行,实际上是一个指令和另一个指令是交错执行的,称为上下文切换。在任何时候,系统上都只有一个进程正在运行。当操作系统决定从当起进程转移控制权到某个新进程时,它就会上下文切换,即保存当前进程的上下文,恢复新进程的上下文,然后将控制权转移到新进程,新进程就会从它上次停止的地方开始。
  9. 线程
    一个进程实际上可以由多个线程的执行单元组成,每个线程都运行在进程的上下文中,并共享同样的代码和全局数据。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

努力打破规则的小雄

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值