《操作系统真象还原》——第0章 一些你可能正感到迷惑的问题 0.1操作系统是什么

简介: 在盘古开天之际,除动物以外,世界上只有土地、荒草、树木、石头等资源。人们为了躲避天灾、野兽攻击等危险,开始住进了山洞,为了获取食物,用石头和树木等材料打造一些武器。当时所有人都在做这些相同的事。这就是没有组织的人类社会,所有人都在重复“造轮子”。

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

第0章 一些你可能正感到迷惑的问题

正如计算机中数组下标是从0开始的,我们的内容也从0开始,尽量做到低基础学习(负责地说,不是0基础,而且还只是尽量),解释一些学习过程中经常被问到的问题。

0.1 操作系统是什么

我并没有给你提供教科书上对操作系统的定义,因为解释得太抽象了,看了之后似乎只是获得一些感性认识,好奇心强的读者反而会产生更多迷惑。为了说清楚问题,让我给您举个例子。

让我们扯点远的……在盘古开天之际,除动物以外,世界上只有土地、荒草、树木、石头等资源。人们为了躲避天灾、野兽攻击等危险,开始住进了山洞,为了获取食物,用石头和树木等材料打造一些武器。当时所有人都在做这些相同的事。这就是没有组织的人类社会,所有人都在重复“造轮子”。

后来各个地区有了自己权威性的部落,部落都专门找人打造武器,谁需要武器就直接申请领取便可,大部分人不需要自己打造武器了。后来嫌打猎太麻烦了,干脆养一些家畜好了,直接供给人们,谁需要可以过来交换。这就是把大家的重复性劳动集中到了一起,让人们可以专注于自己的事情。

再后来,部落之间为了通信,开始有信使了,这是最原始的通信方式。到后来发展到有社会组织,通信越来越频繁了,干脆搞个驿站吧,谁需要通信,直接写信,由驿站代为送达。

随着人口越来越多,社会组织需要了解到底有多少人,为了方便人口管理,于是就在各地建了“户籍办事”处,人们的生老病死都要到那里登记申报。

说到这我估计您已经猜出我所说的了,上面提到的部落其实就是最原始的操作系统雏形,它将大家都需要的工作找专人负责,大家不用重复劳动。而以上的社会组织其实就是代表现代操作系统,除了把重复性工作集中化,还有了自己的管理策略。

把上面的例子再具体一下,人们想狩猎时,可不可以自己先打造武器,然后拿着自己的武器去狩猎?当然可以,自己制造武器完全没有问题,但部落既然有现成的武器可用,何必自己再费事呢。另外,部落担不担心你随意制造武器会对他人造成伤害?当然会,所以部落不允许你自己制造武器了,人们只有申请的资格,给不给还是要看人家部落的意愿。这就是操作系统提供给用户进程一些系统调用,当用户进程需要某个资源时,直接调用便可,不用自己再费尽心思考虑硬件的事情了,由操作系统把资源获取到后交给用户进程,用户进程可以专注于自己的工作。但操作系统为了保护计算机系统不被损害,不允许用户进程直接访问硬件资源,比如用户进程将操作系统所占据的内存恶意覆盖了,操作系统也就不复存在了,没有操作系统的话,计算机将会瘫痪无法运作。

当人们想和远方的朋友说话时,虽然可以徒步走到亲朋好友身边再对其表达想说的话,但社会组织已经给提供了邮局和电话,何必自己再大老远跑一趟呢。这就是操作系统(社会组织)提供的资源。两个人想在一起生活,要不要一定先结婚呢?完全不用,领不领证都不会阻碍人们在一起生活,但是社会组织为了方便人口管理做了额外约束。不领证的话,至少社会组织无法预测未来人口数量趋势,无法做出宏观调控,甚至这是找到你家人的一种方法。这就如Linux系统中的内存管理,分别要记录哪些页是Active,哪些是“脏页”。不记录会不会影响程序执行,当然不会,记录这些状态还不是为了更好地管理内存吗。

以上说的社会组织和人们之间的关系,正是操作系统和用户进程的关系,希望大家能对操作系统有个初步印象,后面的实践中我们将实例化各个部分。

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