编译器与操作系统本质的区别?
一、编译器与操作系统本质的区别
译程序是一支将抽象度较高的编程语言程序(也称源程序)转化成抽象度较低的编程语言程序(也称目标程序)的程序。抽象度的两端分别是机器语义和人理解语义。处理器体系和编程语言是一支编译程序的根本属性。
以上对编译程序的定义描述在现代意义下对全面认识编译程序是不够的,因为它没有涉及操作系统,没有涉及现代的复杂的程序构建过程。有一定开发经验的程序员都知道,程序的“编译过程”包括编译、链接(静态链接与动态链接)、调试,还可能包括组态配置和安装两步。“编译”一词已经不能很好描述这个过程。整个过程可称为程序构建,而编译只是名列前茅步,在这一点上,编译程序在传统意义上与现代意义上产生了不同。
操作系统是一类比较独立的系统程序,操作系统有支持各种图灵机的体系类型,比如16位DOS,32位Windows,X86的BSD,ARM的 Linux等。而系统程序一般是指一支为应用程序直接提供半成品(为应用程序提供执行的虚拟环境)和协调多个应用程序并行运行的程序。所谓半成品是指,系统程序的一部分(指令序列)也是应用程序的一部分(指令序列),但这部分程序不专属任何应用程序,它是共享的。例如各种新硬件的驱动程序、C标准库函数、POSIX库函数等。而作一个协调程序,操作系统表现出与一般应用程序的程序性,如独立调度的线程,只是它们运行在权力更高的状态下。协调程序如线程调度程序。
延伸阅读:
二、非操作系统程序与操作系统的关系
操作系统泛指像Linux这样的现代32位操作系统,而非操作系统程序运行在操作系统之上,对操作系统存在可能的依赖的程序。
其实只要是运行在某操作系统之上的程序都会烙上该操作系统的印,对操作系统有依赖,包括编译程序。不过这些程序对操作系统的依赖程度和依赖的内容确实有很多区别。例如一支最简单的Hello world程都会对操作系统的C库产生依赖,如果去掉Hello world程序的输入输出功能,只作加减或逻辑运算,Hello world程序依然会对操作系统有少量依赖,因为Hello world程序由运行在该操作系统上的编译程序编译的,有特定的目标文件格式,并由该操作系统的载入程序载入内存运行。这种只在形式上对OS存在依赖的“无用”程序可谓是最独立于OS的程序。在此基础之上,其它程序都对OS有不同程度的依赖,依赖表现在对OS内的各种程序库的依赖,比如C标准库,POSIX系统库,线程库、网络库和其它基于这些基础库的第三方应用代码库。

猜你喜欢LIKE
相关推荐HOT
更多>>
编译器与操作系统本质的区别?
一、编译器与操作系统本质的区别译程序是一支将抽象度较高的编程语言程序(也称源程序)转化成抽象度较低的编程语言程序(也称目标程序)的程序...详情>>
2023-10-13 23:05:06
C#中,事件是成员不是类型中,成员和类型有什么区别?
一、C#中,事件是成员不是类型中,成员和类型的区别编程语言的基本部分包括类型、常量、变量、运算符、语句。类型指的是数据类型,C#中类型有值...详情>>
2023-10-13 22:21:35
云计算和大数据有什么区别?
一、云计算和大数据的区别云计算和大数据都是当前IT领域热门的技术,它们有一些相似之处,比如都与大规模的计算和存储有关,但是也有一些不同之...详情>>
2023-10-13 19:34:32
多模态(multi-modal)和多视图(multi-view)有什么区别?
一、多模态(multi-modal)和多视图(multi-view)的区别多模态和多视图是两个不同的概念,涉及到不同领域的研究。多模态(multi-modal)指的是...详情>>
2023-10-13 18:34:04热门推荐
大数据分析用什么软件?
沸编译器与操作系统本质的区别?
热Rust使用crate名和crate关键字有什么区别?
热C#中,事件是成员不是类型中,成员和类型有什么区别?
新安卓开发的开发工具Eclpise和AndroidStudio有什么区别?
C++虚函数和C#虚函数的区别?
大数据与数据库有什么区别?
Kaggle的比赛和平时的数据分析有什么区别?
云计算和大数据有什么区别?
数据中台和业务中台有什么区别?
多模态(multi-modal)和多视图(multi-view)有什么区别?
随机优化、鲁棒优化和分布鲁棒优化有什么联系和区别?
对于QFile,delete,deletelater(),close()有什么区别?
cmnet和cmtds的区别?
技术干货






