Linuxカーネルの25年間の開発は、素人の言葉で修飾または抽象化できますか?[閉まっている]


12

Linuxカーネルはほぼ25歳です。1991年(開始日)以降のLinuxカーネルの開発履歴、および1994年(1.0.0)から今日までの部分的な短いバージョンを作成する必要があった場合、私はできませんでした。カーネルリリースノートを1つ1つ読むのではなく、最善の方法は、バージョン3.11までのカーネルに追加された一般的なリリース機能である以下を提供することです(ノートとリンクは省略)。

  • Linuxカーネルのバージョン1.0は1994年3月14日にリリースされました。このリリースのLinuxカーネルは、シングルプロセッサのi386ベースのコンピューターシステムのみをサポートしていました。移植性が懸念されるようになったため、 バージョン1.2(1995年3月7日リリース)は、Alpha、SPARC、およびMIPSアーキテクチャに基づくプロセッサを使用するコンピュータシステムのサポートを獲得しました。
  • バージョン2.0は1996年6月9日にリリースされました。シリーズには41のリリースがありました。2.0の主な機能は、SMPサポート(つまり、単一システムでの複数のプロセッサのサポート)と、より多くの種類のプロセッサのサポートでした。
  • バージョン2.2(1999年1月26日リリース)は、グローバルスピンロックを削除し、改善されたSMPサポートを提供し、m68kおよびPowerPCアーキテクチャと新しいファイルシステム(MicrosoftのNTFSの読み取り専用サポートを含む)のサポートを追加しました。
  • 2001年1月4日にリリースされたバージョン2.4.0には、ISAプラグアンドプレイ、USB、およびPCカードのサポートが含まれていました。また、Hewlett-PackardのPA-RISCプロセッサのサポートも含まれていました。2.4.xの開発では、シリーズの期間を通じて、Bluetooth、Logical Volume Manager(LVM)バージョン1、RAIDサポート、InterMezzo、ext3ファイルシステムのサポートなど、より多くの機能が利用できるようになりました。
  • バージョン2.6.0は2003年12月18日にリリースされました。2.6.xの開発は、シリーズの全期間を通じて新しい機能を含めるようにさらに変更されました。2.6シリーズで行われた変更には、メインラインカーネルソースへのµClinuxの統合、PAEサポート、CPUのいくつかの新しいラインのサポート、メインラインカーネルソースへのALSAの統合、最大2 32ユーザー(最大2 16)、最大2 29プロセスIDのサポート(64ビットのみ、32ビットアーチはまだ2 15に制限されています))、デバイスタイプの数と各タイプのデバイスの数を大幅に増やし、64ビットサポートを改善し、最大16テラバイトのファイルサイズをサポートするファイルシステムのサポート、カーネル内プリエンプション、ネイティブPOSIXスレッドライブラリのサポート(NPTL)、メインラインカーネルソースへのユーザーモードLinux統合、メインラインカーネルソースへのSELinux統合、InfiniBandサポートなどがあります。また、注目すべきは、FUSE、JFS、XFS、ext4など、2.6.xリリース全体でいくつかのファイルシステムが追加されていることです。2.6カーネルシリーズの歴史の詳細は、kernel.orgの2.6カーネルシリーズソースコードリリースエリアのChangeLogファイルに記載されています。
  • バージョン3.0は2011年7月22日にリリースされました。トーバルズは、大きな変化は「何もありません。絶対に何もない」と発表しました。2011年5月30日、トーバルズは次のように発表しました。「...次のリリースは、まったく新しい光沢のある数字ではなく、優れたカーネルでもあることを確認しましょう。」予想される6〜7週間の開発プロセスの後、Linuxの20周年の近くにリリースされます。
  • 2012年12月、Torvaldsはi386プロセッサのサポートを削除することでカーネルの複雑さを軽減することを決定し、3.7カーネルシリーズ は元のプロセッサを引き続きサポートする最後のシリーズになりました。同じシリーズは、ARMプロセッサのサポートを統合しました。
  • 2013年9月2日にリリースされたバージョン3.11は、一時ファイルの脆弱性を減らすためのopen(2)の新しいO_TMPFILEフラグ、実験的なAMD Radeon動的電力管理、低遅延ネットワークポーリング、zswap(圧縮スワップキャッシュ)などの多くの新機能を追加します。

また、長年にわたってLinux Foundationがカーネル開発について報告していることも付け加えることができます。2012-2013カーネル開発のハイライトは次のとおりです。

  • 536の企業(私たちが知っている)を代表する3,738人の開発者からほぼ92,000の変更セットがマージされました。
  • 重要な新機能の膨大な配列がメインラインにマージされました。これらには、完全なティックレス操作、ユーザー名前空間、ARMのKVMおよびXen仮想化、スケジューラーでのエンティティごとの負荷追跡、ユーザー空間チェックポイント/再起動、64ビットARMアーキテクチャサポート、F2FSフラッシュ指向ファイルシステム、多くのネットワーク改善が含まれますレイテンシとバッファの膨張の問題では、ブロックストレージデバイスの高速キャッシングを提供する2つの独立したサブシステムなどがあります。
  • Android固有のカーネル機能をめぐる長年の争いは、完全に背景に消えていきました。よく議論されている「ウェイクロック」機能は、最新のAndroidデバイスで使用されている別のメインラインソリューションに静かに置き換えられました。
  • この期間中、開発カーネルのバグを見つけるための自動化ツールの使用が大幅に増加しました。「トリニティ」ファズテスターやゼロデイビルドブートシステムなどのツールは、リリース前のカーネルで多数のバグを検出し、開発サイクルを短縮し、コミュニティがより高品質のリリースを提供できるようにします。
  • モバイルおよび組み込み業界からの貢献は増え続けています。たとえば、Linaro、Samsung、およびTIは、このペーパーの以前のバージョンの変更の4.4%を共同で提供しました。3.10までの期間、それらはすべての変更のほぼ11%に貢献しました。
  • カーネルプロジェクトは初めて女性向けのアウトリーチプログラムに参加し、7つの職種に41のアプリケーションを提供しました。アプリケーションプロセス中に、374個のパッチがカーネルに送信され、それらのパッチの1/3以上が3.10カーネルリリースで受け入れられました。インターンプロセスは現在進行中ですが、その結果は、将来のカーネルリリースまで表示されません。

さらに、個々のコミットを超えるメトリックがあるため、カーネルに何が起こっているのかを定量化することはそれほど難しくありません。たとえば、1994年の1.0.0カーネルには176 250行のコードがありました。そして、3.10のような現代のカーネルには15 803 499行のコードがあります。かなりもっと。カーネルのリリース頻度が増加し(3.10の場合は63日間)、変更率も増加しました(私たちが話すように1時間あたり9コミット以上)。Linux Foundationを引用するには:

この変化率を何年も維持する能力は、以前のパブリックソフトウェアプロジェクトでは前例のないものです。

しかし、これはすべて私の意見ではほとんど洞察をもたらしません。したがって、私は尋ねます:

  1. この四半世紀の進化は、 このカーネルを構成するすべてのリストされた機能を時間の経過とともに線形的に追加することを超えて、簡単に修飾できますか?
  2. そして、これは、Linuxカーネルが何であるか、またはそれがどこに向かっているのかについての洞察をもたらしますか?25年の開発の後、それについていくつかの結論を確かに引き出すことができますか?

すべてを言うことなく、すべてを言う素人の言葉で抽象的な答えを探しています。


「最大229のプロセスIDのサポート」に飛びついたので、これをグーグルで検索しましたが、唯一の参照は、その段落の元のソースです。プロセスIDには(署名された)16ビットの範囲、つまり〜16,000があると思っていましたが、実際にはそれよりはるかに大きい場合があります。確かに数百ではありません。
goldilocks 14

3
この質問は、主題に関するウィキペディアの記事を探しているため、広すぎます。
ジル「SO-悪であるのをやめる」14

ここに論文を書くつもりですか?それは結構ですが、あなたがやろうとしていることについて具体的であるなら、賢明なアドバイスです。私は、地元の散水ホールでの次の夜の準備ができているだけの良い要約があるとは思わない;)
goldilocks 14

1
私はこれについて、または類似の論文を書くことを計画している人が少なくとも数人いたことを漠然と思い出します。このテーマに関する学術文献が見つかると思います...既存の出版物を指し示す以外に、あなたの質問は答えるのに何ヶ月もの研究を必要とするようです。
デロバート14

あなたの質問については、ここで良い答えを得るために、素人の用語について教えてください。それとは別に、これをlkmlに投稿し、あなたの年表についてフィードバックをもらいましょう。あなたが重要な何かを見逃した場合、彼らはあなたに知らせます。
バナンイン14

回答:


11

あなたが尋ねる:

このカーネルの四半世紀の進化は、このカーネルを構成するすべてのリストされた機能の経時的な線形追加を超えて、簡単に修飾できますか?そして、これは、Linuxカーネルが何であるか、またはそれがどこに向かっているのかについての洞察をもたらしますか?

このような質問には明確な答えがあるとは思いません。しかし、Linuxカーネルの開発を推進している力を理解することは難しくないと思います。

まず、コンピューターはますます重要なものになっています。チョムスキーは、どこか工業化経済の中心であると述べています。コンピューターはオペレーティングシステムなしでは存在しないため、オペレーティングシステムが重要になります。

80年代と90年代に、独自のオペレーティングシステムが急上昇しました。これはある意味で不自然な状況でした。MicrosoftのWindowsは、しばらくの間支配的であり、ある意味では依然として支配的でしたが、ネットワーク効果を利用することによってのみその地位を維持しました。

インターネットの台頭により、コミュニティオペレーティングシステムを作成することが可能になりました。ただし、このようなオペレーティングシステムは、所有権を取得できない場合にのみ有用です。オペレーティングシステムのBSDファミリは、このカテゴリに属していませんでした。そのため、所有権を持たないコミュニティオペレーティングシステムの中心としてのLinuxカーネルの台頭。

多くの大手コンピューターベンダーがLinuxカーネルの背後にいることに注意してください。どうして?個人は自由を気にします。コミュニティは自由を大切にします。企業は、利益と関連戦略のみを重視します。多くのコンピューター企業は、「コモディティ化された」オペレーティングシステム、「平等な競争の場」という概念に和解したと信じています。彼らは、Microsoftがオペレーティングシステムを所有することで多くのお金を稼いでいる例を見ていたが、誰もがMicrosoftになることはできず、単一のベンダーがそのような権力の地位にいることは、それが与えられるからといって、最も問題が少ないそれらは他の企業の観点から不公平な利点です。

だから、ほとんどの企業はマイクロソフトになる立場になく、おそらくそうなりたくないので、「コモディティ」オペレーティングシステムをサポートすることに決めたと思います。繰り返しますが、平等な競技場です。したがって、誰でもこのOSを目的に応じて使用でき、グループ内の誰も他の誰よりも有利な立場にはありません。別の見方をすれば、オペレーティングシステムがプロプライエタリになるのと同じくらい基本的なものを持つことは、自由市場の原則に対する深刻な干渉であるということです。一般的に、企業は勝者側にいることができれば自由市場を特に支持していませんが、もしそうでなければ、そうです。

Linuxカーネルの特性のほとんどは、実際にこれらのダイナミクスから推測できます。たとえば、Unixライクなオペレーティングシステムのモジュラーで順応性のある性質は、「商品」として設計されたOSに適しています。また、カーネルプロジェクトの急速に変化する性質の1つは、多くの企業の要求をすべて満たして、必要なものにすることです。多くの活動はハードウェアサポート/ドライバーに集中していますが、その領域以外にも多くの活動があります。新しい機能の継続的な開発と既存の機能の保守と改善。

もちろん、一般にフリーソフトウェアコミュニティ、またはFOSS(フリーおよびオープンソースソフトウェア)と呼ばれるコミュニティの要望を無視してはいけません。結局のところ、DebianやFedoraのようなプロジェクトは、これらの価値を信じるボランティアによって運営されています。しかし、企業が果たす役割も過小評価すべきではないと思います。


1
+1 GNUを組み合わせたLinuxを主流に当惑させた社会政治的勢力の問題を提起した。特に著作見る-私は実際にOSの開発に手の決定的な特徴である、それはそれは「非技術的な問題」に見えるかもしれませんが、起源、非常に重要な側面だと思うエリック・レイモンドを -そして、幅広いハードウェアメーカーによる採用のダイナミクスの主要部分であり、インターネットの歴史的に支配的なプラットフォームとして。
goldilocks 14

^多くの人が自宅にLinuxカーネルを持っているので、これ(ルーター、DVRボックスなど)が原因でそれさえ知らないことに注意してください
goldilocks 14

カーネルを適時に配置し、普及したダイナミクス、つまりコンピューティングの進化に訴えるためのあなたの答えを賞賛します。ビジネスアピール; 市場の力; インターネット; 計算の自由; ライセンス交付; また、上記のすべてがカーネル全体の実装にどのように影響するかを、Linux全体の展望とともに説明します。「不自然な状況」についてのあなたの声明を読む必要があります。これは、これを適切に評価するための歴史的な観点を欠いている可能性があります。これは重要です。私はカーネル自体に本当に焦点を合わせていましたが、上記のあなたのポイントとコメントについてもっと考えます。ありがとう!

1
@goldilocks:Androidの携帯電話はもちろんです。
スリーブマン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.