烤派宝典第零章-介绍

TurnToJPG -->


#第零章 介绍 本章为介绍环节,不包含实战环节,主要用于介绍一个操作系统所涉及到的基本概念、什么是汇编语言,以及其他重要的基础性概念。如果你想一步到位直接进入实战环节,你可以忽略掉这一章。

内容
1 操作系统
2 汇编语言

##1 操作系统 操作系统是非常复杂的程序。它负责协调计算机上的程序,包括共享计算机时间、内存、硬件和其他资源。你可能听说过的计算机上的大型桌面操作系统包括GNU/Linux, Mac OS X和Microsoft Windows。 其他设备,譬如手机上可能也使用操作系统,譬如Android, iOS和Windows Phone等1

既然操作系统需要直接和计算机系统的硬件打交道,那它就必须了解系统的硬件配置。为了让系统能运行于不同的计算机平台上,驱动程序的概念被引入。所谓驱动,就是一小段程序,可以被操作系统所调用和挪除,以使得操作系统可以直接和特定的硬件进行“对话”。 在本课程中,我们不会涉及到太多如何创建这种可卸载的驱动程序的话题,我们将专注于Raspberry Pi平台本身。

操作系统设计博大精深,市面上已经有多种不同的设计理念,这门课程只能触及其表面。本门课程里我们只关注于让操作系统通过各种特定的硬件位来直接操作硬件,这通常是最棘手的做法,因为参考文档只能来自于有限的文档,网上也很难找到现成的帮助。

##2 汇编语言 本课程仅使用汇编语言。汇编语言是最接近机器底层的语言,也最容易被机器所理解。计算机工作的原理其实是源自于存在一个叫处理器的小设备用于时刻不停地执行简单的工作,譬如加数操作,同时有一系列或多系列的被称之为RAM(内存)的集成电路用于存储运算数字。计算机加电后,处理器运行传给它的一系列指令,这一系列指令将导致内存中存储的数字发生变化,以便和连接的其他硬件相交互。汇编代码就是被翻译成人类可读格式的这些指令的文字。

通常我们使用编程语言来编程,譬如C++,Java,C#,Basic等语言,程序员撰写的程序通过编译器被转换为汇编语言,接着被转换为二进制代码2。二进制代码是机器能理解的语言,但是不具备可读性,无法被人类理解。汇编语言就好多了,但令人沮丧的是它只有有限的条数,很难被扩展。我们需要记住一个原则:任何一个你输入的汇编指令都能被处理器直接理解,因为汇编指令设计时遵循了精炼的原则,物理电路必须理解并处理每一条指令。

compiler

和普通编程语言一样,有许多不同的汇编语言。而与普通编程语言不同的是,汇编语言的多样性是因为存在很多种不同架构的处理器,每种处理器只能理解特定的语言。因而用一种汇编语言代码编写出的程序在另一种机器体系上就完全不能被执行。在大多数情况下,不能重用代码简直是一场灾难,因为为该种机器体系编写的程序都需要被重写,但引入操作系统后问题就变得容易多了,很多操作系统都是用C/C++编写的,它可以很容易被移植到不同的硬件平台上,只有完全用汇编语言编写的程序部分才需要完全重写。

现在你已经完成了第0课,可以挪步到第一章: OK01了。


  1. 详细的操作系统列表可以参阅: List of operating systems - Wikipedia, the free encyclopaedia ↩︎

  2. 这里我简化了关于通用编程的解释,事实上编程重度依赖于编程语言和机器平台。如果你感兴趣,你可以参考: [Compiler - Wikipedia, the free encyclopedia](Compiler - Wikipedia, the free encyclopedia)。 ↩︎