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