首页 > 编程语言 >程序是怎样跑起来的(第七章)

程序是怎样跑起来的(第七章)

时间:2024-02-27 22:44:59浏览次数:30  
标签:Java 操作系统 程序 硬件 第七章 源代码 CPU 怎样

程序在怎样的环境下运行
每个程序都有其对应的运行环境。程序的运行环境是通过操作系统和硬件(处理器、内存等)来表示的,也就是说,操作系统和硬件决定了程序的运行环境。一台计算机可以安装多种操作系统,因为操作系统有很多版本,有些应用程序可能只在特定版本的操作系统中运行。将硬件作为程序运行环境考虑时,CPU的类型非常重要,CPU只能解释特定种类的机器语言,不同类型的CPU能解释的机器语言也不同。机器语言的程序也称为本机代码。程序员使用C语言等编写的程序,在编写阶段都只是普通的文本文件,在任何环境下的文本文件不考虑字符编码问题的话都可以显示和编辑,这样的文件被称为源代码,对于源代码进行编译,可以得到本机代码。在大多数情况下,应用程序不是以源代码的形式分发的,而是以本机代码的形式分发的。计算机的硬件并不只有CPU还有用来存储程序指令和数据的内存通过I/O连接的键盘、显示器、硬件、打印机等外部设备。在不同的计算机中,这些外部设备的访问方式也有所不同。windows为消除这些硬件差异作出的巨大贡献。在windows应用程序中,键盘输入、显示器输出等操作不是通过直接访问硬件来实现的,而是通过向windows发出请求来间接的实现的。这样一来,程序员就不需要关注内存和I/O地址的差异了,因为windows代替了应用程序对各种不同机型的硬件进行操作。然而,即便是windows也无法彻底抹平CPU类型的差异,因为windows应用程序都是以特定CPU的本机代码的形式来分发的。
同一种机型的计算机也可以安装多种操作系统,如果说CPU类型的差异表代表机器语言的差异,那么操作系统的差异就代表应用程序向操作系统发出请求方式的差异。应用系统向操作程系统发出请求的方式是由API来决定的。由于不同的操作系统提供的API不同,所以如果要将一个应用程序移植到另一个操作系统上,就必须重新编写其中使用API的部分。API提供了键盘输入、鼠标输入、显示器输出、文件输入或输出等与外部设备之间输入或输出的功能。在同一个系统中,无论使用怎样的硬件,API都是基本相同的。因此,按照操作系统的API编写的程序,在任何硬件上都可以运行。当然,如果CPU类型不同,机器语言也会不同,本机代码不可能保持不变。在这种情况下,我们需要使用对应的编译器重新编译源代码,以便生成适配各种CPU的本机代码。在LINUX中安装新程序时,我们可以选择包含所有必要程序的软件包,也可以选择通过源代码来安装。其中第二种方式就是将源代码先在本机上编译后再使用。Linux程序的源代码大多是用C语言来编写的,这些源代码可以从遍布互联网的LINUX仓库中获取。LINUX内置了标准的C语言编译器,使用该编译器就可以按照当前LINUX的运行环境生成对应的本机代码。
不将源代码编译为本机代码,而是一种中间代码,就可以提供不依赖特定操作系统和硬件的运行环境了,Java使用的就是这种方法。Java这个词有两个含义,一个是Java编程语言,另一个是Java程序运行环境。和其他编程语言一样,用Java编写的源代码也需要经过编译才能运行,但是编译后生成的并不是针对特定的CPU的本机代码,而是一种称为字节码的代码。字节码的运行环境称为Java虚拟机。java虚拟机会将Java字节码逐一转换为本机代码来执行。从操作系统的角度来看,Java虚拟机也是一种应用程序,但从Java应用程序的角度来看,Java虚拟机就是其运行环境,也就是操作系统+硬件的结合体。然而,看上去好处多多的Java虚拟机也有他自己的问题。首先,不同的Java虚拟机之间并不能做到完全兼容。Java虚拟机很难做到运行任何字节码程序这一点。其次是运行速度,需要在运行时将字节码转换成本机代码的Java程序,在运行速度上比直接编译成本机代码的C语言程序要慢。通过互联网来使用硬件、操作系统、应用程序等计算机资源的计划称为云计算。根据其所提供的具体服务,云计算可分为SAAS、PAAS和IAAS几种类型。简单来说,SAAS提供的是应用程序,PAAS提供的是操作系统,IAAS提供的是硬件。程序的运行环境还包括BIOS,BIOS存储在ROM中,是预先内置在计算机中的一段程序,BIOS除了提供键盘和磁盘设置设备的基本控制程序,还负责启动引导装入程序。引导装入程序是存储在启动磁盘开头的一段很短的程序。启动磁盘一般是硬盘,但光盘和USB驱动器也可以作为启动磁盘使用。操作系统的启动需要由引导装入程序来完成。

标签:Java,操作系统,程序,硬件,第七章,源代码,CPU,怎样
From: https://www.cnblogs.com/HYH16/p/18033129

相关文章

  • 《程序是怎样读起来的》第九章读后感
    读完《程序是怎样读起来的》的第九章,我深感启发。这一章主要探讨了如何有效地阅读和理解复杂的程序代码,对于提升我的编程能力和解决问题的能力有着很大的帮助。首先,这一章强调了阅读代码的重要性。在编程过程中,我们往往花费大量时间编写代码,但却很少花时间去阅读和理解别人的代码......
  • 《程序是怎样跑起来的》第十章读后感
    在阅读《程序是怎样跑起来的》第十章后,我对于程序运行的底层机制有了更为深入的理解。这一章主要探讨了程序如何在操作系统的管理下运行,以及操作系统如何提供各种服务来支持程序的运行。首先,我了解到程序在运行过程中,需要经过一系列的步骤,包括编译、链接、加载等。这些步骤都是为......
  • 《程序是怎样跑起来的》第十一章读后感
    在阅读《程序是怎样跑起来的》第十一章后,我对于程序的运行和计算机的工作原理有了更为深入的理解。这一章主要探讨了计算机的硬件架构以及程序如何在硬件上实现并行计算,对于我理解计算机系统的底层实现具有很大的帮助。首先,这一章介绍了计算机的硬件架构,包括CPU、内存、硬盘、显......
  • 《程序是怎样跑起来的》第四章
    本章主要讲内存,计算机是进行数据处理的设备,而程序表示的就是处理顺序和数据结构。由于处理对象数据是存储在内存和磁盘上的,因此程序必须能自由地使用内存和磁盘。由此可见内存的重要性。内存实际上是一种名为内存IC的电子元件,内存IC中有电源、地址信号、数据信号、控制信号等用......
  • 《程序是怎样跑起来的》第八章读后感
    《程序是怎样跑起来的》第八章主要讲了从源文件到可执行文件,其中包括计算机只能运行本地代码,本地代码的内容,编译器负责转换源代码,仅靠编译是无法得到可执行文件的,启动及库文件,DLL文件及导入库,可执行文件运行时的必要条件,程序加载时会生成栈和堆,有点难度的Q&A九个章节,其中我学到CPU......
  • 《程序是怎样跑起来的》第八章读后感
    读完《程序是怎样跑起来的》第八章,我对计算机的工作原理和程序的执行过程有了更深入的理解。这一章节详细介绍了程序在计算机中的运行机制,包括指令的执行、数据的处理和内存的管理等方面。通过阅读这一章,我不仅了解了计算机的基本工作流程,还对编程语言的本质有了更深刻的认识。首......
  • 《程序是怎样跑起来的》第五章
    读书笔记:5.1:1.磁盘缓存指将从磁盘中读取的数据暂时保存在内存中,当需要再次读取相同的数据时,就可以不访问磁盘,而是直接从内存中快速读取。1.虚拟内存可以让内存容量小的计算机运行大型程序。.DLL是DynamicLinkLibrary(动态链接库)的缩写。.函数的链接方式分为静态链接和动态链接......
  • 《程序是怎么跑起来的第六章》
    《程序是怎样跑起来的》第六章主要讲述的是关于数据压缩的内容。在这一章中,作者首先介绍了文件是以字节为单位存储在计算机中的,并详细讲解了压缩的一种方式——游程编码,也就是将连续重复的数据转换成“数据*重复次数”的形式。接下来,作者进一步阐述了RLE算法的机制及其局限性,这种......
  • 程序是在何种环境中运行的
    应用的运行环境是指操作系统和计算机本身(硬件)的种类。7.1运行环境=操作系统+硬件,让我们更加了解了运行环境。7.2讲述Windows克服了CPU以外的硬件差异。7.3介绍不同操作系统的API不同。7.4讲了FreeBSDPort帮你轻松使用源代码。7.5教我们利用虚拟机获得其他操作系统环境。......
  • 《程序是怎样跑起来的》第九章“操作系统和应用的关系”
    在阅读了“操作系统和应用的关系”后,我对操作系统和应用程序之间的关系有了更深入的理解。这一章详细地解释了操作系统如何为应用程序提供服务,以及应用程序如何利用操作系统提供的服务来更好地运行。我了解到应用程序的运行离不开操作系统的支持。应用程序在运行时,需要调用操......