其实写操作系统不难

  • 四维
    写操作系统这个事,对于个人来说,最难的是:1.无比浓厚的兴趣;2.无穷的耐心;3.永无止境的时限;4.花不完的钱,对吃住完全不担心。这四大难题随便一个足够让一个普通程序中止步操作系统的梦。当然如果你的主业就是搞操作系统,第四点就不算问题

    其实操作系统,可以简单可以复杂,简单的如单任务系统,操作系统只提供键盘屏幕磁盘的api和最基本的用户界面,用户运行程序时,整个电脑全权交给那个程序独占。DOS就是这种,提前写好键盘屏幕的api,用中断号代表,程序用int xxx来调用操作系统的api就可以了。

    d版的程序员,用个人的力量,应该能做出这种级别的操作系统。

    如果要复杂一点,比如多任务管理等。就要有做平台的概念。这个时候有点像做游戏。你可以把游戏看作多用户多任务操作系统,一个用户是玩家,另一个用户是游戏内部的脚本,脚本输入命令:house xxxx,yyyyy,zzzz然后游戏平台就协调硬件资源,在xxxx,yyyyy,zzzz空出个地,运行一个house当house被导弹炸了,平台就清空该house的相关资源

    复杂的系统,就不是一个人的活,是一个团队的活。你要团队所有人,长时间保持热情,保持专注,保持耐性,花不完的钱,才是最难的。 人生如梦
  • 木鱼虫
    写一个人用的OS跟写几亿人用的OS难度相差几亿倍
  • a
    amx_002
    写不难,有人用才难
  • w
    windxin
    这说起来,就是难度很大!
  • l
    longwayhome
    嗯 iOS fly ~
  • j
    jckimi
    我写个while(1);,他也是操作系统 Kimi
  • l
    lance6716
    > 操作系统只提供键盘屏幕磁盘的api和最基本的用户界面,用户运行程序时,整个电脑全权交给那个程序独占

    你那个程序是怎么运行的,直接下载的编译好的东西吗?人家编译时是Linux版的,虚拟内存管理是交给操作系统的,那操作系统是不是就要提供虚拟内存管理功能?那是不是要自己维护缺页响应、内存空间权限、内核和动态库?
  • s
    shadow12
    操作系统是计算机软件工程难题,并不是编码或者算法难题
  • m
    monkeyfunc
    这个我也会:
    操作系统
  • V
    VIP.1
    有花不完的钱我还写毛的操作系统 iOS fly ~
  • B
    B-SIDE
    满足以上条件拿,上清华不难,诺贝尔奖不难,上天也不难。
  • 瞎球逛
    花不完的钱有点夸张了,3~5K亿美元应该能做到一个不错的操作系统,操作系统是可以赚钱的,并不是非要把别的系统打趴下才开始赚钱。
  • s
    se_happy
    满足这些条件,还有什么是难的?
    当美国总统也指日可待 iOS fly ~
  • x
    xuwei3
    电脑其实很简单,不就是0和1吗。
  • y
    ylwxb
    嗯,世上无难事只怕有心人。
    小时候认为这话说的没毛病,差点成了座右铭,大了后觉的说这话的人脑子有毛病。
  • c
    crestlab
    来 lz写个最简单的操作系统我瞅瞅
  • m
    mozhenliang
    《30天自制操作系统》,日本佬写的,人民邮电出版,京东有售
  • s
    socode
    好像linux最早一个人写出来的吧?紫薯布丁
  • t
    trokey
    世上无难事,只有楼主肯下手。
  • z
    zengxin
    工程难度难到无法想象,这么多体系结构要支持,那么多外设驱动,用户层面也要考虑
  • a
    adsl
    写“也许”不难,但要别人用就难了 回复仅供参考
  • a
    alvise
    计算机专业的都学过 操作系统 课吧,真写起来没那么高不可攀,基础代码都有参考,经典教程 《操作系统: 设计及实现》 就是分析实现的操作系统。minx 。当年linus 就是参照这个来写linux的
  • 寒冰炫
    操作系统不难,
    我个人的理解是
    输入,解析,处理,输出
    难的是完善
  • s
    shadowmage
    差几千倍而已吧
  • t
    tbacc
    楼主你先来一个,然后再发帖
  • 烂人村村民
    回复26#alvise

    1.0我记得bug很多
  • i
    inhome
    这种几千人的团队,如何能保证协同效率,控制风险。作为外行我想都不敢。
  • v
    vonsy
    Linux 内核0.11 完全注释
    http://www.oldlinux.org/download/clk011c-3.0.pdf

    吹牛逼更简单, 比PPT还省事, 动动嘴皮子就造出来了.
    在v2ex(https://www.v2ex.com/t/591198#reply70)看到...没有官网……没有文档……没有地方下代码……发布会上说的,都是“未来”
  • f
    fanconi

    你们嘲讽楼主的看看这个图
  • 四维
    这个属于周边配套开发工具的问题,根本不是操作系统问题

    你问这个问题相当于:我一个Linux程序如何在windows下运行

    开发windows程序时和linux程序时,都需要配套的sdk,也就是一大堆c,cpp,asm和h文件,不同的os对应不同的sdk库和工具链

    对于初生的os,可以直接用机器码或者汇编语言。

    搞单片机的经常要做类似os的东西。 人生如梦
  • q
    qiuyuke
    回复22#trokey
    嗯,世上无难事只怕有心人。
    小时候认为这话说的没毛病,差点成了座右铭,大了后觉的说这话的人脑子有毛病 iOS fly ~
  • f
    fy883
    写要看完整度,玩具类型确实不难 发个参考https://blog.csdn.net/qq_24328101/article/details/51926014
  • t
    tonie
    主要得有人用还得赚钱。。。
  • S
    SZERO
    你要看是写什么操作系统,有个日本人写了本叫30天自制操作系统的书,虽然我觉得30天写出来操作系统的不太可能,但是其中蕴含了操作系统的基本原理,个人写是能写,但是这个系统会有着各种漏洞,离真正使用还差得远。看“程序用int xxx”这句就知道楼主不懂什么程序,起码是import,难道都是整型数据?要设计出一个实际可用,安全性高,能处理多并发任务的操作系统这东西需要大量的人力物力,然而光有钱只是必要条件而不是充分条件,在最初的架构设计上需要的还有天赋和远见。程序开发可不是什么大力就一定能出奇迹的地方,即使真的有“花不完的钱”,也不一定能做出个好东西。最后想说一下,专业的事情只有专业的人才能做出评判,最可怕的就是不懂装懂的人在带节奏。
  • 莲尖
    想当然了,写一个能用的操作系统很难。 iOS fly ~
  • s
    skyworch
    生个孩子也很简单
  • f
    forfun
    回复7#jinseng

    其中3000人负责管理
  • 又是春天
    这就够难了HiPDA怪兽版
  • v
    vlt
    先发明一种汉字语言,用汉字写,和国外的系统划清界限
  • 四维
    看你说这句话,说明你不是计算机系毕业
    int xxx

    是汇编语言 的语句。前面我已经提到中断调用。int就是8086汇编语言的软中断语句。xxx是中断号。调用不同设备需要调用不同中断。磁盘我记得是int 13.在执行int 13之前,要往对应的地址mov一些参数和数据

    dos有一个软中断表,是指向对应硬件的驱动程序的起始地址。

    所以呢,病毒程序经常攻击中断表,以实现Hook
  • 四维
    +10086
    操作系统从来不是技术难题,而是工程架构甚至是人员管理问题。
  • 四维
    回复40#莲尖

    ms-dos 1.x (不是1.0)是比尔盖茨的10人以下小团队(小团队还有个扫地阿姨)花几个月捣腾出来的,并且卖钱。他们的技能也就是当时程序员的标配:会CPU机器码和汇编语言。‘

    当时的ms-dos 1.x 提供屏幕显示、键盘输入、磁盘操作、文件操作等int,以及外围工具如汇编语言编译器、磁盘格式化,文件拷贝等。没错,文件拷贝,磁盘格式化这种现代操作系统应该提供的功能,当时的操作系统并不内置,而是作为外围工具包存在。如果把外围工具包的磁碟从电脑拿走,这套电脑正在运行的操作系统是没有拷贝功能的。
  • w
    wuketidai
    弄个玩具出来当然不难,难得是十年如一日高质量的维护开发下去,光这个量级周边的功率,文档管理,build system 这些都是很挑战的
  • 四维
    这句话没有毛病,前提是:1.有非常浓厚的兴趣,2.不为生活发愁
    所以脑子正常的程序员,谁没事从零开始写操作系统?干点更有意义的事情不更好?
  • 莲尖
    回复47#四维
    dos 是 盖茨买来接着改的 iOS fly ~