2022年12月18日日曜日

なぜLinuxは最も安全なOSなのか?

https://jp.quora.com/%E3%81%AA%E3%81%9CLinux%E3%81%AF%E6%9C%80%E3%82%82%E5%AE%89%E5%85%A8%E3%81%AAOS%E3%81%AA%E3%81%AE%E3%81%8B

並べ替え
 · 
フォロー中
Alice Matt

90年代に初期リリースされて以来、”安全”は常にLinuxオペレーティング・システムの中核をなしてきました。なぜ、Linuxは他のOSよりも安全だと言われているのか、その主なポイントを見ていきましょう。

  • 最も重要な差別化要因の1つは、Linuxがオープンソースであることです。コーダーは互いの仕事を読み、コメントすることができるので、コードに存在するどんな脆弱性もすぐに気づかれ、ユーザが検査することができるのです。誰でもレビューして、バグやバックドアがないことを確認できるので、Linuxの信頼性が高まります。
  • Linux は、技術者コミュニティ自身によって常にコードがレビューされているため、情報セキュリティの世界で知られている悪用可能な欠陥が少ないのです。
  • Linux はデフォルトで管理者権限を与えません。ユーザがシステムレベルの操作を行おうとすると、「ルート」のパスワードを要求することで、より良いユーザ権限モデルを確保しています。
  • パッケージマネージャ の使用。一般的に、各OSはインターネットからダウンロードするだけなので、当然ながらリスクがあります。しかし、Linuxでは、必要なプログラムは信頼できるソース、「パッケージ」からしかインストールされないようにしているのです。
  • アップデートが簡単かつ迅速に行えるため、ユーザーは機器のセキュリティに影響を与えるような古いアプリケーションではなく、安全なアプリケーションを持つことができます。
  • Linux は、他のオペレーティング・システム(例えば Windows)に比べて、ユーザー層が比較的狭いです。このため、ハッカーは通常、Linux ユーザーに悪意ある攻撃を集中させず、市場のより大きなセグメントをターゲットにすることを選択します。

これらは、Linuxが最も安全なOSの1つであると言われている理由を理解するために、私たちが注目できるポイントのほんの一部です。もちろん、誰もが完全に安全ということはありません。したがって、常に用心深く、安全性のニーズと期待に合ったオペレーティング・システムを選択してください。

脚注

 · 
フォロー

どこからそのデマを引っ張ってきたのですか?

Linuxは最も安全なOSではありません。商用OSで様々なセキュリティ規格を満たしたもっと安全なOSは沢山あります。

ただWindows OSなどに比べてクラッカーから狙われにくいOSというだけのことです。

ThinkPad T460sにUbuntu (Xubuntu) をインストールしています。これで開発、メールのやりとり、文書書きなどすべての仕事をしています。

仮想化環境を使うことも考えたのですが、

  • 仮想化にはオーバーヘッドがある
  • そもそもWindows/Mac環境でしかできない仕事は(私には)ない

という理由で素のLinuxを使っています。Ubuntuなのは、以前、無線LANのドライバーがしばらく前まで使っていたDebianではサポートされていなかったことがあったせいです。

 · 
フォロー
Markus Mahlberg

Alpine Linux

これはAlpineの基本的なインストールで、128.2MBを使用しています。そう、これはギガバイトではなくメガバイトなのです。他の多くのマイクロLinuxと比較すると、これは完全に機能するシステムです。私は、Firefox、Visual Studio Code、Kubernetes Clusterを1つのインストールで動かしています。

ある時俺はLinuxに乗り換えようと決めた。新古のDellを買ってMintをインストールした。WiFiだけが動かなかった。

掲示板を検索すると、これはよくある問題だった。この問題を解決するための詳しい手順が複数あったが、どれもうまくいかなかった。

2日ほど経ち、もうこの努力を全部投げ出そうと思ったその時、パソコンの横にあるスイッチに気づいた。このスイッチをonにすると、WiFiが魔法のように動いた。

何でLinuxを使わないのかって? 俺がアホ過ぎるからさ…。

デュアルブートとしては同じなので、「WindowsとLinuxの共存は危険」とか「MacのBootcampが安全」とかいう前提がそもそもおかしいのではないでしょうか。

先程検索してみると、そういうことを仰る方、多いようですね。しかし私はもう20年以上、そういう環境を使い続けている(この回答を書いているのも Windows 10 pro と Debian のデュアルブートになっている PC で Linux を起動して書いています)のですが、そういうことを感じたことはありませんねえ。

おそらくそういうことを言われる方は、Linux から Windows のパーティションを writable にマウントして、触っちゃいけないところを触っちゃったりしているのではないかと思うのですね。私は Windows のシステムの入っているところは Linux では read only でマウントしていて、NTFS(昔は FAT でしたけど)の共有領域を別に作っておくことにしています。Bootcamp の場合どうなっているか分かりませんが、本質的なリスク、安全に使うために行っておくべきことは同様だと思います。

まあ、人って、トラブルが起きたら誰かのせいに、何かのせいにしたい、そういう生き物ですよ。個人でそうされることは勝手にしていただければいいですけど、一般化されるというのは……ちょっと、ね。

Linuxというと本来はカーネルだけを指すのですが、おそらくそういう意味ではないでしょうから。。

まずはLinuxと言われる何か、簡単な所からではUbuntuとかCentOSとかを調べて、何かのパソコンにインストールするところから始めてはいかがでしょう。

最近のUbuntuとかは、dvdから直接ブートして、インストールしなくても起動は出来るようになっています。それで雰囲気は理解できるのではないでしょうか。

単に使う、というだけであれば、そもそもからしてAndoroid OS、要するにiPhoneではないスマホのほとんどはLinuxですので、扱えるかと言えば、たいていの人は扱えることになると思います。

こんにちわ。

古いコンピュータとのことで、15年前のPCでも動作するであろう軽量Linuxでおすすめをご紹介いたします。

なお、今回ご紹介いたします軽量Linuxは多少知識(Linux導入に関連するもの)が必要になりますのでご注意ください。

また、カタログスペック上動作する可能性があるだけで、実際に動作するかは実機確認が必要です。

大半のコンピュータは動作すると思いますが、デバイスドライバなどの問題があり一部正常に動作しない場合があります。

ディスプレイの解像度やネットワーク設定(LAN)などが正しく動かない場合がありますので、その場合は個別にドライバの更新などをおこなってください。

5年ぐらい前のPCならば苦労せず導入できるのではと思います。

  • Basix

日本で開発されているUbuntuベースの軽量Linuxになります。

公式見解でCPU166MHz以上のPentium MMX以降x86互換、メモリ128MB以上と、非常に古い低スペックのPCでも動作可能となっております。

※インストール直後は最低限のパッケージのみであるため、カスタマイズ(自分である程度いじれる)できる知識が必要です。

  • wattOS

Ubuntuをベースとした軽量Linuxになります。

こちらもメモリ256MB程度で動作するのと、省電力設計が売りなのでノートPCに特におすすめします。

 · 
フォロー

回答リクエストありがとうございました。

カスタマイズが柔軟で、やりたいことは何でもと言っても過言ではないほどできる、というところではないでしょうか。与えられた設定の範囲で気に食わなければ、何ならソースコードを自分で変更すればいい訳ですし。何ならOSそのものも変更できますから。

後は使いやすさと言うかどうか、構成さえ選べば比較的非力なPCでもそれなりに動作するところでしょうか。もちろん闇雲に最新の機能ゴテゴテのディストリビューションを入れてしまってはそうはならないかも知れませんが、そのPCのスペックに見合った構成をインストールすれば(これは簡単ではないかも知れませんが…)、持っているPCが多少古くても使い物になる可能性が高い、ということです。

とは言え、やはりMicrosoftのWordやExcel等がなく、代替ソフトウェアしかないので、代替品では他人がMicrosoft版で作成したファイルを完全互換で編集できない場合があるのは、ビジネス用途では辛いでしょうね。DTMのLinuxのソフトはよく知りませんが、これもMacやWindowsと同等と言う訳にはいかないでしょう。周辺機器も、ポピュラーなものは繋がるようですが、必ずしもLinux用のドライバーがない周辺機器もありますし、トータルで見たら、一般の人の普段使いや仕事での使用には使いやすいとは言えないと、正直思います。私も仕事使う分には面白いOSだと思っていますが、仕事以外で使おうとは思いません。

 · 
フォロー
Tony Mason

私はWindowsのカーネルを熟知しており、Linuxのカーネルについてはそれなりに知っています。

意外に思われるかもしれませんが、類似点の方がずっと多く、違いは少ないです。私がよく言う違いの1つは、LinuxのI/OモデルはUNIXから継承した同期式が基本で、WindowsのI/OモデルはVMSから継承した非同期式が基本であるということです。WindowsのI/Oリクエストの設計は、同期式と非同期式のI/Oを美しく管理できる優れた設計になっています。Linux(及び普通のUNIX)でも非同期のI/Oは可能ですが、そのための統一された仕組みはありません。これは致命的な欠陥ではなく、設計思想の違いですが、個人的には、Windowsの方がアーキテクチャ的に優れた選択だったと思っています。

どちらもスレッドとプロセスをサポートしています(Linuxはタスクという共通の構造を用いていますが)。どちらもページング方式の仮想メモリをサポートしています。どちらもネットワークをサポートしています。どちらもファイルシステムの動的な組み込みが可能です(この機能のインターフェイスは両者で大きく異なっていますが)。

Windowsは膨大な時間と労力をかけて非常に移植性の高いデバイスドライバのモデルを構築しました。デバイスドライバは様々なバージョンのOSやCPUアーキテクチャに対応しており、1つのソースコードで様々なバージョンのWindowsに対応できるドライバを書けます。リッチなプログラミングモデルがあります(周辺バスの仮想メモリのサポート、多重スロット/多重割り込みのデバイス、その他様々な秘密奥義のサポート)。Linuxは歴史的に単発のドライバになっています。一定の構造化はされていますが、私が知る限り、移植性は高くありません。1つのソースコードに統合することもできますが、条件付きコンパイルの嵐で酷いコードになる可能性が高いです。

WindowsのAPIは文字列長付きの16ビットのユニコードを採用しています。Linuxは8ビットのUTFを採用しています。どちらにも批判はあると思いますが、長年C言語で開発してきた私としては、文字列長が組み込まれている方が好きです。NULL終端文字列は良くないと思っています。エラーになりやすいので。でもどちらでも機能します。

WindowsはMS-DOSから受け継いだ変な遺産があります。例えば、MAX_PATH_LENにマニフェスト定数(260)を追加した人がいます。でもWindowsのパスの長さは最長で32,767文字です。文字列の長さを符号なしの16ビットにしたためです。1文字は2バイトです。

Windowsのファイル・ハンドルとLinuxのファイル・ディスクリプタは、使用方法から見れば基本的に同じものです。ファイルはいずれも、バイトやブロックの単位でアクセスされます。

どちらもシステムコールは高速です。どちらも高度なスケジューラを備えています(Linuxは長年に渡り何度もスケジューラを作り直していますが)。信頼性に関して言えば、どちらも非常に堅牢です。Linuxに比べてWindowsは再起動が必要になることが多いとの批判がよくありますが、Windowsのカーネルは運用中の更新に対応しています。システムの再起動が必要になるのは、DLLの更新ができないためのようですが、これはいつも不満に思っています。カーネルモージュールは再起動しなくても更新できるのに、お粗末なユーザーモードのコードが再起動の原因になっているのです。まぁそれはさておき。

WindowsはLinuxのバイナリが動きます(Windowsのバイナリも一部はLinuxで動きますが)。確かに、これは新機能であり、まだベータ版ですが。

結局OSはツールに過ぎません。動けばよいのです。うまく動くのか動かないか。たいていは、非常に高度で大胆なトレードオフの結果でしょう。目の前の問題を解決するのに最適なものを選べばよいです。


John Gwinnerさんのコメント

とても公平な回答をありがとうございました。スレッドやプロセスについて言及されていますね。私は98年にWindowsで高速データ収集システムを開発しました。Windowsはプロセス内のスレッドをうまくサポートしており、少なくとも当時は、Linuxよりもずっと優れていたと思います。大半のLinux開発者は、別のプロセスを呼び出すことでマルチスレッドをする傾向がありますね(訳注:ここでは並列処理という意味であり、スレッド機能を使うという意味ではないようです)。これは過去の遺物であり、もっとうまい方法があるような気がします。知らんけど。

昔はコンテキストスイッチがとても気になっていました。これはCPUから見てコストの高い処理です。高負荷のマシンがあっても、CPU使用率が必ずしも100%ではないことがあります。プログラマーたちは「CPUを使い切っていないので、自分のコードには問題ない」と言ってこの問題を無視するでしょう。

Tony Masonさん(元の投稿者)のコメント

OSの歴史的な理由によります。UNIXやLinuxは元々プロセスのみをサポートており、進化してスレッドをサポートしました。そのため「マルチスレッド」をするには新しいプロセスを作るのがもっとも簡単であり、たいていの場合は、フォークしていました。カトラーのチームが作ったOSが最初からスレッドを考慮した設計になっており、APIもスレッドの使用を推奨する形になっていました。フォークのようなもの(Windowsカーネルの用語でクローン)もありますが、Win32 APIからは使えません。

Linuxでpthread_createのドキュメントをよく読むと、オリジナルの(ユーザーモード(UM)の)スレッド対応の名残が見られます。当時のUMスレッドはシステムコールを1つしか呼べなかったため、カーネルスレッド(Windows NTやSolaris等)と比べて不便でした。Linuxには割と前からカーネルスレッドがありましたが、プログラマーの習慣を変えるのは意外に難しく、今でも使えるフォークに慣れてしまうとそれに固執してしまうのです。

John Gwinnerさんのコメント

まさしく! 全く私の考えている通りです。オープンソースの初期はフォークを多用していましたので、LinuxアプリをWindowsに移植するときは本当にイライラしました。

Unix系OS(Solaris等)やLinuxはハイエンドマシンで動作しており、一般的なパソコンに比べて非常に高性能だったというところが両者の大きな違いだったと思います。別のプロセスにコンテキストスイッチするのに数千クロックの時間がかかる? まぁいいや、と。

80386だったら? そんなパワーはないですから。

Tony Masonさん(元の投稿者)のコメント

旧世代の人間ですみませんが、1980年代に1MBのメモリを搭載した68K系列のSunワークステーションを使っていました。(Solarisのカーネルがスレッドに対応した頃の)1993年当時のワークステーションのほとんどは、Windows NTの最小構成とほぼ同じでした(NT 3.1では最低16MB、NT 3.5では12MBに下がりましたが、非公式ながらどちらも8MBあれば起動して使用可能でした)。Linuxもローエンドのマシンが出自です。なので計算能力の問題ではないでしょう。

私が90年代後半にデバイスドライバの開発を教えていた時、マルチプロセッサの問題について解説しましたが、当時はマルチコアのマシンを誰も持っていない時代であり、笑われていました。Windows NTは最初からマルチコアを考慮した設計になっていました。その10年後にはマルチコアが登場し、逆にシングルコアの時だけに再現する問題について教えないといけなくなりました…。現在はデスクトップパソコンに64コアのCPUを搭載できます。ハードの進化に合わせてOSも進化しないといけません。

従って、システムの根本的な設計に違いがあったと言えます。カトラーとそのチームはこの問題を正しく認識していました。今のLinuxにはカーネルスレッドの機能があり、数多くのハイパフォーマンスコンピューティングで利用されています。フォークも動作しますが、確実にオーバーヘッドが大きいです。

WindowsとLinuxの間には、違いよりも共通点の方がたくさんあります。WindowsとLinuxは、OSが進化してきた過程が異なっているにも関わらず。

John Gwinnerさんのコメント

大筋で同意です。私がメモリマップドで言いたかったのは、メモリマップドが可能か否かという話ではなくて、ローダーが.exeの一部分だけを選んで読み取り、全体を読むことはほとんどなかったということです。これはNTの前からあるもので、Windows 1.Xで既に実装されています。

はい、私もその頃から業界にいる旧世代の人間です。ワークステーションに触れる機会がほとんどありませんでしたが、Oracleと仕事をする頃にはPCがかなり高性能になっていました。

Jean-Yves Landryさんのコメント

WindowsがGUIの大半をカーネルに「密結合」している点に言及されていません。GUIのパフォーマンスを向上させるために採用されました。Windows Vista以降はそれなりに安定していましたが、昔はこれがBSODの原因になっていました。またウイルスの攻撃対象にもなっています。

一方LinuxではGUIは完全にオプションです。カーネルに統合された「カードグラフィックドライバ」がオプションとして存在しています。しかもX-windowシステム(表向きのGUI)はほとんどユーザースペースのプログラムになっています。

Tony Masonさん(元の投稿者)のコメント

カーネル内でGUIをサポートしている部分はwin32k.sysというモジュールに完全に隔離されています。win32k.sysは独自のシステムコールを持ち、システムの他の部分とは独立した形でGDIドライバを管理しています。GDIをカーネル(NT 4.0)に移すという決定は、パフォーマンス向上の目的で実施されたことは確かですが、他にも方法があったかどうかについては私にはわかりませんし、マイクロソフトはユーザーモードから直接グラフィックデバイスを制御できるようにするための様々な仕組みを導入しています。

従って、私はこれを、WindowsがLinuxよりも優れた設計や実装であること示す例として挙げないことにしました。私にはこれが良いことかどうかはっきりしないからです。注目すべき設計であることに間違いありませんが、元の質問は、何が優れているのかという質問でしたので。

Jean-Yves Landryさんのコメント

win32k.sysをカーネル空間に配置するのは良くない設計です。これはサーバなどの目的で使用する際にWindows NTがUnixやLinuxのような信頼性を持つことができない重大な欠陥だと思います。

NT 3.1がリリースされたとき、Windows NTはOS/2のように、win32k.sysサブシステムの大部分をリング2に配置するのではないかと私は思っていました。実際のところ、カトラーがVMSで採用していたRMS(レコードマネージメントシステム)をスーパーバイザモードで実行し、ユーザーモードのプログラムから保護する昔のやり方の方が一貫性がありました。

でもVAXやAlphaと違って、インテルx86でのリングの切り替えはかなりのオーバーヘッドが発生するということをカンファレンスで聞きました。

またVAXはリアルタイム性のあるシステムではないと教わりました。プロセスの生成、ファイルの生成、小さなプログラムのロードなどは遅かったのです。ハイエンドのハードで動くタイムシェアリングシステムなので許容範囲内でしたが…。遅いディスクドライブと4MBしかないメモリを搭載したパソコンでは耐えられませんでした。

Johannes Schneiderさんのコメント

その通り。そしてマイクロソフトはここ数年間にコアOSを深いところまでリファクタリングし、その依存関係を取り除き、全てのサーバー管理機能をPowershellに移行させるということに凄い努力していました(現在のエンタープライズ向け管理者ツールは実際にはPowershellのラッパーに過ぎないと聞いたら驚くのでは!)。

その結果としてNano Server 2016は最小限のコアと拡張コンポーネントだけを搭載したヘッドレスのシステムで、GUIとの依存関係はもはや全くありません(2012年からあるCore Serverとは違うものです。これもヘッドレスでしたが、中身はまだ多少の依存関係が残っていました)。まぁ正直言って、こんな日が来るとは思いもよりませんでしたね…:)。

 · 
フォロー

一年前ほどからwindowsをやめてUbuntuを使っているものです。デスクトップとノート両方Ubuntuにしているので答えさせていただきます。

他のディストリビューションは知りませんがUbuntuはグラフィカルな使い方ができないわけではありません。Ubuntuソフトウェアセンターというものがあるので。全てsudo apt install 〇〇 とかやる必要はありません。

まあ、でもコマンドで一発なのは覚えちゃえば便利です 。(このせいでWindowsに戻れなくなりました)

ファイアウォールなども自分で入れる必要がありますがネットでいくらでも情報があるので大丈夫じゃないでしょうか。

プログラミングをやる目的ならお勧めしたいと思います。パッケージのインストールとかがコマンドで一発なので。

最近だとこんな便利なものも開発されてるので良いCUIライフが送れると思います。

ogham/exa

では良いLinuxライフを!

あなたの返答は公開されません
読む価値のある回答でしたか?
この情報はQuoraがページ上の回答を並べ替えるのに役立ちます。
そう思わない
そう思う
 · 
フォロー

Ubuntu は、Debian をベースとして、普通の人が使いやすくしたもので、誰でも無償で使用することができます。また、Ubuntu Advantage という有償サービスも提供しています。Debian 系には、他にも優秀なディストリビューションがありますが、Ubuntu は、Linux 全体の 50%近いシェアを持っています。他のディストリビューションよりもパケージに含まれているソフトウェアが多くまた更新も早く、デフォルトでも簡単に使えるというのが大きな利点です。

もう少し詳しく説明すると、Linux には、ざっくり分類すると Debian 系、RedHat 系、Slackware 系という3つがディストリビューションがあります。

RedHat 系の代表は、RedHat社が販売している Red Hat Enterprise Linux(RHEL)です。Open Source の Linux に RedHat社が開発したセキュリティや運用管理のツールを追加して販売しているものです。現在、RedHat社は IBM の子会社となっており、名前のとおり大企業向けでかなり高価です。最近、個人開発者はRed Hat Enterprise Linuxを無料で最大16システムまで利用可能になったようですが、個人では使いづらいと思います。

Slackware 系は、ソースベースのディストリビューションで、自分でソースをコンパイルしてインストールする必要があります。そのため、マニア向けで、ユーザは少ないですが、熱烈な支持者もいます。

最後になりましたが、Debian は、完全にボランティアの技術者の手によって開発・運営が行われており、特定企業の後援がないのが大きな特徴です。そのため、管理パッケージがしっかりしており、個人で使うのであれば、RedHat系よりも Debian 系の方がずっと便利です。

 · 
フォロー

はい。現在のサーバ用途の主要 OS には下記4つの系譜があると考えます。そのうちの一つが UNIX/Linux ですが、結論として Linux は、今後も数十年レベルにおいてサーバ用途の主たる OS として位置づけられる時代が続くものと考えています。なぜなら後継を開発する意義が薄まっているからです。


(1) メインフレーム系 OS
1964年に開発された IBM の OS/360 を源流とする OS です。OS/360→MVS→OS/390→z/OSと名前を変え、機能も拡充されてきていますが、基本的なアーキテクチャは同一です。
1960年代後半から80年代までは、これが主流であったと言えます。価格が高い・設計が古くWeb技術との親和性が低いなどの理由から、今後普及が進むことは考えにくいですが、信頼性の高さや豊富な実績から、今でも社会的に重要な部分では継続して利用されている OS です。また、富士通の MSP や日立の VOS なども、このアーキテクチャを受け継いだ IBM 互換のメインフレーム OS と呼ばれています。
これとは別に、1962年に GE によって開発された GCOS (これは今も続く NEC の ACOS の源流になっています) と、現在は Unisys がメンテナンスしている2つ (スペリー/Univac 系の OS2200 と、バローズ系の MCP があります) の系譜がありますが、こちらは今となってはシェアの面から主流とは言いがたいでしょう。

(2) ミニコン系 OS
ミニコンとは、メインフレームと比較して小型で安価なコンピュータのことを指します (が、もちろん今日的な水準では十分大型です)。1970年代から80年代にかけて普及しました。マシンとしては IBM の AS/400 や、DEC (Digital Equipment Corporation) 社の PDP シリーズおよび VAX シリーズなどが有名です。OS としては、上述の AS/400 向けに開発された OS/400 と、VAX 向けの VMS の2つが挙げられます。
ミニコンはメインフレームと同様、今でも無視できないほど利用されているサーバではありますが、今後において利用が広がるものではないでしょう。OS/400 は現在 IBM i と改称されて使い続けられてはいますが、残念ながら VMS の方は、母体となる DEC が HP に買収されてしまったこともあり、今となっては現役とは言えません。VMS の主たる開発者であったデヴィッド・カトラーは Microsoft に移籍して、後述する Windows NT を開発します。

(3) UNIX 系 OS
ご質問にある Linux は、このカテゴリに属するかと思います。
Linux の源流である UNIX は、AT&Tの子会社であったベル研究所にて開発されました。ベル研究所に勤務していたケン・トンプソンとデニス・リッチーは、GE のメインフレームを複数ユーザが同時に利用できるように改良する Multics という OS を開発していましたが、複雑性の高さなどによりプロジェクトは難航しベル研究所は撤退してしまいます。ケン・トンプソンらは、ここで設計された新しいファイルシステムなどを最後まで実装したいという想いによって、DEC PDP-7 上で動く、マルチユーザ部分を割り切った OS を作りあげます。それが Unics つまり Unix です。
これが進化して後に商用 OS として普及し、IBM 社から AIX, HP 社から hp-ux, Sun Microsystems 社から SunOS→Solaris, DEC 社から Ultrix→OSF/1→Digital UNIX→Tru64 UNIX, SGI 社から IRIX いう名前で販売されていました。インターネットや携帯電話の普及期であった1990年代後半から2000年代全般にかけてはこれらがメインのサーバ用途 OS だったと言って良いでしょう。もちろん今でも引き続き使われ続けていますが、段々と Linux へのリプレースが進んでいます。

さて Linux についてですが、当時の UNIX は (ごく初期を除いて) AT&T 社のライセンスが必要で、高価なものでした。1987年に、オランダの教育者であったアンドリュー・タネンバウム教授が、OS の教科書のために MINIX という OS を発表します。これは中身は新規に実装されたものでしたが、UNIX に似せて作られました。入手が容易であったことから、学習者だけではなく実用を目的として UNIX を必要としていた人にも広まります。
とはいえ 16ビット向けに作られたものであり、当時広まりつつあった 32ビットの CPU への移植が難しいなど、いくつかの制約がありました。そこでフィンランドの学生であったリーナス・トーバルズが、32ビットの CPU で動く UNIX に似せた OS の心臓部分である Linux カーネルを、オープンかつフリーなものとして 1992年に発表したのが最初です。

その後、2002年に Red Hat Linux Advanced Server (後の Red Hat Enterprise Linux) がリリースされ、サーバ用途として商用で利用するケースにおいても安心できる体制が整いはじめました。
上述のような商用 UNIX は依然として高価であり、各社が開発する CPU などの H/W とのセット販売的な要素が色濃かったのですが、Linux は無償であり、パソコンで採用されている Intel 社の CPU および PC/AT というアーキテクチャ上で動作するという利点がありました。この利点がパソコンの普及に伴い、信頼性の高まりと価格の安さが両立するようになっていったという要因と重なって、IA サーバとともに 2000年代後半~2010年代あたりから爆発的に普及しました。

(4) Windows NT 系 OS
VMS の開発者であった デビット・カトラーは、その後 DEC において進めていたプロジェクトなどが中止となりくすぶってきたところを、当時堅牢な OS を探していたマイクロソフト社に引き抜かれます。
このあたりの経緯は書籍『闘うプログラマー』に詳述されているので割愛しますが、Windows NT サーバは Windows2000 を境にデスクトップ用途であった MS-DOS~Windows95系との統合が進み、サーバ用途でありながらも親しみやすい操作感を備えた OS として普及が進んでいきます。


ご質問の Linux ですが、上述4つのサーバ用途 OS のメインの一角として当面は活躍するでしょう。UNIX の母体であったベル研究所は、UNIX の後継として Plan9 という OS の開発を進めていましたが、UNIX/Linux を置き換えるほどの劇的な差別化要素を産むことができませんでした(その代わりといってはなんですが、Plan 9 の関係者からは UTF-8 や Go言語という成果が産みだされています)。
このことから、OS の役割である CPU やメモリ、ファイルの管理といった機能は十分に成熟し、これを新たに発明する意義は薄れてしまった、というのが現実なのではないでしょうか。

もし UNIX/Linux が置き換わる時が来るとしたら・・・次は、従前のコンピュータとは全くアーキテクチャの異なる『量子コンピュータ』が普及期に差し掛かる時なのではないかと個人的には想像します。現時点で最も身近な量子コンピュータである IBM の Q システムは OS に関する明確な情報を示しておらず、OpenQSAM や Qiskit といった、より利用者に近いレイヤを公開しているように見えます。
ひょっとしたら将来は、OS というものを意識しない世界が来るのかもしれませんね。

0 コメント:

コメントを投稿