《操作系统真象还原》——0.3 写操作系统,哪些需要我来做

简介: 首先应该明确,在计算机中有分层的概念,也就是说,计算机是一个大的组合物,由各个部分组合成一个系统。每个部分就是一层功能模块,各司其职,它只完成一定的工作,并将自己的工作结果(也就是输出)交给下一层的模块,这里的模块指的是各种外设、硬件。

本节书摘来自异步社区《操作系统真象还原》一书中的第0章,第0.3节,作者:郑钢著,更多章节内容可以访问云栖社区“异步社区”公众号查看

0.3 写操作系统,哪些需要我来做

首先应该明确,在计算机中有分层的概念,也就是说,计算机是一个大的组合物,由各个部分组合成一个系统。每个部分就是一层功能模块,各司其职,它只完成一定的工作,并将自己的工作结果(也就是输出)交给下一层的模块,这里的模块指的是各种外设、硬件。

这样,各种工作成果不断累加,通过这种流水线式的上下游协作,便实现了所谓的系统。可见,系统就是各种功能组合到一起后,产生最终输出的组合物。就像人的身体,胃负责搅拌食物,将这些食物变食糜后交给小肠,因为小肠只能处理流食,所以上游的输出一定要适合作为下游的输入,是不是有点类似管道操作了,哈哈,分工协作是大自然的安排,并不是只有计算机世界才有。我们人类的思想是大自然安排好的,所以人类创造的事物也是符合大自然规律的。

好,赶紧回到正题,操作系统是管理资源的软件,操作系统能做什么,取决于主机上硬件的功能。就像用Maya造一个人体模型出来,首先我得知道Maya这个软件提供曲线曲面各种建模方法才行,换句话说,对于人体建模,你不可能会想到用QQ,因为它不是干这个的。我想说的是硬件不支持的话,操作系统也没招……操作系统一直是所谓的底层,拥有至高无上的控制权,一副牛气轰轰的样子,原来也要依仗他人啊。是啊,操作系统毕竟是软件,而软件的逻辑是需要作用在硬件上才能体现出来的。

所以说,写操作系统需要了解硬件,这些硬件提供了软件方面的接口,这样我们的操作系统通过软件(计算机指令)就能够控制硬件。我们需要做的就是知道如何通过计算机指令来控制硬件,参考硬件手册这下少不了啦。

相关文章
|
存储 小程序 Unix
《操作系统真象还原》——0.28 MBR、EBR、DBR和OBR各是什么
MBR和EBR是分区工具创建维护的,不属于操作系统管理的范围,因此操作系统不可以往里面写东西,注意这里所说的是“不可以”,其实操作系统是有能力读写任何地址的,只是如果这样做的话会破坏“系统控制权接力赛”所使用的数据,下次开机后就无法启动了。
3431 0
|
Linux C语言
《操作系统真象还原》——导读
以上情况对我们学习操作系统来说也同样存在,比如当老师介绍中断发生时的上下文保护时,我们更多的疑问不是如何保存CPU的上下文数据,而是想知道为什么在不同的特权级下会使用不同的栈,这背后的原理是什么,并且这是如何做到的。
1614 0
|
JavaScript 前端开发 Linux
《操作系统真象还原》——2.3 让MBR先飞一会儿
虽说主引导记录mbr是咱们能够掌控的第一个程序,但这并不是让我们为之激动的理由。我们平时所写的程序都要依赖于操作系统,而我们即将实现的这个程序是独立于操作系统的,能够直接在裸机上运行,这才是让我们激动的理由,对咱们来说这无疑是历史性的一刻。
2358 0
|
存储 内存技术 程序员
《操作系统真象还原》——2.2 软件接力第一棒,BIOS
Intel 8086有20条地址线,故其可以访问1MB的内存空间,即2的20次方=1048576=1MB,地址范围若按十六进制来表示,是0x00000到0xFFFFF。不知道硬件工程师当时设计的初衷是什么,总之人家有自己的理由,这1MB的内存空间被分成多个部分。
2029 0
|
存储
《操作系统真象还原》——第2章 编写MBR主引导记录,让我们开始 掌权 2.1 计算机的启动过程
所以,都在内存中运行程序,操作系统和硬件设计都省事了,这可能也是为了方式的统一吧,否则总不能出现某种存储介质后,操作系统和硬件就要付出额外努力去支持。当然,具体原因只有硬件工程师才知道,咱们在此先打住,继续咱们的内容。
1504 0
|
运维 Linux
《操作系统真象还原》——1.5 运行bochs
我们键入的是上面长方形框框中的部分:bochsrc.disk。由于我们刚刚把此文件放到了bochs的安装路径下,bochs找到了它并加载成功。紧接着下面给出的默认选项变成了[6],也就是Begin simulation选项,开始模拟x86硬件平台。
4163 0
|
NoSQL
《操作系统真象还原》——1.4 配置bochs
Bochs既然是模拟硬件的,它就得知道,您需要它模拟的计算机是什么样的,换句话说,在这个虚拟机中有哪些硬件,启动顺序是什么,是从软盘开始,还是从硬盘开始?人家也得像模像样地跟BIOS差不多才行。
2640 0
|
NoSQL Linux iOS开发
《操作系统真象还原》——1.3 操作系统的宿主环境
虚拟机在当今已经不是陌生的概念了,要是在几年前,我还得搬出个概念放在这给大家看看。个人觉得,要解释一个东西是什么,不如直接解释这个东西解决了哪些问题,这样大家自然就从本质上真正理解了它是什么。
2628 0
|
Linux C语言 编译器
《操作系统真象还原》——1.2 我们需要哪些编译器
GCC是由理查德·马修·斯托曼在1985年开始的。他首先扩展一个旧有的编译器,使它能编译C,这个编译器一开始是以Pastel语言所写的。Pastel是一个不可移植的Pascal语言特殊版,这个编译器也只能编译Pastel语言。
1796 0
|
编译器 C语言
《操作系统真象还原》——第1章 部署工作环境 1.1工欲善其事,必先利其器
软件是由编程语言来实现的,即使是编译器本身,它的开发人员都不愿意用底层语言去构建(GCC是用C语言完成的),只有到万不得已的时候才会用汇编语言来写。我们也是一样,能用省事的方法就不要自找麻烦,如果某位大神能直接写机器码,小弟真心恳求与您见上一面,希望您收我为徒,我要当面磕头拜师
1749 0