• 请不要在回答技术问题时复制粘贴 AI 生成的内容
yiran7324
V2EX  ›  程序员

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

  •  
  •   yiran7324 ·
    As7324 · Mar 11, 2018 · 23063 views
    This topic created in 3165 days ago, the information mentioned may be changed or developed.

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

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

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

    3. MAC 环境下的操作

    Supplement 1  ·  Mar 11, 2018
    ## 忘记表达清楚了,我的意思大概是嵌入式那种,非完完全全从零开始,也没那么多时间啊。。
    64 replies  •  2025-02-27 20:20:38 +08:00
    matsuz
    matsuz
    Mar 11, 2018 via iPhone❤️3
    1
    《 30 天自制操作系统》了解一下
    matsuz
    matsuz
    Mar 11, 2018 via iPhone
    2
    自己照着教程写操作系统并不能倒逼你学会计算机组成原理

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

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

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

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

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

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

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