Baking Pi - Operating Systems Development Lesson 0

12 Sep 2012

1 课时0 简介

这一介绍性的课时没有太多实践的东西,只是为了解释一下操作系统\汇编代码还有 其他一些重要的基本概念. 急于尝试的同学,可以直接跳过本课时.

1.1 操作系统

操作系统是一种复杂的程序,用来管理在一台计算机上的各个程序,比如说分配计算机的CPU时间片,内存资源,其他的硬件资源等等.主流的桌面操作系统一般包括GNU/Linux, Mac OS X和微软的Windows.其他的一些设备也是需要操作系统的,比如手机就会使用Android, iOS和Windows Phone这类的系统.1

由于操作系统直接与计算机的硬件交互,所以它需要知道具体硬件的一些信息.为了方便操作系统可以广泛的应用在各种计算机上, 驱动 的概念被引入.驱动的作用就是为了使操作系统可以方便的与一个特定的硬件设备进行通讯, 它也是一段代码,但是可以很容易的加入或者移出操作系统.本课程不涉及如何创建这类可移出的驱动,而仅仅集中于Raspberry Pi相关的设备驱动.

1.2 汇编代码

本课程的代码基本都是汇编代码.它的特点就是十分接近计算机硬件层,易于被机器所"理解".计算机的工作是通过处理器和内存来实现的,处理器可以做一些数字的加减法这类的简单工作,内存则负责存储这些数字.计算机通电后,处理器就通过执行程序员交给它的指令来改变内存中的数字和与硬件交互.汇编代码就是这些指令被翻译成方便人类读取的形式.

一般编程,程序员都会使用一门编程语言,譬如C++,Java,C#,Basic等等.之后再调用编译器将这些由程序员编写的代码翻译成为汇编代码,之后会再进一步翻译成为二进制代码2.二进制代码是计算机实际能够理解的语言,只不过实在不适合人类阅读.汇编代码就相对易读,但是供程序员使用的指令也依然很少. 请谨记每个使用汇编代码编写的指令,都是计算机可以直接理解的,因此这些指令是受下层硬件决定的,每个指令都会被实际上的电路直接使用.

[图片占位符]

和一般的上层编程一样,汇编语言也有多种.当然,多样的原因不是像上层语言那样,而是因为世界上存在多种不同的处理器,每种处理器往往都设计成理解某一个语言.因此,一个程序员如果用汇编语言给一个机器编写程序,那么不同类的机器就不能够使用这一程序.一般而言,这种每个不同架构都需要重新编写程序的情况实在是个大灾难,不过对于操作系统来说,这就无所谓了,因为它本身就要为不同的硬件重新编写.不过,不是操作系统的所有部分都需要重写,因为操作系统的大部分也是由c++或者c语言这种上层语言来编写,以方便转化到不同的架构上,需要重写的只是那些必须通过汇编语言来实现的部分.

目前,已经可以进入第一课时了.

Footnotes:

1

更完整的操作系统清单,请参考 List of operating systems - Wikipedia, the free encyclopedia

2

在这里,对"一般编程"是简化了描述,事实上,它与语言和机器都息息相关, 深入了解,可以参考 Compiler - Wikipedia, the free encyclopedia