Windows system >> Windowsの知識 >  >> Linuxシステムチュートリアル >> Linuxチュートリアル >> LINUXとWINDOWSカーネルの違い

LINUXとWINDOWSカーネルの違い

  

LINUXとWINDOWSについては、いろいろな問題があることがあります。このペーパーでは、2つの主流のオペレーティングシステムの類似点と相違点を技術的な観点から比較します。カーネル部分に注目してください。

I.モチベーション:

私は最初のWINDOWSキャンプでした。私はWINDOWSの下に2年以上のドライバを書いています。その後、学習の必要性のために、私はLINUXに切り替えました、そしてそれはほぼ2年でした。その間、私はたくさんのひねりやターンを経験し、たくさんのことを学びました。 WINDOWSドライバを開発するときの経験と知識が十分ではないので、私は今LINUXに慣れ親しんでいると感じます。

もちろん、2年ごとの勉強は戸口にあるとしか言えません。すべてのオペレーティングシステムは非常に強力であり、常に発展しています。それゆえ、私は個人的な観点からそれを比較していますが、不足していることは避けられません。

この記事を書いているのは、WINDOWキャンプから転居したことのある人(上司など)とWINDOWSの間を移動したい人や、その両方に興味がある人にも役立つでしょう。助けて。

全体として、2つのオペレーティングシステムにはそれぞれ長所があると思います。私はLINUXの自由と開放性が好きで、そしてWINDOWSの均一性と互換性が好きです。以下では、次の2つのオペレーティングシステムの類似点と相違点を比較します。

ところで:オペレーティングシステムのバージョンについては、WINDOWSカーネルはWIN 2K以来あまり変わっていません。私はWIN2K、WIN XPにも精通しています。この記事のLINUXカーネルは2.6です。具体的には、2.6.18です。私はこのバージョンに最も精通しているからです。しかし、最新のものは2.6.31だったようです。さらに、2.6.18に関して、このバージョンのT-Bagwellの学生からの引用は、「2.6.18は、2.4.18のように比較的安定した大規模バージョンであるように思われる、多くの会社、組み込み使用」 。私が使用するCENTOS 5は2.6.18に基づいています。

次に、両者の違い:

両者の最大の違いは、WINDOWSが商用ソフトウェアで、LINUXがオープンソースソフトウェアであるということです。商用ソフトウェアの利点は、1つのことをするために多くのマンパワーとリソースを集中できるということです。統合が容易で互換性がある(顧客のニーズにより)。オープンソースの利点は柔軟でオープンです。

以下の比較では、一般的に最初にWINDOWを、次にLINUXを紹介します。

1、concept:business VSオープンソース

WINDOWSは市販のソフトウェアであり、そのソースコードは秘密にされていますもちろん、他のMS以外の人々にもソースコードを閲覧する機会があります。 MSはNDA(NON DISCLOSURE AGREEMENT)に署名し、WINDOWSコードを入手することができます。

しかし、大多数の貧しい学生、さらにはVISUAL STUDIOが海賊版のTuen Mun企業を使用している場合は、MSとNDAに署名WINDOWSの世界では、DDK(DRIVER DEVELOPMENT KIT)とWINDBG(カーネルデバッグツール)によってしか漏れることができないため、REVERSE ENGINEERING(reverse)です。

これは、< WINDOWS INTERNALS>本が非常に熱いものである理由でもありますが、マイクロソフトによって承認されており、多くの書籍が出版されています。内部の詳細カーネルに関する別の本は< UNDOCUMENTED WINDOWS 2K SECRETS>ですが、古くはありますがたくさんのインサイダーです。文書化されていないと秘密のWINDOWSについてこれら2つの単語は間違いなく "スーパービューティー"の単語に似ています。これらのことは通常見えないので。

対応して、Linuxの世界では一般的な言葉はRTFSです。それはFXXXXXXソースコードを読むことです(この文は最も初期のlinus torvalds、LINUXの父親と言われています)。意味は「いまいましいコードを読む」ことを意味します。言葉の意味は、私はあなたにコードをあげる、あなたはまだ誓いたいですか?それは彼がGF /LP /LDに言っているようなものです、私はあなたにすべての銀行口座パスワードを与えました、あなたはまだ誓いたいですか?

実際、彼は女性が彼女に同行するためにまだあなたの時間とエネルギーが必要であることを知りません(または知りません)。 LINUXプログラマーがドキュメンテーションを意識していないかのようです。もちろん、LINUXプログラマーはドキュメンテーションの重要性も知っておくべきですが、メンテナンスコストが高すぎること、そしてLINUXカーネルの変更が速すぎることもあります。だからLINUXのドキュメンテーションはいつもMSDNより悪いと感じる。

WIN 2Kのソースコードが漏洩したとき、私はそれをダウンロードするのを待つことができませんでしたまだそれを見たことはありませんが、WINDOWSのソースコードを手に入れるという感覚は間違いなく比類のない美しさより悪いことではありません。 (もちろん、私は妻と結婚したり、中を見たりしたいのです。)

対照的に、LINUXはオープンソースなので、コードは常に表示されています。誰もがこの事実を知っていますが、あなたが前にあらゆる種類の方法を使わなければならないことを知るとき、あなたは数語ですべての情報を手に入れることができます。

Linuxのソースコードを読んだ後、私はついにオリジナルのカーネルの大部分もC言語であることを発見しました(以前に想像されたアセンブリではなく)同時に、カーネルはそれほど不思議ではないようです。カーネルは通常のプログラムをコンパイルするよりも少し面倒で時間がかかりますオリジナルのコンパイル済みカーネルは通常のCコンパイラでも使用できますオリジナルのカーネルも通常の実行可能ファイルです(PS:MSもVSを使用していると思います) WINDOWSの翻訳同時に、私はWINDOWSカーネルも実行可能ファイルであることを知っています。カーネルの最初の置き換えはとても単純です。

最後に、カーネルは私が変更することができますWow haha​​ha!

規則に従ってください、私はビジネスがまだ良いと思います。たとえば、WDMでドライバを作成したことがあり、WIN 98、WIN 2K、WIN XPで実行できます。とても便利です。そして、もしあなたがLINUXに切り替えたら、カーネルのバージョンが異なっても使用するヘッダファイルと関数インタフェースが変わらないように祈らなければなりません。それ以外の場合は、コードを変更する必要があります。

同時に、オープンソースの利点は学習に適しており、非常に柔軟です。 LINUXは学校、学生に非常に適していると思います。オープンソースのため、わからないことが見つかったら、直接そのソースにアクセスできます(RTFSを覚えていますか?)。わからない場合は、フォーラムで質問することができます。 WINDOWSのために、あなたはその内部メカニズムを理解したい、あなたはGOOGLEしなければなりませんそしてそれから祈ります。より良い情報源は、UNDER THE HOOD、またはSoso BUGSLAYERというテーマのMSDNの下の雑誌です。この2つのトピックの作者であるMatt PietrekとJohn Robbinsは、疲れきったキャラクターです。

ところで、UNDER THE HOOD自体の名前は。 HOODという言葉はカバーを意味するので、私は今まで一度もそれを理解していません。それで、カバーの下の欠陥は何ですか?なぜあなたはカバーの下を見たいですか?

アメリカに来た後、私は徐々に理解しました。フードはここで車のボンネットとして理解されるべきです。米国では、車は非常に一般的です。あなたが運転するがフードを決して開かないならば、あなたはそれを使うだけで車の中ではない。それであなたがふたを開けたらどうしますか?エンジンの破壊など、内部の詳細をたくさん見ることができます。

アメリカの自動車王国では、人々は日常生活の中で車をよく知っているので、多くのソフトウェア用語が車に関連しています。たとえば、「エンジン」という単語は、3Dゲームをプレイするときによく見られるように、最新の3Dエンジンを使用しています。どういう意味ですか?ゲームの核心部分(自動車のエンジン)がアップグレードされました。外の人のイメージを変えるだけではありません。

さらに、オープンソースソフトウェアは車とよく似ています。オープンソース事故の後、あなたは車(ソフトウェア)を買った、あなたは修理する修理店を得ることができます。つまり、彼が理解している限り、誰でも変更することができます。 COPY RIGHTソフトウェアは、あなたが車を購入したがエンジンカバーがロックされているということである、それが壊れているならば、それは製造業者によって修理されることができるだけである。製造業者がそれを修理または修理したくないならば?それならあなたは自分の人生を受け入れるだけです。

もう少し離れて、やめてください。

1.1、リリース:バイナリVSのソースコード

ここでの主な議論は、リリースプログラムでWINDOWSとLINUXが採用しているさまざまな形式と概念です。一緒にリンクしました。

WINDOWSの世界では、ほとんどすべてのインストーラはバイナリ形式でリリースされています。言い換えれば、ユーザはプログラムをダウンロードし、次にそれをずっとNEXT、NEXT、NEXTにダブルクリックする。この方法は初心者に非常に適しています。 Linuxの世界でも、YUM、APT-GETなど、同様のメカニズムがあります。しかし、YUMとAPT-GETは比較的遅く、それ以前は、Linuxの世界にプログラムをインストールするのが面倒でした。

LINUX YUM、APT-GETだけでは不十分な場合があります。例えば、何人かの人々によって書かれた小さなソフトウェアはこれらの大きな公共図書館に置かれていません。現時点では、一般的に1つまたは複数のソースファイルが提供されているので、ユーザーは自分でそれらをダウンロードする必要があります。' compile'インストールします。これはLinuxの世界で一般的なソースコードリリースの形式でもあります。

当初、私はこの形式のLinuxの出版には慣れていませんでした。 WINDOWSのダブルクリックによるインストールでは、LINUXのインストールは非常に面倒で、自分でやらなければならないと感じます/CONFIGURE、MAKE、MAKE INSTALLこのソフトウェアが他のライブラリに依存している場合、念のため自分でそれらのライブラリを見つけなければなりません。これらのライブラリは他のライブラリに依存しています...さらに、さまざまなライブラリのバージョンも問題になります。

Linuxの世界では、なぜそんなに多くのソースコードがリリースされているのですか。ソースコードの代わりにWindowsで世界的に人気のあるバイナリファイルがリリースされたのはなぜですか?後者に関しては、WINDOWS上の多くのソースコードは企業秘密であり公開されていないので、それは十分に説明されています。同時に、WINDOWSプログラムが使用するライブラリも一般システムにインストールされています。したがって、バイナリリリースは実行可能で非常に便利です。

前の質問について、ソースコードリリースの利点の1つは、コンパイル時にいくつかの最適化と設定を行えることです。たとえば、32または64ビットプラットフォームでコンパイルした場合、同じコードを正しく最適化できます。さらに、ユーザーはコンパイル時にいくつかのスイッチを設定することもできるので、コンパイル中の最適化は一般にランタイム最適化よりも優れています。

ソースコードリリースのマイナス面の1つは、ユーザーにとってより厳しいことです。 configueを実行すれば、makeコマンドは問題ありません。うまくいかない場合は、自分のファイルを変更する必要がありますが、これは一般のユーザーにとっては間違いなく不可能です。さらに、ライブラリー間の依存関係は、それらを手動で処理した場合は非常に面倒です。幸い、Linuxの世界では、YUM APT-GETなどのパッケージ管理システムがありました。ほとんどのソフトウェアは簡単にインストールできます。

2、プロセスとその作成CreateProcess VS fork + execv

Windowsの世界でプロセスを作成するために最も一般的に使用されているWIN32 APIはCreateProcessと関連する関数です。この関数にはたくさんのパラメータ(WINDOWS APIの機能)が必要ですが、多くのパラメータは単にNULL、TRUE、またはFALSEで表すことができます。さらに、どのファイルを実行するかを直接指示します。

Linuxの世界では、forkを使って新しいプロセスを作成することが漠然とわかっています。しかし、私がforkの機能説明を見たとき、私はびっくりしました。 forkはパラメータを必要としないためです。私はCreateProcessの10個のパラメータに慣れていて、突然パラメータを必要としない関数に変更しました、それは素晴らしい気分です。一方では、物事ははるかに簡単であるように見えます、そしてあなたは10個のパラメータのすべての意味を理解する必要はありません。一方で、私は非常に混乱しています。

後でLINUXのプロセスの意味がWINDOWSとは異なることを知りました。 LINUXのプロセス自体は実行可能です。 WINDOWSでは、プロセスは単にリソースの所有者を表し、実行することはできません。実行するには、スレッドが必要です。これはまた、実行されるファイルの名前がCreateProcessで渡される必要がある理由の一部も説明しています。

Copyright © Windowsの知識 All Rights Reserved