V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
yiran7324
V2EX  ›  程序员

如何从零开始写一个自己的操作系统?

  •  
  •   yiran7324 ·
    As7324 · 2018-03-11 00:35:30 +08:00 · 20774 次点击
    这是一个创建于 2230 天前的主题,其中的信息可能已经有所发展或是发生改变。

    最近实在是想做一点别人不能做的事情,除了装逼还想倒逼自己多学习些基础的计算机组成原理。

    1. 现阶段有无详细的教程?

    2. 从学习到完成需要经历多少时间?

    3. MAC 环境下的操作

    第 1 条附言  ·  2018-03-11 23:05:37 +08:00
    ## 忘记表达清楚了,我的意思大概是嵌入式那种,非完完全全从零开始,也没那么多时间啊。。
    63 条回复    2021-07-08 11:28:31 +08:00
    matsuz
        1
    matsuz  
       2018-03-11 00:44:17 +08:00 via iPhone   ❤️ 3
    《 30 天自制操作系统》了解一下
    matsuz
        2
    matsuz  
       2018-03-11 00:48:12 +08:00 via iPhone
    自己照着教程写操作系统并不能倒逼你学会计算机组成原理

    更多的是能给你一种虚无的成就感,因为这个东西做出来其实并没有什么鸟用
    hourann
        3
    hourann  
       2018-03-11 00:56:06 +08:00 via iPhone   ❤️ 3
    问题应改为“如何从零开始抄一个别人的操作系统?”
    Mirana
        4
    Mirana  
       2018-03-11 01:01:49 +08:00   ❤️ 2
    yiran7324
        5
    yiran7324  
    OP
       2018-03-11 01:04:04 +08:00
    @hourann 就是想从零开始抄,但是抄的高效一点。。。
    akira
        6
    akira  
       2018-03-11 01:05:38 +08:00   ❤️ 5
    <<30 天自制操作系统>> https://book.douban.com/subject/11530329/
    <<Orange'S:一个操作系统的实现>> https://book.douban.com/subject/3735649/
    一个专门给类似你这样的人群搭建的 wiki https://wiki.osdev.org/Main_Page

    恭祝楼主早日成功
    cszhiyue
        7
    cszhiyue  
       2018-03-11 01:06:39 +08:00   ❤️ 1
    echoZero
        8
    echoZero  
       2018-03-11 01:11:36 +08:00
    大学有门课程好像就是讲的这个 最后就会有个教程让自己做一个操作系统
    Remember
        9
    Remember  
       2018-03-11 01:15:09 +08:00
    xenix 了解一下
    yiran7324
        10
    yiran7324  
    OP
       2018-03-11 01:15:25 +08:00
    @echoZero 大学应到不了这个程度吧现在的大学
    feather12315
        11
    feather12315  
       2018-03-11 01:15:42 +08:00 via Android
    建议站在巨人的肩膀上,超前看。学习下理论就行了,有兴趣读读 Linux subsystem 相关的文档啥的。
    gtalk
        12
    gtalk  
       2018-03-11 01:28:25 +08:00
    你需要一部固话座机,然后
    010101...
    yhzwy
        13
    yhzwy  
       2018-03-11 01:30:02 +08:00   ❤️ 3
    mit 的 6.828
    youxiachai
        14
    youxiachai  
       2018-03-11 01:31:21 +08:00 via iPad
    @yiran7324 国外的计算机本科课程了解一下。。。。

    国内引进的黑书系列就是老外常春藤用的教科书
    kingcos
        15
    kingcos  
       2018-03-11 01:38:55 +08:00 via iPhone
    先从简单的开始呗,何必画个太大的饼(当然这个也不是很大的饼,但起码从楼主的问题感觉问的挺幼稚)。

    一步一步按步骤来的教程,走下来除了卡壳的地方可能自己会去搜索,其他收获也并没有多少。
    shutongxinq
        16
    shutongxinq  
       2018-03-11 01:51:33 +08:00
    fghjghf
        17
    fghjghf  
       2018-03-11 02:12:01 +08:00
    《 30 天自制操作系统》是本劣质书籍,只适合没啥基础,猎奇的读者。不建议看。
    想做操作系统,商业的就不说了,你 100%做不到。就说做个试验品,也不是一件容易的事。
    有心想做的话建议从基础学起,掌握一定高数基础后,从模电数电开始、到微机接口、组成原理、汇编、编译原理、再到上层的数据结构和算法、设计模式,当然,还有很多衍生学科要你遇到再补的。这些书你去参考豆瓣评分吧。学好了,再看 Intel 的手册,自己实现编译器,自己实现一门编译型语言,然后再以学习为目的做个操作系统。全日制的天天学,全年无休,估计全套下来,没个 5 年左右真不行。
    vegito2002
        18
    vegito2002  
       2018-03-11 02:16:08 +08:00
    找个 Pintos 或者 xv6 的 OS 课程作业做做看再说, 认真做其实已经能学到很多东西了;
    就算是这种高难度 OS 作业, 最后实际上你的内容也只是填空, 实现一些功能增强的代码而已, 基本 OS 的底层框架其实大部分是牛人提供的代码就已经帮你写好了;
    如果想要自己从 0 开始做, 而且不是简单复制别人的, 先确定自己能看懂这些人的底层代码再说. 我作业做完之后看过作者提供的基础代码, 真的是这些人的水平不服不行.
    icekingcy
        19
    icekingcy  
       2018-03-11 03:20:57 +08:00 via iPhone
    @akira 初中时买了 orange's 这本书 哈哈哈哈好久了啊
    20015jjw
        20
    20015jjw  
       2018-03-11 03:36:42 +08:00 via Android
    pintos 可以先做一下
    xupefei
        21
    xupefei  
       2018-03-11 05:34:06 +08:00
    https://www.cs.helsinki.fi/u/kutvonen/index_files/linus.pdf
    这个如何,结构够简单,要点全都有.
    xiadong1994
        22
    xiadong1994  
       2018-03-11 05:41:56 +08:00 via iPhone
    @shutongxinq 巧了,我这学期就上这课
    gbin
        23
    gbin  
       2018-03-11 06:17:54 +08:00 via Android
    战略性马克
    snnn
        24
    snnn  
       2018-03-11 06:23:41 +08:00 via Android
    你先去学怎么写一个 bootloader,怎么从实模式切换到保护模式。至少,把 intel handbook 通读一遍
    zhangxiaogang
        25
    zhangxiaogang  
       2018-03-11 07:52:22 +08:00 via iPhone
    之前也有这样想法,看的是《 Linux 内核完全剖析——基于 0.12 内核》 非常不错。
    ynyounuo
        26
    ynyounuo  
       2018-03-11 08:24:36 +08:00 via iPhone
    可以看看 xv6
    网上大把教程
    seaswalker
        27
    seaswalker  
       2018-03-11 09:39:45 +08:00 via iPhone
    @zhangxiaogang 读这本书之前建议先学汇编,从 8086 开始再到 X86 保护模式
    lScarlet
        28
    lScarlet  
       2018-03-11 09:41:03 +08:00 via Android
    000001111111 1111000000
    zjqzxc
        29
    zjqzxc  
       2018-03-11 09:43:31 +08:00
    如果不局限于电脑操作系统,可以先试试做一个嵌入式操作系统嘛
    比如看看 FreeRTOS 的源码什么的,(相对)也不算多,有可能就弃坑了呢

    当然,嵌入式 cpu 结构简单,如果操作系统这门课学得扎实的话,自己对照着芯片手册设计一个简单(简陋\半残)的操作系统也不是没可能。
    当然能不能用另说。反正能实现任务切换就可以说自己是操作系统了呗。
    allenhu
        30
    allenhu  
       2018-03-11 09:44:12 +08:00 via Android
    发帖的时间都搜出不少资料了,你只是闲吧?
    zhujinliang
        31
    zhujinliang  
       2018-03-11 09:49:05 +08:00 via iPhone
    大学时在 51 单片机上实现了一个只读的 FAT 文件系统,具体忘了花了几天了。一个可用的操作系统的话你可能需要实现上百个模块,不敢想
    xpresslink
        32
    xpresslink  
       2018-03-11 09:54:55 +08:00
    一看楼主就是个正常人,开发一套操作系统程序员的三大浪漫之一啊。
    程序员的三大浪漫被认为是操作系统、编译原理和图形学。
    为什么呢,因为都是穷尽个人毕生精力投入未见得有什么摸得着的成果的事业。

    楼主之所以有这个想法,就是因为对这件事缺少了解。
    shutongxinq
        33
    shutongxinq  
       2018-03-11 10:20:06 +08:00
    @xiadong1994 good luck。我二年级的时候给老板说想上这个课,他说如果你上了就做好晚一学期毕业的打算。我有个学弟这周三就因为这个课通宵了。。。
    Mirana
        34
    Mirana  
       2018-03-11 10:26:14 +08:00
    我有个 os 项目做了一年了,从头开始写的
    cielpy
        35
    cielpy  
       2018-03-11 10:37:12 +08:00
    cielpy
        36
    cielpy  
       2018-03-11 10:38:18 +08:00
    还有一个正在开发中的操作系统 https://github.com/redox-os/redox,了解一下?
    yomiko123
        37
    yomiko123  
       2018-03-11 10:50:33 +08:00
    想法不错
    jsun
        38
    jsun  
       2018-03-11 10:51:38 +08:00
    有这样的想法挺好,加油
    noahhhh
        39
    noahhhh  
       2018-03-11 10:53:43 +08:00 via Android
    从前自己有过类似的,想做个游戏 233
    funcman
        40
    funcman  
       2018-03-11 11:05:36 +08:00 via Android
    hi 哥们 一般如果你有比较近的提升自己的想法 还是建议看比较偏应用的东西。
    BruceYuan
        41
    BruceYuan  
       2018-03-11 11:09:08 +08:00
    我抄过一个 mini 的(人家代码写的真的好)。不过我们老师不识货
    jetbillwin
        42
    jetbillwin  
       2018-03-11 11:15:33 +08:00
    m
    cabing
        43
    cabing  
       2018-03-11 11:24:19 +08:00
    以前还想学习写一个,后来工作忙。。就丢下了这个想法了,再后来一直懒得开始了~
    WinMain
        45
    WinMain  
       2018-03-11 11:54:55 +08:00
    当初看了一点点 Linux 开机的流程细节就觉得学到了不少东西,要是真能自己从头到尾设计一个简单的 OS,我觉得不管对于工作还是面试都是自身成长都是很好的。
    kajweb
        46
    kajweb  
       2018-03-11 12:29:08 +08:00
    同样想法,正在收集资料
    EricXuu
        47
    EricXuu  
       2018-03-11 12:35:52 +08:00 via Android
    MIT 的 JOS
    bulldozer
        48
    bulldozer  
       2018-03-11 12:36:35 +08:00 via iPhone
    不如从零开始写个 android 实用…有人干过没?
    kotokz
        49
    kotokz  
       2018-03-11 15:19:56 +08:00
    https://os.phil-opp.com/

    这个不错,值得看看
    aminic
        50
    aminic  
       2018-03-11 15:26:21 +08:00 via Android
    楼上的兄弟们太勤快了,copy 一份 bsd 或者 linux 就 ok 了啊
    wlwood
        51
    wlwood  
       2018-03-11 16:21:49 +08:00 via Android
    @xpresslink 不是还有个 AI 吗?(逃
    phoebuss
        52
    phoebuss  
       2018-03-11 17:00:46 +08:00 via Android   ❤️ 1
    我们学校的操作系统课,里面的 kernel project 挺好的,可以一试~
    http://merlot.usc.edu/cs402-s18/
    账密:cs402/kernel
    echoZero
        53
    echoZero  
       2018-03-11 18:41:58 +08:00 via iPhone
    @yiran7324 会吧,有门课好像叫做计算机操作系统来着,就讲这个
    zjsxwc
        54
    zjsxwc  
       2018-03-11 19:02:19 +08:00
    按大学里课程学啊,先学习 8086 处理器以及汇编等硬件知识,然后找本操作系统的教材过一遍,最后自己实现个简单的多进程调度器就行了
    xiadong1994
        55
    xiadong1994  
       2018-03-11 22:11:27 +08:00 via iPhone
    @shutongxinq 现在感觉还行,project 没有我想象中的那种无从下手的难
    zzzz76
        56
    zzzz76  
       2018-03-11 22:31:53 +08:00
    https://chyyuu.gitbooks.io/ucore_os_docs/content/
    清华的大三教程,资源很齐全的~
    fakevam
        57
    fakevam  
       2018-03-12 00:06:18 +08:00
    写个 hypervisor 吧, 这个比写个 os 好玩点
    oroge
        58
    oroge  
       2018-03-12 00:12:52 +08:00 via iPhone
    斯坦福 cs140e 了解一下,用树莓派+rust。看上去符合你需求
    ioth
        59
    ioth  
       2018-03-12 10:25:04 +08:00
    操作系统不只是底层了。
    工资也快成底层了,现在忽悠的是区块链。
    两张纸就可以融资几千万。
    testuserll
        60
    testuserll  
       2018-03-12 10:27:20 +08:00   ❤️ 1
    最近膨胀了,连这种主题都都敢点进来了。
    wangbenjun5
        61
    wangbenjun5  
       2018-03-12 12:40:32 +08:00
    恕我直言,现代操作系统是很多牛人理论+实践共同奋斗了几十年的结果,一个人是不可能完成这个任务的,最多也就弄明白原理,然后山寨一个而已,除了吹牛逼毫无意义。真有这精力还不如把精力放在下一代操作系统的研究上
    nodekey
        62
    nodekey  
       2018-03-12 14:01:25 +08:00
    上学期的时候也有这个想法,听大佬说《操作系统真象还原》不错,然而看了三个月也没看完(当然中间穿插看了一些其他书),除了汇编和一些乱七八糟的知识以外就没什么收获了,搞得我现在春招实习我很尴尬……
    MarkLeeyun
        63
    MarkLeeyun  
       2021-07-08 11:28:31 +08:00
    @fghjghf 5 年都是保守估计。。不过现在比起 dos 那个时代可以参考的书多了许多而已。。。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5387 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 32ms · UTC 08:09 · PVG 16:09 · LAX 01:09 · JFK 04:09
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.