“Basic Theory Of Computer Science”的版本间差异
(创建页面,内容为“{{In_Progress}} This article is intend to explain to new users, who are unfamiliar with computer theory, basic concepts of computing and computer systems organization and structure. The idea of the creation of this article was inspired by the general disorganization of such kind of theoretic articles and pages at OSDev.org. And as long as theory is '''very''' important for beginners ''(and as long as they generally never ever read serious books)'', this c…”) |
|||
第1行: | 第1行: | ||
{{In_Progress}} | {{In_Progress}} | ||
本文旨在向不熟悉计算机理论,计算的基本概念以及计算机系统的组织和结构的新用户解释。 | |||
创建本文的想法是受到OSDev.org上此类理论文章和页面的普遍混乱的启发。 | |||
而且只要理论对初学者来说 '非常' 重要 '(并且只要他们通常从未读过严肃的 [[books]])',这种理论材料的混乱结构就会引起全面研究OS开发的问题。 但是这篇文章是为了解决这个问题 | |||
不可能在一篇文章中研究物理学,电路和计算机科学的所有主题。 相反,所有这些主题都将被简短地触及。 | |||
要按有组织的顺序这样做,我们必须将系统划分为各个层次,每个层次都有自己的规则和目标。 为此,我们必须 “管理系统的复杂性” | |||
== | == 管理电子系统的复杂性 == | ||
[[File:Abstraction_Layers.png|thumb|300px|right| | [[File:Abstraction_Layers.png|thumb|300px|right|抽象级别]] | ||
你用来阅读本文 “(让我猜这是一台个人计算机)” 的系统是人类有史以来最复杂的系统之一。 试想几个单独的集成电路上的数千亿个晶体管联合在一起,以千兆赫的速率运行,一眨眼就运行了数亿行代码 -- 数十万计算机科学家、工程师和程序员团结一致,在不到80年的时间里让这一奇迹成真…… | |||
但是,我敢打赌,使用这样的 “奇迹” 不会遇到任何麻烦。 它的主要原因是,尽管你没有真正意识到这一点,但你正在 “管理系统的复杂性”。 它让你只需点击几下鼠标就能打开这篇文章,而不必记住细节,例如,你的浏览器用来从网站上获取这篇文章的HTML协议。 | |||
相反,你将此任务委托给你的 “web浏览器”- 这是一个 ''' 应用软件 ''' [[File:Application_Software.png | 20px]],它使用 ''' 操作系统 ''' [[File:Operating_System.png | 20px]] 的能力来运行,它使用 ''' 架构 ''' [[File:Architecture.png | 20px]] 层的定义和规则,依此类推 | |||
通常开发者为一个一般的电子计算系统定义9层抽象: | |||
#'' | # ''应用软件'' [[File:Application_Software.png|20px]] | ||
#: | #: 使用操作系统功能解决用户问题的程序 | ||
#'' | # ''操作系统 ''' [[File:Operating_System.png|20px]] | ||
#: | #: 操作计算机硬件,管理系统资源并为应用软件提供API和驱动程序 | ||
#'''Architecture''' [[File:Architecture.png|20px]] ( | # '''指令架构 Architecture''' [[File:Architecture.png|20px]] (也称为 [[Instruction Set Architecture |指令集体系架构 ISA]]) | ||
#: | #: 从程序员的角度描述电子系统。定义指令集,可见寄存器。由微架构实现 | ||
#'''Microarchitecture''' [[File:Microarchitecture.png|20px]] | # '''微架构 Microarchitecture''' [[File:Microarchitecture.png| 20px]] | ||
#: | #: 使用逻辑元素实现体系结构 | ||
#'''Logic''' [[File:Logic.png|20px]] | # '''逻辑门 Logic''' [[File:Logic.png | 20px]] | ||
#: | #: 各类组合数字电路以创建功能块,例如加法器,多路复用器等。 | ||
#'''Digital Circuits''' [[ | # '''数字电路 Digital Circuits''' [[文件: Digital_Circuits.png | 20px]] | ||
#: | #: 使用模拟电路创建数字电路模型,可用于数字设计 | ||
#''' | # '''模拟电路' '[[File:Analog_Circuits.png|20px]] | ||
#: | #: 组合设备以创建具有所需属性的电路 | ||
#'''Devices''' [[File:Devices.png|20px]] | # '''设备器件 Devices''' [[File:Devices.png|20px]] | ||
#: | #: 使用物理模型来创建可用于电路的设备,例如晶体管和二极管 | ||
#'''[[#Physics layer| | # ''' [[#Physics layer| 物理]]''' [[File:Physics.png | 20px]] | ||
#: | #: 探索世界并将获得的知识系统化到相互关联的规则和理论中 <abbr title = “意味着其他人不必自己获得该知识”> 轻松地 </abbr> 由其他人研究 | ||
---- | ---- | ||
如你所见,每个抽象级别都使用底层级别的模型和功能 (例如,“逻辑”层 使用 “数字电路”层,就像 “应用软件”层 使用 “操作系统”层 一样) | |||
此外,每个级别都隐藏了上面级别的实现细节 (例如,用户不必费心用 “计算机”层的形式表示他们的请求,只需要 “应用软件”层 提供了人类可理解的GUI) | |||
这意味着每一层都完成了两个任务: | |||
*''' | * ''' 为上层提供简化的接口 ''' | ||
*: | *: 例如,你的PC硬盘上没有 “文件”-仅能按指定顺序写入了一些字节。 “文件” 只是在物理驱动器上存储文件的抽象模型,由 “文件系统” 实现- 文件是你的 “操作系统” 的一部分。因此,“文件系统” 通过 “实现简单的文件I/o” 为应用软件提供了非常方便的 “界面接口”。 | ||
*''' | * ''' 隐藏本层的实现细节并对其进行管理 ''' | ||
*: | *: 例如,“文件系统” 还包含用于不同类型的存储设备的驱动程序,例如硬盘驱动器,光盘驱动器等。 每个都有自己的接口要处理。 但是,作为用户,你并不需要牢记这些细节。 因此,'''filesystem''' 负责处理它,'''details''' 向用户隐藏此类详细信息 ''','''管理''' 所有这些低级事物 | ||
'' | ''由于本教程是为操作系统和应用程序开发人员编写的,因此将跳过对三个较低层次结构的仅描述以下内容'' | ||
=== | === 数字电路 === | ||
[[File:Analog_Digital_Compare.png|thumb|300px|right| | [[File:Analog_Digital_Compare.png|thumb|300px|right|复杂的模拟信号和数字信号之间是有差异的。 虽然模拟信号被表面上似乎是完全混乱的,但数字信号仍然是可以理解的]] | ||
如你所知,所有的现代计算机都是使用数字逻辑实现的,但是为什么呢? | |||
以下是几个主要原因: | |||
# | # 数字信号比模拟信号更 “稳定” 和 “可靠”,因为它们不太容易产生失真,噪声和干扰。 | ||
# | # 数字电路使用不同的技术在硬件中设计和实现相对“容易” 和 “便宜” | ||
# | # 不同的数字电路可以 “轻松组合”,创建更复杂的电路。 | ||
这些事实是当今数字逻辑控制建立在模拟电路上的主要原因。 | |||
那么,是什么帮助数字逻辑获得如此吸引人的属性呢? | |||
它仅运行于两个信号状态-低和高,而不考虑像模拟电路那样宽的电压频谱范围。 | |||
[[Category:In Progress|{{PAGENAME}}]] | [[Category:In Progress|{{PAGENAME}}]] | ||
[[Category:Theory|{{PAGENAME}}]] | [[Category:Theory|{{PAGENAME}}]] |
2022年1月24日 (一) 02:58的版本
本文旨在向不熟悉计算机理论,计算的基本概念以及计算机系统的组织和结构的新用户解释。
创建本文的想法是受到OSDev.org上此类理论文章和页面的普遍混乱的启发。 而且只要理论对初学者来说 '非常' 重要 '(并且只要他们通常从未读过严肃的 books)',这种理论材料的混乱结构就会引起全面研究OS开发的问题。 但是这篇文章是为了解决这个问题
不可能在一篇文章中研究物理学,电路和计算机科学的所有主题。 相反,所有这些主题都将被简短地触及。 要按有组织的顺序这样做,我们必须将系统划分为各个层次,每个层次都有自己的规则和目标。 为此,我们必须 “管理系统的复杂性”
管理电子系统的复杂性
你用来阅读本文 “(让我猜这是一台个人计算机)” 的系统是人类有史以来最复杂的系统之一。 试想几个单独的集成电路上的数千亿个晶体管联合在一起,以千兆赫的速率运行,一眨眼就运行了数亿行代码 -- 数十万计算机科学家、工程师和程序员团结一致,在不到80年的时间里让这一奇迹成真……
但是,我敢打赌,使用这样的 “奇迹” 不会遇到任何麻烦。 它的主要原因是,尽管你没有真正意识到这一点,但你正在 “管理系统的复杂性”。 它让你只需点击几下鼠标就能打开这篇文章,而不必记住细节,例如,你的浏览器用来从网站上获取这篇文章的HTML协议。 相反,你将此任务委托给你的 “web浏览器”- 这是一个 应用软件 ,它使用 操作系统 的能力来运行,它使用 架构 层的定义和规则,依此类推
通常开发者为一个一般的电子计算系统定义9层抽象:
- 应用软件
- 使用操作系统功能解决用户问题的程序
- 操作系统 '
- 操作计算机硬件,管理系统资源并为应用软件提供API和驱动程序
- 指令架构 Architecture (也称为 指令集体系架构 ISA)
- 从程序员的角度描述电子系统。定义指令集,可见寄存器。由微架构实现
- 微架构 Microarchitecture
- 使用逻辑元素实现体系结构
- 逻辑门 Logic
- 各类组合数字电路以创建功能块,例如加法器,多路复用器等。
- 数字电路 Digital Circuits
- 使用模拟电路创建数字电路模型,可用于数字设计
- 模拟电路' '
- 组合设备以创建具有所需属性的电路
- 设备器件 Devices
- 使用物理模型来创建可用于电路的设备,例如晶体管和二极管
- 物理
- 探索世界并将获得的知识系统化到相互关联的规则和理论中 轻松地 由其他人研究
如你所见,每个抽象级别都使用底层级别的模型和功能 (例如,“逻辑”层 使用 “数字电路”层,就像 “应用软件”层 使用 “操作系统”层 一样) 此外,每个级别都隐藏了上面级别的实现细节 (例如,用户不必费心用 “计算机”层的形式表示他们的请求,只需要 “应用软件”层 提供了人类可理解的GUI)
这意味着每一层都完成了两个任务:
- 为上层提供简化的接口
- 例如,你的PC硬盘上没有 “文件”-仅能按指定顺序写入了一些字节。 “文件” 只是在物理驱动器上存储文件的抽象模型,由 “文件系统” 实现- 文件是你的 “操作系统” 的一部分。因此,“文件系统” 通过 “实现简单的文件I/o” 为应用软件提供了非常方便的 “界面接口”。
- 隐藏本层的实现细节并对其进行管理
- 例如,“文件系统” 还包含用于不同类型的存储设备的驱动程序,例如硬盘驱动器,光盘驱动器等。 每个都有自己的接口要处理。 但是,作为用户,你并不需要牢记这些细节。 因此,filesystem 负责处理它,details 向用户隐藏此类详细信息 ,管理 所有这些低级事物
由于本教程是为操作系统和应用程序开发人员编写的,因此将跳过对三个较低层次结构的仅描述以下内容
数字电路
如你所知,所有的现代计算机都是使用数字逻辑实现的,但是为什么呢?
以下是几个主要原因:
- 数字信号比模拟信号更 “稳定” 和 “可靠”,因为它们不太容易产生失真,噪声和干扰。
- 数字电路使用不同的技术在硬件中设计和实现相对“容易” 和 “便宜”
- 不同的数字电路可以 “轻松组合”,创建更复杂的电路。
这些事实是当今数字逻辑控制建立在模拟电路上的主要原因。
那么,是什么帮助数字逻辑获得如此吸引人的属性呢? 它仅运行于两个信号状态-低和高,而不考虑像模拟电路那样宽的电压频谱范围。