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

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

时间:2024-02-16 21:11:55浏览次数:30  
标签:操作系统 代码 程序 硬件 第七章 源代码 CPU 怎样

程序的运行环境 = 操作系统 + 具体硬件
硬件核心考虑参数为CPU,不同的CPU指令集不同,能解释的机器语言种类也不同,其只能解释自身的机器语言,也就是常说的cpu指令集
常见的有: x86、MIPS、SPARC、PowerPC
本地代码: 通过将源代码进行编译后生成的机器语言的程序成为本地代码(机器直接运行的代码)
源代码: 通过文本编辑工具书写的各类语言代码(高级代码,人更容易理解编写)
windows应用程序的本地代码,通常是exe文件及dll文件等形式,CPU负责解析并运行从源代码编译而来的本地代码
由于内存、IO等不同的硬件设备地址构成不同,因此在早期操作系统不够完善时,所开发的应用软件存在直接操作计算机硬件的部分,导致了不同硬件的计算机需要针对改硬件进行应用软件适配,造成了资源浪费。随着操作系统的晚上,这种情况得到改善,应用并不直接操作计算机硬件,而是通过操作系统提供的API接口进行实现相关功能,与计算机硬件的操作全部交予操作系统进行处理,在适配上针对不同的硬件,只需要进行操作系统的适配,只要操作系统能正常运行,同样的软件就可以运行,大大提高了利用效率。
由于应用软件都是使用特定的CPU的本地代码完成,因此操作系统当前还不能克服CPU的差异。
不同的操作系统API不同:
由于不同的操作系统所提供的API路径调用方式等不同,因此应用软件必须根据不同操作系统来做开发,将程序移植到其它操作系统时,需要重写应用中利用到API的部分,(像键盘输入,鼠标输入,显示器。文件等外围输入输出设备都是通过操作系统API提供的)
相同操作系统下:
API调用方式一致,因而针对某特定类型操作系统开发的应用,在任何安装改操作系统的硬件上都可以运行
通过源代码分发实现克服CPU差异:
通过结合当前运行的硬件环境来编译应用的源代码,生成本地代码,实现克服CPU差异
通过虚拟机克服CPU差异:
例如使用java虚拟机,将java源代码编译成字节码后进行分发,在不同的操作系统上安装相适应的java虚拟机,在程序运行时,java虚拟机在将字节码解释成本地代码进行运行,实现了一次编译到处运行,但也存在在影响运行速度的缺点(因为运行时需要去将字节码解释成本地机器码)
BIOS: 基本输入输出系统,存储在ROM中,是预先内置在计算机主机内部的程序,可以控制键盘、磁盘显卡和启动引导程序的功能
引导程序: 存储在启动驱动器起始区域的程序,操作系统的启动器一般是硬盘或者CD-ROM或者软盘。
电脑开机后,BIOS会确认硬件是否正常,没有问题就启动引导程序,引导程序的功能就是将存在硬盘上的OS加载到内存中运行,虽然启动应用是OS的功能,但是OS不能自己启动自己,需要靠引导程序进行启动。

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

相关文章

  • 程序是怎样跑起来的 第八章
    本地代码:本地代码的内容就是数值的罗列集合(二进制的数据展示)编译器:负责将源代码转换为本地代码,每种语言都有其专用的编译器由于cpu类型不同,本地代码的类型也不同,编译器可以将源代码编译成不同cpu类型的本地代码交叉编译:在当前平台编译另外平台的本地代码,例如在win上编译linu......
  • 《程序是怎样跑起来的》第三章
    在阅读了《程序是怎样跑起来的》第三章之后,我仿佛揭开了计算机程序运行背后的神秘面纱。这一章节不仅为我提供了程序运行的具体流程图,还深入讲解了从源代码到机器码,再到操作系统与硬件交互的全过程。这些内容让我对程序的本质有了更深刻的认识,也激发了我进一步探索计算机世界的热......
  • Linux命令基础,黑马程序员学习笔记
    Linux命令基础命令基础格式command[-options][parameter]command:命令本身-options:[可选,非必填]命令的一些选项,可以通过选项控制命令的行为细节parameter:[可选,非必填]命令的参数,多数用于命令的指向目标等示例:ls-l/home/itheimals是命令本身,-l是选项,/home/itheim......
  • 《程序是怎样跑起来的》第四章读后感
    计应232朱思嘉,今日发表《程序是怎样跑起来的》第四章读后感第四章的主题围绕着程序的执行流程展开。从程序的编译、链接到执行,处处充斥着严谨。这一章详细解释了程序如何从人类编写的代码转化为计算机可以理解的机器语言。这其中涉及到的编译器、链接器等工具的工作原理,让我对编......
  • 《程序是怎样跑起来的》第六章读后感
    文件是我们用来在磁盘等存储媒介上保存数据的一种形式,本质上就是字节数据的有序集合。比如文本文件是由一系列文字字符组成,图像文件则是由图形数据构成,虽然表现形式不同,但它们都是以连续字节的形式存储的。接下来我们来了解一下文件压缩的一些基本机制。首先提到的是RLE(Run-Lengt......
  • 《程序是怎样跑起来的》第五章读后感
    内存和磁盘都是计算机中的存储部件,但它们的工作机制和特性有所不同。内存利用电流进行高速存储,但由于成本较高所以容量有限;而磁盘则是通过磁效应实现数据存储,虽然速度较慢但价格相对低廉,可提供大量存储空间。程序以存储程序方式保存在磁盘等存储设备中,并按照指令顺序被读入内存运......
  • 《程序是怎样跑起来的》第四章读后感
    在第四章中,作者详细介绍了如何熟练地使用内存这一关键的计算机组件。首先,4.1节讲述了内存的物理机制。内存实质上是一种名为内存IC的电子元件,内部包含电源、地址信号、数据信号和控制信号等多种引脚,通过这些引脚实现对内存的读写操作。内存内部有大量可存储8位数据的空间,当我们需......
  • 《程序是怎样跑起来的》第四五章知识点
    《让程序跑起来》第四五章知识点第四章:程序的内存管理内存的基本概念:介绍计算机内存的基本结构,包括RAM(随机存取存储器)的工作原理,以及内存与CPU之间的交互方式。程序的加载与执行:解释操作系统如何将程序从磁盘加载到内存中,以及CPU如何执行内存中的指令。堆与栈:介绍程序运行时的......
  • 《程序是怎样跑起来的》第六七章知识点
    第六章:程序的优化与调试性能优化:讨论如何优化程序的性能,包括减少不必要的计算、使用更高效的算法、优化数据结构等。代码调试:介绍常见的代码调试技术,如使用调试器(debugger)来跟踪程序的执行过程、设置断点、查看变量值等。错误处理与异常捕获:讲解如何编写健壮的代码,包括错误处理......
  • 程序员们有什么好的编程习惯?
    大家好,我是陶朱公Boy,一个认真生活,总想超越自己的程序员。前言知乎上有一个提问:程序员们有什么好的编程习惯?                            ↓↓↓今天,我们就这个话题一起来做个讨论。我的回答话说,每个程序员但凡有......