V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
Rorschach
V2EX  ›  问与答

写一个操作系统有多难

  •  
  •   Rorschach · 2014-11-03 18:43:40 +08:00 via Android · 7017 次点击
    这是一个创建于 3702 天前的主题,其中的信息可能已经有所发展或是发生改变。
    前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

    内核不完善,功能简单的操作系统,倒是个人能开发完成。这类系统兼容性不好,无法融入主流应用软件的生态圈中,没有实用价值。在教学中使用还有点意义,能帮助学生更好的理解操作系统。
    yjsslab
        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  
       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   ·   实用小工具   ·   906 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 22:06 · PVG 06:06 · LAX 14:06 · JFK 17:06
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.