写一个操作系统有多难 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Rorschach
V2EX    问与答

写一个操作系统有多难

  •  
  •   Rorschach 2014-11-03 18:43:40 +08:00 via Android 7354 次点击
    这是一个创建于 3994 天前的主题,其中的信息可能已经有所发展或是发生改变。
    前Linux内核开发者Alan Cox在万圣节发布了Fuzix OS,这是一种为Zilog Z80处理器架构而设计的操作系统(https://plus.google.com/111104121194250082892/posts/a2jAP7Pz1gj)。13年8月底,一个芬兰人发布了Menuet OS系统(zh.m.wikipedia.org/zh-cn/MenuetOS),这是由汇编编写的带有GUI的系统。

    而在中国大陆有资料可查的、曾经见诸媒体的操作系统都是根据*nix内核定制的,比如麒麟由FreeBSD定制。

    从无到有创造一个操作系统到底有多难?
    25 条回复    2014-11-04 10:15:44 +08:00
    em70
        1
    em70  
       2014-11-03 19:01:18 +08:00 via Android
    对有兴趣的人来说技术不算难,难的是没那么多时间去玩这个,国人都得忙着赚钱养家。等我退休了,准备写点有意思的东西玩玩,OS值得考虑
    nealfeng
        2
    nealfeng  
       2014-11-03 19:06:34 +08:00
    操作系统是一个总的名称,有简单的也有复杂的。难有时也是一个工作量大小的问题,而不是说技术上不可实现。
    Doubear
        3
    Doubear  
       2014-11-03 19:16:09 +08:00   1
    写一个操作系统 实现输出功能 然后用其在屏幕上显示“中国制造” OK 你可以去申请科研资金了
    Mutoo
        4
    Mutoo  
       2014-11-03 19:16:53 +08:00
    看看这本书还是蛮有意思的《自己动手写操作系统》,别人说有多难不如自己体验一下。
    hualuogeng
        5
    hualuogeng  
       2014-11-03 19:22:29 +08:00
    《自己动手写操作系统》+1
    rail4you
        6
    rail4you  
       2014-11-03 19:28:47 +08:00
    操作系统是最复杂的软件。成熟的操作系统包含无数复杂的组件(图形界面,网络,文本工具等),单人不可能完成,多人协作开发也需要极长时间,还得运气好才行。

    新兴的操作系统,从头开发工作量太大,只能在前人的工作基础上做改进。unix核心的系统也有很多流派,freebsd注重安全性,科研机构喜欢从freebsd

    内核不完善,功能简单的操作系统,倒是个人能开发完成。这类系统兼容性不好,无法融入主流应用软件的生态圈中,没有实用价值。在教学中使用还有点意义,能帮助学生更好的理解操作系统。
    yjssla
        7
    yjsslab  
       2014-11-03 19:50:40 +08:00
    @em70 对,对于中国人来说,大部分人都是在为生活奔波,你试试辞职看看还能活多久?
    jun4rui
        8
    jun4rui  
       2014-11-03 19:56:07 +08:00 via Android   1
    多看的《30天自制操作系统》打折时只要25快,就这么难
    xuwenmang
        9
    xuwenmang  
       2014-11-03 20:09:51 +08:00
    没人给你写软件,有个屁用。。。
    wangtuyi
        10
    wangtuyi  
       2014-11-03 20:13:48 +08:00
    记得国外有个小孩子写了一个,能放到软盘里面的
    raywill
        11
    raywill  
       2014-11-03 20:18:53 +08:00
    可大可小。*nix实际上不是操作系统,而是一个软件站,从内核到库到应用。
    通常说的“写一个操作系统”,或者教科书上定义的操作系统,一般指内核。

    一般,一个基本的内核,大概1w行代码就可以了。一个全功能的内核,则需要30万到100万行代码。
    一个玩具内核(比如“记得国外有个小孩子写了一个,能放到软盘里面的”),大概1000~2000行左右的代码即可,包括100~200行汇编(bootloader)和1000多行C。
    allenforrest
        12
    allenforrest  
       2014-11-03 20:25:05 +08:00
    看看 pyos,当年学校的一个师弟写的,在 bbs 很是火了一阵子
    reeco
        13
    reeco  
       2014-11-03 20:34:37 +08:00
    reeco
        14
    reeco  
       2014-11-03 20:35:22 +08:00
    图片没插成功....
    momo5269
        15
    momo5269  
       2014-11-03 20:38:29 +08:00
    现在从无到有并不难,从不没电到有电的才难
    Tink
        16
    Tink  
    PRO
       2014-11-03 20:42:00 +08:00 via iPhone
    有一本书教自己动手些操作系统
    gamexg
        17
    gamexg  
       2014-11-03 20:58:45 +08:00
    系统还是小事,主要生态环境太难了,你的系统什么软件也没有,谁用啊?
    x86
        18
    x86  
       2014-11-03 21:04:43 +08:00
    国外叫操作系统,国内叫炒作系统
    choury
        19
    choury  
       2014-11-03 21:20:14 +08:00 via Android
    不难,我本科毕业做的就是这个,前后用了大半年,是x86架构的
    iscraft
        20
    iscraft  
       2014-11-04 00:06:34 +08:00
    dos就算吧 挺佩服sun和apple两家公司的 一家基于自己的sparc硬件重写了unix 一家在BSD微内核上重建了一个强大的操作系统 而且apple与IBM离婚后 立刻从power换成了intel x86
    ahtsiu
        21
    ahtsiu  
       2014-11-04 00:57:40 +08:00
    menuet 有十几年历史了,当年也是以“1.44M 软盘里的图形界面操作系统”著称,前段时间突然想起找来回味一下,发现作者还在更新,真是执着啊
    sinxccc
        22
    sinxccc  
       2014-11-04 01:03:29 +08:00
    写一个能跑的操作系统 非常容易
    写一个能满足普通人日常使用的通用操作系统 非常困难
    ffffwh
        23
    ffffwh  
       2014-11-04 06:08:30 +08:00
    我们课上跟着MIT jos做过
    jun4rui
        24
    jun4rui  
       2014-11-04 09:05:07 +08:00 via Android
    @iscraft osx其实就是Jobs被苹果CEO赶走后自己开的公司搞的Unix类系统,不算从头写起,大概相当Android之于Linux的意思
    standin000
        25
    standin000  
       2014-11-04 10:15:44 +08:00
    这要看你希望达到什么级别,要达到商用级别,不砸个千人十年没可能。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2861 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 24ms UTC 00:25 PVG 08:25 LAX 17:25 JFK 20:25
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86