从头编写一个操作系统有多难

这是一种不可能完成的任务。

一个人不能完成,一个公司也不能完成。

首先,你的操作系统是准备模仿Linux还是Windows?先模仿再超越是我们惯用的方法。现代人构建操作系统的方法,一般是在Linux的内核上,进行各种风骚的操作。增加图形界面,增加新的硬件驱动。连Google这样大的公司,在推出Android的时候,也没有重新编写一个操作系统,而是在Linux的基础上进行改装。

从系统的核心说起,你的操作系统准备支持几种CPU?Intel的和AMD的都要支持吗?Arm处理器是否也要支持?还是准备制造自己的CPU?那更是一个浩大无比的工程。我们知道,现在的处理器是从以前8位的进化到16位,进化到32位,再进化到64位。那么,你的系统是否还要兼容以前32位的程序?或者说,干脆不兼容世界上已有的任何程序?那么这样的系统还有什么用处呢?

除非你准备把所有的硬件都重新设计一遍,否则你的操作系统就必然要模仿Linux,或者在linux的基础上开发。或者你有办法弄到Windows的源代码,在windows的基础上开发。看看Windows走过的路,你就会知道开发操作系统这条路是多么的艰辛:先有了Dos,然后是Win95,Win98,Win200,WinXP...Win8,Win10。人们一直在抱怨Windows的不稳定,有Bug,但人们一直在用。所以,你开发新的操作系统,必须有足够多的人来使用,帮你反馈系统中有什么Bug,然后再修补,再提高。希望一下子构建一个操作系统,能够媲美WinXP都不是一件简单的事情。要知道,XP已经是近20年前的系统了。你要在很短的时间内把别人20年走过的路重新走一遍,这是多么的不现实。

操作系统要干些什么呢?首先,要和键盘鼠标打交道。那么,你们团队里就要有人了解键盘和鼠标如何驱动。单单驱动键盘都不是一件容易的事情,按键发出的信息如何送到系统内,系统对此作出什么反应?鼠标按下的时候,看似是单击,但可能已经发出了成百上千次点击信号,你的系统怎样分辨出这是一次单击还是拖动?如果你的系统还要在平板电脑和手机上使用,那么,用户点击触摸屏的操作是否也要支持?你的团队里还要有人懂得触摸屏如何驱动。

然后要和显示器打交道。现代的操作系统不可能是单纯的字符界面。那么你要在显示器上显示图形。你的团队中要有人精通显示器如何驱动。如果用显卡,显卡的驱动由厂商提供,那么问题来了:你的操作系统还没做出来,厂商怎么会知道如何为你的系统写驱动呢?所以最早的驱动,必然是你的团队的人自己编写。

CPU要访问内存的数据。那么你的内存怎样管理?不同的程序都在同时执行,怎样保证各自使用各自的内存?有些程序要使用系统内的同一个组件,那么你的系统怎样分辨出谁在使用?你是否要使用线程、进程的概念?是否要使用c语言来编写底层的系统?如果还是用c语言,那么c语言所有的陷阱你都要遇到,不止一次,而是会千百次、上万次的遇到。程序依然在该溢出的时候溢出,毫不客气。资源依然回在该锁死的时候锁死,毫不手软。也就是说,前人经历的所有坑,你都要经历一遍,再把它们依次填平。

数据要存储在硬盘或者U盘上,那么,你的团队里要有人懂得如何编写硬盘和U盘的管理程序。硬盘的扇区划分是否要分的和以往有不同?文件怎样存储在硬盘上,才能条理整齐,同时读写高效?是否要支持权限管理?是否要加密和解密?是否要保护系统文件?要知道,Linux系统下的“rm -rf /* ”删库跑路已经不是一个说说而已的笑话,而是真实发生过很多次的事情。假如你的系统模仿Linux,是否连这个最脆弱的特征也要模仿?外部存储器的容量越来越大,从最早的1.44M软盘到现在几个T的硬盘,其间经历了些什么?你的团队全部要经历一遍吗?从最早的MBR到现在的gpt,经历的不是简单的磁盘分区表变化而已。多少位的机器,能够访问多大的存储,不是人们简单的设定,也并非当时的人没有能力编写大容量硬盘访问程序的能力。历史必须完整的重演一遍,你才能知道其中的技术含量。

不光这些,单单识别一下外设都不是一件容易的事情:你插一个东西到USB接口上,现在一个简单的任务是:识别这是个啥?可能是键盘,鼠标,U盘,手写笔,移动硬盘,打印机,手机...你的操作系统要能识别出来吧?然后找到驱动,让设备正常运行起来。

网络接口,用户界面,硬件驱动,操作系统的每一件事情都是相当艰深的课题......

你的系统要使用汉字吗?那么GB2312,GBK,GB18030都要能按照次序兼容吧?UTF8是否也要兼容?这里面的坑有多深?你Google/百度一下“乱码”,就可以发现数以万计的记录。这些记录都是别人经历过坑。

如果你在Linux的基础上开发,请大胆的说出来,像Google公司那样,不要害羞,这不丢脸。请不要像当年的汉芯一样,拿别人的东西随便mark一下,就说是自己的东西,这样才丢了全国人民的脸。

从头编写一个操作系统是很难很难的事情。单靠一两家公司是不可能实现的。要想成功,只有一种方法可行:拿出当年制造原子弹的决心和勇气,举全国人民之力,召集全世界优秀的人才,先制造出自己的芯片,然后编写自己的系统,软件硬件一起搞,从硬件的层面就支持汉字,让人们用起来,在反馈中改进和提高。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,456评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,370评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,337评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,583评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,596评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,572评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,936评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,595评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,850评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,601评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,685评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,371评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,951评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,934评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,167评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,636评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,411评论 2 342

推荐阅读更多精彩内容

  • Linux系统一般有4个主要部分:内核、shell、文件系统和应用程序。 内核、shell和文件系统一起形成了基本...
    请爱护小动物阅读 2,544评论 0 22
  • Linux系统一般有4个主要部分: 内核、shell、文件系统和应用程序。内核、shell和文件系统一起形成了基本...
    偷风筝的人_阅读 3,241评论 1 17
  • 姓名:吴兆阳 学号:14020199009 转自韦东山 嵌牛导读:对嵌入式初学者,没有足够的视野选择一个合适投入方...
    吴兆阳阅读 2,375评论 0 4
  • 学习stm32gpio 学习linux 程序员的三大方向 程序员的方向,一般可以分为3类:专业领域、业务领域、操作...
    王公民阅读 725评论 0 3
  • 一夜碧绿洗,摇曳风姿生, 忽降玉露水,无处可躲藏。
    雪中凝阅读 74评论 0 7