パスワードを忘れた? アカウント作成
787658 story
プログラミング

C#言語のみを使って開発されたOS「Cosmos」 34

ストーリー by hylom
C#は小宇宙だ 部門より
eggy 曰く、

C#言語のみを使ってCosmosというOSが開発されたとのこと。C言語は一切使用されていないという(本家/.)。

現段階ではコンパイルと実行にマイクロソフト社のVisual Studioが必要であるが、ソースコードのコンパイルはExpress版でもできるとのこと。近日中にVB.NETサポートが追加されるそうだ。

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
  • by Anonymous Coward on 2011年09月09日 22時14分 (#2017569)

    >現段階ではコンパイルと実行にマイクロソフト社のVisual Studioが必要であるが、
    あれ?マイクロソフトの言語製品には、「OSを作ってはいけない」という規約がなかったっけ?

    • by Anonymous Coward

      昔は知りませんが、さすがにMicrosoftのお膝もとCODEPLEXで公開されてんだから大丈夫なんじゃない?

  • by Anonymous Coward on 2011年09月09日 21時17分 (#2017540)

    中間言語が吐かれるような気がするのですが、ちゃんと機械語が吐かれるんですか?
    そのまま動くギミックに興味があります。

  • by Anonymous Coward on 2011年09月09日 21時28分 (#2017546)

    .NETランタイムとかデバイスドライバとかブートストラップローダも全部C#で書かれてるのか。
    # どうやって?

    • Re:マジですげえ (スコア:3, おもしろおかしい)

      by Anonymous Coward on 2011年09月09日 21時37分 (#2017550)

      uni+みたいなもんだったりして。

      親コメント
    • by Anonymous Coward on 2011年09月09日 23時47分 (#2017611)

      C#はC言語のポインタに相当するものを言語仕様として持ってるから(持ってなくてもやりようはあるけど)不可能ではない
      また.NETランタイムとC#はWindows上では切り離せないように見えなくもないが本来は無関係というか違うレイヤーの話なので
      .NETランタイムをフルに実装したわけでもなければ実装する必要性も全くない

      親コメント
      • by funakichi (28497) on 2011年09月11日 17時23分 (#2018181)
        いや、デバドラや(いろいろ前提が要りそうだが)ブートローダはともかく、プロセス切り替えが無理でしょ。
        親コメント
        • by Anonymous Coward on 2011年09月11日 21時44分 (#2018272)

          とりあえずソースコードをざっと眺めた範囲ではコンテキストスイッチ(のことだよね?)は今のところ実装されてないっぽい
          ただ、IL2CPUに任意のオペコード出力(変換)ができるっぽい機能とそれを指定するっぽいOpCode属性があって
          OpCode属性を指定しただけのダミークラスがsource2/compilerディレクトリ内のCosmos.Compiler.Assembler.X86パッケージ内にずらずらと・・・
          というわけでC#じゃなくてもなんとでも出来そう

          親コメント
          • by funakichi (28497) on 2011年09月12日 8時08分 (#2018351)

            そう、いわゆるコンテキストスイッチ。(コンテキストという言葉はコンテキスト依存だから使いたくなかったんだ(笑))

            私の知ってるCPUはどれも大なり小なり高級言語では制御できない内部ステートがあるんだけど、x86とかx64には無いのかな?

            IL2CPUってそこまでやれるんですか?

            #完全にC#のみで記述するという記事だとは思わなかったんだけど、そうじゃないのかしらん?普通はCとアセンブラの混合で記述されてるもんだから、Cの部分をC#という話しかと…。

            親コメント
            • by Anonymous Coward

              IL2CPUを使ってC#(というかIL)で無理やり(今のところX86の)インラインアセンブリやってるみたいだからやろうと思えば何でもできるんじゃないかな

    • by Anonymous Coward

      すごいし面白いけど
      バイナリさえ出力できれば泥臭くてもなんとかはなるでしょう。

      # 実際は違うだろうけど

  • by Anonymous Coward on 2011年09月09日 21時48分 (#2017559)
    • by ruto (17678) on 2011年09月10日 7時49分 (#2017674) 日記
      中間言語をネイティブコードにコンパイルするIL2CPUというのを利用している。
      ネイティブコードを呼び出すP/Invokeはサポートしていない。
      その代わりにネイティブコードへの変換時にメソッドを置き換える仕組み(Plugs)がある。
      C#等のCIL言語やアセンブラ言語のコードで置き換えられる。

      その他:
      インターフェースはまだサポートされていない。特にForeachは動かない。
      今はx86だけだけど、他のアーキテクチャもサポート可能。
      QEMUがプライマリなプラットフォームだけど、ネイティブにブートできるISOやUSBのイメージも作れるし、PXEでネットワークブートもできる。
      Monoもサポートしている。
      修正BSDライセンス。
      親コメント
  • by Anonymous Coward on 2011年09月09日 22時37分 (#2017580)

    chaos [wikipedia.org]だったのですね・・・

  • by Anonymous Coward on 2011年09月10日 6時40分 (#2017670)

    C#は、整数の配列さえオブジェクトとする(ヒープを割り当てる)言語なので、OSというパフォーマンスが要求されるソフトの開発には向いていないと思っていたので驚いた。しかし、unsafe なコードを多用すれば、C#らしさが失われる代わりに、C言語並のことができるので、OSが作れたとしても特にすごくは無いのだが。

    • by Anonymous Coward

      GCからのメモリ割り当ては、スタックからのメモリ割り当てと同じで、今ここと記録してある値を変えるだけでは?
      スタックポインタと違ってレジスタではないですが、ヒープに割り当てるのが遅い原因とはあまり思えません。
      むしろ、配列の境界チェックなどが遅さの原因と思います。

      • by Anonymous Coward on 2011年09月10日 10時02分 (#2017704)

        使用済み配列の開放もGCにやってもらわなければならないのがオーバーヘッドになる。構造体のメンバに配列がある場合、配列の実態は構造体とは別領域なので両方をコピーしないとならないのだが、つまりコピー用のメソッドを別途定義しなければならない。整数型の自動変数のノリで配列を使ってはならないのがC#。

        親コメント
        • by Anonymous Coward

           今時の言語なら、使用済み配列の解放程度なら、ほとんど気にする必要ないくらいのオーバーヘッドじゃないかな。

    • by Anonymous Coward

      unsafeどころかIL2CPUの変換を前提とした疑似インラインアセンブリの嵐ですた

  • by Anonymous Coward on 2011年09月10日 9時42分 (#2017695)

    プロジェクトが停滞して久しいこのタイミングでなぜ?と。
    本家から機械的に移植してくるだけの記事はいらんよ。

    • by Anonymous Coward

      じゃあなんであなたがタレこまなかったの?

      俺は昔から知ってたけどねーって姿勢はカッコ悪いよ。

  • by Anonymous Coward on 2011年09月10日 13時49分 (#2017765)

    IPLから直接起動されるC#のランタイム+C#で記述したOSかとおもったら
    実行にVisualStudioが必要って・・・?

    • by Anonymous Coward

      別のレスにもあるけどネイティブにブートできるISOやUSBのイメージも作れるから必要じゃないよ

typodupeerror

日本発のオープンソースソフトウェアは42件 -- ある官僚

読み込み中...