パスワードを忘れた? アカウント作成
12067374 story
OS

すべてアセンブリ言語で書かれたMenuetOS、ついにバージョン1.0となる 77

ストーリー by headless
遠路 部門より
すべてアセンブリ言語で書かれたPC用OS「MenuetOS」が15日、ついにバージョン1.0となった(リリースノートComputerworldの記事Slashdotの記事)。

MenuetOSはマルチプロセッサーに対応したプリエンプティブマルチタスクOSで、USBやネットワーク、サウンドなどのデバイスをサポート。フロッピーディスク1枚の容量にWebブラウザー/サーバーやFTPクライアント/サーバー、電子メールソフト、開発環境、ミニゲームなどが同梱されている。今回バージョン1.0がリリースされた64ビット版のMenuet64は個人および教育で使用する場合は無償だが、商用の場合は別途許可を得る必要がある。許可なく再配布やリバースエンジニアリンクなどをすることは禁じられている。一方、32ビット版のMenuet32はGPLとなっている。

Menuet32の最初のバージョンがリリースされたのは2000年5月16日。バージョン1.0に到達するまでに15年を要したことになる(Menuet32は2月にリリースされたバージョン0.86が最新版)。Menuet64の最初のバージョンがリリースされた2005年6月22日からは、ほぼ10年が経過している。2013年11月にバージョン0.99.34がリリースされた際、開発者のVille Turjanmaa氏は、不完全なコードをリリースすることは避けたいため、バージョン1.0のリリースまでに少なくとも1年はかかると述べていた。
この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
  • 凄いとしか (スコア:2, 興味深い)

    by Anonymous Coward on 2015年05月17日 13時42分 (#2815700)

    スクリーンショットのアプリがコレ系の独自OSにしてはかなり充実してます。
    どうやって作っているのかとシステムコールのドキュメント見たら、全てアセンブラでした(笑)
    あのアプリも全部アセンブラって事ですね。

    • by FlakTower (32689) on 2015年05月18日 14時55分 (#2816225) 日記

      すごいですよね。
      昔から「アセンブラでもできるし、サイズも小さく作れる」
      とは言われていましたが、やる気と技術力のためか、
      「という声もある」止まりな感じでした。
      しかし、このOSを見ると「ほんとにできるんだ」と思います。

      「利用者やメンテナー」の視点だと、違う感想や想像をしてしまいますが、
      技術力として「作った」のはすごいと思います。

      親コメント
    • by Anonymous Coward

      あのアプリも全部アセンブラ?
      あのアプリも全部、アセンブリ言語を機械語にできるってこと?

      • by Anonymous Coward

        日本語難しいですよね。
        日本語(特に口語で)は自明(あたりまえ)の事は省略(elision)できます。
        元コメの人の「あのアプリも全部アセンブラって事ですね」は
        「あのアプリも全部アセンブラ(を使って作られている)って事ですね」
        と言う意味が省略されています。
        アプリ=アセンブラと言うそのままの意味にはなりません。

        こういう省略は日常会話でも良く使うので覚えておくと会話の幅が広がりますよ。
        例えば、皆でお店に入って飲み物を注文するとき、
        「A君はウーロン茶で、後の皆はビールね」
        と言う言い方をしたりしますが、これはA君=ウーロン茶と言う意味ではなく、
        A君はウーロン茶(を注文する)と言う意味が隠されています。
        どんな意味が隠されているかは状況によって変わって来るので慣れるまでは難しいです。
        日本語を読んでいて、そのままの文で意味がおかしいと思ったら、
        省略された意味がないかな?っと考えてみて下さい。

  • by Technobose (6861) on 2015年05月17日 18時34分 (#2815786) 日記
    開発のきっかけはLinuxに触発されたのかな。
    なんか一人、すごい人が出てくると後続が続くとすればLinusは、フィンランドに貢献したよね。
  • 最適化コンパイラの研究は盛んなはずだけど
    なぜ「今更」なアセンブラに負ける部分が残っているのだろうか?
    コンパイラのサイズ最適化が甘いのだろうか?

    いえ、決してコンパイラやアセンブラをディスってるわけじゃなくて、
    コンパイラのサイズ最適化にはまだ大幅な改善の余地があるのか?
    それとも、コンパイラ脳より、アセンブラ脳で考えた方が構造的に小さくなるのかな?
    という事で
  • by Anonymous Coward on 2015年05月17日 13時09分 (#2815688)

    何か理由があってアセンブリ言語にこだわっているのか? プロセッサの処理能力もメモリもジャブジャブ有り余っていて、昔と比べてコンパイラも飛躍的に性能が良くなったのに..........

    • by Anonymous Coward on 2015年05月17日 13時18分 (#2815692)

      電力とか容積をジャブジャブ使えない環境を想定してるから

      親コメント
      • by Anonymous Coward

        アセンブリ言語ってことはX86のIA32とIA64が前提ですよね。
        Intel EdisonでGUI環境構築するとかがターゲットになる…のかな?
        ARMとかに移植可能な状態なら大量に出てるARMのPSoC組み込みで使えるけど、
        X86な組み込みってそこまでバリエーション無かったと思うんだよなぁ…

        古いPCでも近代的な機能が使えて軽いとかならメリットあるけど、
        Windowsとかと互換性ないと近代的な機能が使えるうちに入るか微妙だしうーん

      • by Anonymous Coward

        いやそれ、さんざん言われている幻想だから…。
        今時の、pipeliningやout-of-orderバリバリのプロセッサのアセンブリ言語で、コンパイラより効率の良いコードを書くなんて無理よ。
        今でも、ごく小さいコードについて人間が最適化するケースはあるけど、OS全体を手書きのアセンブラで書いて、コンパイラに勝つなんてありえない。
        コードサイズについても、コンパイルの設定で、余分なランタイムを一切使わないバイナリを生成することだってできるし、その場合手書きコードと比べて劣る点は一切ない。
        コードサイズについては、LinuxがCで書かれていることからも明らかでしょ。

        • by Anonymous Coward on 2015年05月18日 5時43分 (#2815963)

          LinuxがCで書かれてるのはコードサイズが小さいからじゃない。
          生産性とかパフォーマンスとか学習効率とかその他もろもろのバランスが良いから。
          参加者全員の知識とスキルが十分に高くて、時間が無限にあるならフルアセンブラで書かれてる。

          # 今時アセンブラでバリバリ最適化する人はコンパイラが吐く最適化済みのコードとか
          # コンパイラの最適化部分のソースとかも読んだ上で最適化を考えてるのでコンパイラに負ける事はない

          親コメント
          • by Anonymous Coward

            # 今時アセンブラでバリバリ最適化する人はコンパイラが吐く最適化済みのコードとか
            # コンパイラの最適化部分のソースとかも読んだ上で最適化を考えてるのでコンパイラに負ける事はない

            これ。人間はコンパイラの吐いたコードを参考にするが、逆はない。

          • by Anonymous Coward

            ああ、これ見てこの変な流れの理由が分かった気がする。
            元コメの人、とにかくアセンブラで書くだけで早くなるんだ!
            みたいな、汎用機上がりのおっさんにでも出会って、
            それがアセンブラ使いの全てと思い込んじゃってるんじゃないか?

            # 知識をアップデートしてないって時点で、自分が馬鹿にしてるアセンブラ使いと同じレベルなんだけど。

        • by Anonymous Coward

          手書きアセンブラの方が速いとか言っている人は、絶対に今どきのアセンブラの最適化をやったことがないよね。
          今どきのCPUの最適化って、ループのμopの数を数えて命令キャッシュに入るか確かめるとか、
          ALUの表を作ってパイプラインストールがないかチェックするとか、「こんなことはコンピュータがやれよ」と思うような作業ばっかりなんだけど、
          こういう人たちは、優秀なハッカーなら、映画かアニメみたいにすらすら完璧なコードを書けると思ってるんだろう。

          • by Anonymous Coward

            SSE/AVXのレジスタの割り当てとか、人間がやるほうが効率が良い場合もあるよ。
            SSE/AVXのロード・ストア命令もCPUによって最適な命令が違ったりするけどコンパイラはそんなこと考慮にしてくれないしね。

            • by Anonymous Coward

              元コメとは違うACだけど、

              元コメAC氏は「今でも、ごく小さいコードについて人間が最適化するケースはあるけど」とそういった事例は認めた上で、
              「OS全体を手書きのアセンブラで書いて、コンパイラに勝つなんてありえない。」と述べてるんですよ。

              • by Anonymous Coward

                「コードサイズについても、コンパイルの設定で、余分なランタイムを一切使わないバイナリを生成することだってできるし、その場合手書きコードと比べて劣る点は一切ない。」とも言ってますね。

              • by Anonymous Coward

                高級言語の場合はだいたいABIが決まっているからアセンブラのほうが有利だな

              • by Anonymous Coward

                irreducibleなグラフはコンパイラは最適化を諦めて保守的になるから、アセンブラのほうが有利だな

          • by Anonymous Coward

            それ以前の話で、C言語とかでうまく仕様をコンパイラに伝えることができないからじゃないの?
            例えば、ローテイト命令、エンディアンの変換なんて、それをC言語で書いちゃうとかなり無駄なコードになってしまう。
            それを書かれた言語の意味が変わらない範囲でいくら最適化したところで無駄なコードができてしまう。
            そういった一般的によくある問題は、すでにアセンブラなど最適化された関数が用意されてるからいいもののないものに関してうまく伝えることができない。

    • C言語でもC++でもRustでも、実用的な速度で動作するOSを作るならCPU別にアセンブリコードが必要になるから。
      x86/x64専用と割りきってアセンブリで書くのもいいと思うけど、x86/x64以外で動かすならQEMUという手もあるし。

      親コメント
    • by Anonymous Coward

      昔と比べてコンパイラも飛躍的に性能が良くなったのに..........

      でもまだ人手でasm書いたほうが速いし小さいじゃん

    • by Anonymous Coward

      人間てのは「あともう少し足りない」生物なんだなあと、いつも思ってる。
      「メモリが4Gから8Gになりました、わーい快適、めでたしめでたし」とはいかなくて
      「じゃあ今まで出来なかった事に挑戦だ → やっぱりあとちょっと足りないんだよなあ・・・」となる。
      いつもこうだ。
      ジャブジャブ有り余る時代なんてまだしばらく来ない。
      このOSみたいに100%ピュアasmにこだわるのは、ある程度は道楽だろうけど、ここから1byteを稼ぐアイデアが出てきて、コンパイラやメモリ管理モジュールにアイデアを反映できたりする事もあるんだろう。

    • by Anonymous Coward

      拘りではなく、それしか出来ないってこともありますよね。

  • by Anonymous Coward on 2015年05月17日 13時22分 (#2815694)

    少なくとも嘘は言っていないな・・・
    しかも10年も開発が続いたのはすごい!
    スクリーンショットを見るとGUIもあるとは。
    プラットフォームはAMD64、x86なのね。

    • by Anonymous Coward
      わかって書いてるのかわからないけど、

      開発から10年。
      バージョン 1のリリースまで少なくとも 1年はかかると言ったのは2013/11のリリースの時。
      • by Anonymous Coward

        わかってなかった・・・

  • by Anonymous Coward on 2015年05月17日 13時54分 (#2815703)

    ファイルシステムは独自かな?usb mass storage+fat32はサポートとは書いてあるのでfatの実装は含んでるらしいけど。
    API見ただけだと分かりません。ディレクトリの作り方もわからん。
    Quakeとか書いてあるのでDOS互換のAPIも持ってるってことかな?
    そもそもなんで作り始めたのか?がサイトでは見つけられなかった。
    Quakeを高速に実行したかったのか、単にOS作る興味だったのか、なんだろうねぇ
    …といろいろわからん。
    ダウンロードして実行したりインストールされるドキュメント見たりソース見たりすればわかるんだろうけど、
    そこまでの興味が起きない(笑

    • by Anonymous Coward
      システムコールでウィンドウ生成から3D機能まで呼んでしまえるようで、DOSとの互換性があるようには思えない。
      動作中のスクリーンショットのタイトルがSDL QUAKEってなってるので、SDLが移植済み…なのかなぁ?
      # ドキュメントざっと見るとオーディオのサンプルすらASMベタ書きで、SDLあるならそう言ってくれって気分

      システムコールはかなりスッキリまとまっていて、
      デバイスドライバのサンプルもスッキリしたインタフェイスになってるけど…
      ほんとにこんなんでそれだけの機能が過不足無く動くのか、
      フェイクじゃないのか逆に不安になってしまった。
      まぁ現物置いてあるし実際動くんだろうけど。
  • by Anonymous Coward on 2015年05月17日 14時30分 (#2815711)

    アセンブラで究極に軽いOSを書きたい!

    移植性のNetBSDとかマイクロカーネル(IPC)のL4とか
    こういうのはワクワクします

    • by Anonymous Coward

      どれくらい軽くて速いのか環境ある人の感想が聞きたいですね
       
      最近JQueryばかり使ってて
      この富豪感に何やってんだ俺、と思う事がしばしばあるので
      ちょっと羨望はありますね

      • by Anonymous Coward

        クライアントプログラムって、内部的な動作を考えると直感的にこりゃ遅いだろうって処理も体感的にはほとんど分からないくらいだったりしますからね。

  • by Anonymous Coward on 2015年05月17日 20時58分 (#2815842)

    よくぞ続けてこられたと絶賛したい気持ち三割、こういう技術者になりたくない気持ち半分以上。
    OSを作るのは自分の技術力を試すには格好の車輪かもしれないけど、
    その車輪を木や鉄で作るのではなく、砂を糊でちまちま固めて作るようなものではないかなと。
    多少精巧なものは出来るだろうけど、役割としては変わらない、車輪は車輪。
    それだけの技術力や時間があるのなら、既存の車輪を活かしてもっと別の乗り物を組み立てて、世界を魅了して欲しかったな。
    もちろん個人の自由だから、OS作ろうが何しようが勝手なんだけど。
    おまけにアセンブラだったら、他の開発者もそう容易く近づけないし、
    一世一代のOSで終わりそうなのも残念。

    • by Anonymous Coward

      CPU変わったら移植性ゼロなんじゃね?
      あと、コードの可読性とかチームでのメンテナンスとか出来る?

      尤もx86-64はあと15年くらいは大丈夫だと思うけど。

      • by Anonymous Coward

        >あと、コードの可読性とかチームでのメンテナンスとか出来る?

        OS/2はご存知?

    • by Anonymous Coward

      長々と書いている割に内容が空っぽなのに哀しみを禁じ得ませんが
      本件の場合は、車輪→既存のハード、乗り物→このOS、アプリや人間→乗り手だよ。
      #アセンブラを知らなきゃ仕方ないか~

      • by Anonymous Coward

        君の好きなように例えていいが、どうやっても新規性はない

    • by Anonymous Coward

      であんたは何をなしとげたのかな?
      あんたみたいなのにはなりたくないな

      • by Anonymous Coward

        なしとげた事と、くだらない事なしとげた人の批判と、論理的にどう関係があるの?

      • by Anonymous Coward

        まあまあ。
        「俺はオヤジみたいに平凡な大人にはなりたくない!」って
        言っちゃうのは、正常な発達過程だと思いますよ。
        まあ大人になったら、しんちゃんパパがかなりの勝ち組であることに気がつくわけですが。

  • by Anonymous Coward on 2015年05月17日 22時28分 (#2815879)

    「OSASK」「Mona OS」とか、個人製作の国産OSが話題になっていたのって
    もう10年以上前の話になってしまうのですね。
    「MenuetOS」もそういう中で名前が出てきたので覚えています。

    Mona OSの作者は現在Twitter本社で働いているそうですね。
    http://gihyo.jp/lifestyle/serial/01/survival_strategy_engineer/0005 [gihyo.jp]
    http://hrnabi.com/2014/09/24/3739/ [hrnabi.com]
    http://logmi.jp/33415 [logmi.jp]

typodupeerror

日々是ハック也 -- あるハードコアバイナリアン

読み込み中...