見出し画像

iphoneのOS(iOS)はBSD系

というのは、皆さんご存知でしょうか?
「OS」「iOS」「BSD系」
謎の単語がちらほら。特にBSD系って?
大丈夫です。キーワードの一つ一つについて、ゼロからお話しましょう。
キーワードに付随する様々な話題に触れ、情報処理の初学者が受ける講義と同等の知識をお話しします。長文になってしましますが、極力丁寧に説明していきたいと思います。

・OSについて


OSとは「ハードウェア(機械)の制御」を統率するソフトウェア(プログラム)の事です。

例えばパソコンのハードウェアとして、
・CPU(制御装置・演算装置)
・メモリ(記憶装置(主記憶装置))
・キーボード(入力装置)
・ディスプレイ(出力装置)
・ハードディスク(記憶装置(補助記憶装置))
があり、制御装置、演算装置、記憶装置、入力装置、出力装置を
5大装置と総称します。

5大装置の具体例ですが、
上記の他にも色々あり、USBメモリは(記憶装置)に分類されます。

「メモリとハードディスクの違いって?」という話を聞きますので、少し解説します。
メモリは小容量で高速、高価、通電してないと忘れちゃう子。
ハードディスクは大容量で低速、安価、通電してなくても覚えてる。
という違いがあります。
用途としてはこんな感じ。
ハードディスク→長期間データーを保存するストレージ。
メモリ    →短期記憶。小さいデータを高速に読み書きする為の場所。

ハードディスクに保存されたプログラム(命令)を、メモリに読み込み、
メモリ内の命令をCPUが読む。CPUは取り込んだ命令に従って、演算・制御を行う。といった流れとなります。

5大装置のようなハード(機械)を動かす為には、ソフト(プログラム)が必要です。

以下に列挙したものは、全てソフト(プログラム)ですが、用途によって名称が変わります。

・ファームウェア:
 ハードにはんだ付けされたICチップに焼きこまれている。機械を動かすのに必要な処理をするのが、ファームウェア。「キーボードで押されたキーを決められたデーター形式で、USBを使い送信する部分」とか。

・ドライバ
 ファームウェアに指示を出したり、ファームからデーターを受け取ったりして、ファームウェアを介してハードを制御のがドライバ。「ファームから送れられてきたキーボードのデーターを読み解き、何のキーが押されたか検知する部分」とか。

・OS(オペレーティングシステム。またの名をカーネル)
 ハード(機械)を制御する沢山のドライバ(5大装置にそれぞれ専用のドライバがある)をどの順番で、どのように、いつ使うかを決める総指揮者。ユーザー → アプリからの要求を受け付けて、ドライバにお願いを出したり、ドライバからの通知をアプリに教えたりする。

はい、OSが出てきました。ここまでで、タイトル(iphoneのOS(iOS)はBSD系)の前半「iphoneのOS」が何となく分かって頂けたでしょうか。iphoneにもOSが入ってるんですね。

次のキーワード、「iOS」ですが、「iphone OS」の略だそうです。単純。
iphoneのハードを制御するファーム
↑を制御するドライバ
↑を制御するOS
って、事ですね。

次に後半のキーワード、「BSD系」を説明します。
「BSD系」を説明してしまえば、この記事はお終いなんですが…
今までは序章、ここからが本章となります(え)。

・Multicsマルチクス

時は1964年、MIT(マサチューセッツ工科大学)、AT&Tベル研究所、GE(ゼネラルエレクトリック)社が共同でOSの開発をしていました。
その名はMultics(マルチクス)正式名称 "MULTiplexed Information and Computing Service"。しかし、このOSは巨大で、色々やりたい事を詰め込み過ぎたそうです。

「もう無理。しんどい。」
1969年にベル研が離脱します。

ベル研からはケン・トンプソンとデニス・リッチーがこのプロジェクトに参加していました。

このオジサン、特にケンさん(79)がとんでもない人。あ、当時は26歳だから兄ちゃんか。

少し時間を戻して、ケンがMulticsをGE社のGE635で開発していた頃。
ケンはMultics開発の仕事中にゲーム開発をしていました。←
ゲーム名は「スペース・トラベル」
自分で開発して自分で遊ぶ用。めっちゃ楽しい。

しかしベル研がMulticsの開発から手を引きます。
スペース・トラベルは、Multics上で動作するゲーム。Multicsの
お仕事(という名のゲーム開発)から手を引く。。。だと。。。。?

でも大丈夫。ヤバそうって、薄々分かってました。

そんな事もあろうとかと、ケンはスペース・トラベルを
FORTRANというプログラム言語で移植済み(これも仕事中にやった)。
GE635はMulticsのターゲットマシンでしたが、元々はGE社の
OS「GEOS」がインストールされていて、そこでFORTRANのプログラムは
動作可能です。ベル研にもGE635あるし!やった!

ところが、そうは問屋が卸しません。
GE635はお仕事用のでっけぇコンピューター。
彼らが遊ぶ仕事中に、他の人が仕事で使います。ク〇が。
兎に角まぁ、1969年のでっけぇコンピューターですから、処理が遅い。
他の誰かが使用中の時は使えないじゃん。ガチギレですよ。
(自分がゲームで使ってる間、他の人が仕事できないけどスルー)

更にコスト的に1回プレイすると$50~$70のコストがかかり、
そのコストは社内システムからガッツリ監視されていやがる。小癪。
(ちなみにアカウントという単語は「課金」という意味だけど、当時の古いシステムは上記の通りコストがかかるため、ログインして利用する時に「課金」していた事に由来します)

「あとさー、GE635。ちょっと重いんだよなー。」

ケンは言いました。
「ねぇ会社~、新しいOS(という名のゲーム)開発用にさ、
 PDP-10(43,200,000円。昭和44年当時)買ってよー」

「は?
よんせん、さんびゃく万。。。何て?」

当時、Multicsの失敗でOS開発にウンザリだったベル研。
当然、乗り気ではありません。

でもケンはあきらめない。絶対に仕事(ゲーム)する!
「じゃあさ、そこ(隣の部署)でホコリかぶってるPDP-7、あれ使って仕事(ゲーム)していい?」

「あー、あれならいいよ。」

ところが、このPDP-7上でプログラム開発は出来ませんでした。PDP-7で動くアセンブラがなかったのです。

・プログラム言語について


アセンブラって?
…その前に少し細かい話をします。
CPUは電気信号のONとOFFしか分かりません。
このON/OFFを人間にも分かり易いように、ONを「1」、OFFを「0」とする2進数で表現します。

1 + 2  を計算して欲しい場合、
2進数で1は、0001 (4桁で表現した場合)
2進数で2は、0010 (          〃                  )
これを足すという命令を例えば「0011」という2進数に割り当てます。引くは「0100」とか。その辺は方言で、CPUの種類によって違います。

さて、1 + 2 をCPUの分かる命令に置き換えると

0001 0011 0010
(1        +       2 )

となり、このゼロイチのみの命令を「機械語」「機械命令」「マシン語」などと呼びます。ちなみに昔の紙テープには穴が開いてないのを「0」空いてるのを「1」として表現していて、だからあんなに穴だらけなんですよね。

このゼロイチでプログラムを組むのはとてもツライ。
そこで人は、「人間の書いたプログラミング言語を、機械語に翻訳するプログラム」を開発しました。

「は?プログラム言語を翻訳するプログラム?
 じゃあ、その翻訳プログラムは誰が翻訳して作ったんだよ?」

なんだか卵が先かにニワトリが先かなニュアンスが感じられますが、
一番初めは機械語でその翻訳プログラムを書くしかないと思います。
うわ、大変。一番初めの人、ありがとう。

そして、プログラム言語から機械語に翻訳する「翻訳プログラム」
これを「アセンブラ」といいます。

ちなみに、新しいコンピューター(CPU)が誕生する度に、そのCPUの機械語に対応した「アセンブラ」を、ゼロから(機械語を直接書いて)開発せねばならないかと言うとそうでもなく、既にアセンブラがある他のコンピューターを使います。こんな感じ。
ステップ1:
 既存のアセンブラで「ターゲットCPUの機械語」を出力するアセンブラを作る。これをアセンブラ①とする。アセンブラ①は既存のCPUで動き、ターゲットCPU上で動く機械語(=プログラム)を出力できる。

ステップ2:
 アセンブラ①を使って、ターゲットCPUで動くアセンブラ②を作る

ステップ3:
 アセンブラ②は開発マシンでは動けず(ターゲットCPUの機械語で書かれているから)ターゲットマシンにコピーして使う。

結果:
 ターゲットマシンでアセンブラを使って開発できるようになる。

少し分かりづらいので絵にしてみました。図中の「ソース」というのは、人間がアセンブラ言語で書いたプログラムです。これを「ソース」又は「ソースコード」と呼びます。また、「アプリ」と書いたのは実際に動作するプログラム本体です。その正体はプログラム言語から翻訳された機械語の塊(*)です。あと、今のパソコンと違い、デカい本棚数個分の大きさだった当時のコンピューターは「マシーン」といった方がしっくりくるので、そのように表記しました。
(*: 機械語の塊:正確に言うと、みっちみちに機械語だけというわけではなく、データやその他実行に必要な情報も含まれています。)

「ステップ1」の既存のアセンブラも、既にあったアセンブラで開発され、
その既にあったアセンブラも、更に既にあったアセンブラで開発され…
と、辿っていくと一番初めに機械語だけでアセンブラをゼロ実装した人がいるはずです。一番初めの人、ありがとう。

さて、そのアセンブラに与える(「食わせる」なんて業界では言います。食わせてるのかー)アセンブラ言語ですが、機械語よりは人間が理解できる形になっています。
1 + 2 なら、
ADD 1, 2
みないな。ADDはAdditional(加算)の略。
このアセンブラ言語が書かれたファイルを読み込んで、
ADD 1, 2 を
0001 0011 0010
という機械語に翻訳するのがアセンブラというプログラムのお仕事。
そして、アセンブラ言語をアセンブラを使って機械語に翻訳する事を「アセンブル」といいます。早口言葉みたい。
口語だと「アセンブラ(言語)を(アセンブラで)アセンブルする」って言うかな。

随分脱線しましたが、話を戻しましょう。

ケン「そして今、我々にはPDP-7向けのアセンブラが無い。。。。
かと言ってアセンブラ作るのだりぃ。。」

そこでケンはGE635でPDP-7の機械語を出力するアセンブラを作り、ゲーム開発を進めます。↑で説明した「ステップ1のアセンブラ①」だけ作ってみた。
このアセンブラにゲームのソースを食わせて、「GE635で開発→PDP-7で動くゲーム」は作れますからね。

さて、ゲームは出来ました。しかし、GE635からPDP-7へ、どうやってゲームを持っていきましょう。それは次のような方法でした。

ゲームを開発→アセンブルして出来たゲームを「紙テープ」に出力→紙テープをPDP-7に読み込ませてゲームを実行

紙テープ……今みたいに通信でアプリをダウンロードできないし、USBメモリも無いからね。。。フロッピーディスクすらない。

「紙テープに出してから読み込ませるのだりぃ。遅ぇしよ。あー、もう!」

我慢の限界を超えたケンは、PDP-7向けのアセンブラを開発します。
無きゃ作る。仕事だからね。

よっしゃ、PDP-7向けのアセンブラできた!スペース・トラベルもアセンブル→動いた!第3部完!

…当然そんなに甘くないです。PDP-7、ファイルの読み書きが遅い遅い。
現代でもそうですが、ファイルの読み書きはとても遅いです。まして1969年の機械。無策でやってたら遅くてかなわん。
ケンは閃きます。
「デニス!デニス・リッチーがおるやん!!」

余談だらけで、お忘れかと思いますが、デニス・リッチー、ケンと一緒にMultics開発に携わっていたベル研の仲間です。

彼はMulticsで新しいファイルシステムの開発をしていました。
検討・設計までして打ち切りになったので、実装はまだでした。

「あー、デニスー?オレオレ、ケン。仕事(ゲーム)でさー、ファイルの処理が遅くて困ってるんよ。自分、Multicsでファイルシステムの開発しとったやん?いいネタあったら頂戴よ」

デニスにとっても、せっかく設計までしたんだし、完成させ、日の目を見せてやりたい。…そう思ったに違いありません。

「ええで。…凄いの見せたる!」

そしてついに、仕事(ゲーム)をする為の最新の基盤と、
ぼくが考えたさいきょうの仕事(ゲーム)が揃ったのです!
これで仕事(ゲーム)に集中できます。

この様に、次々とPDP-7向けの環境が整備されていき、それはもう
OSそのものでした。そのOSに名前はまだないけど。

それにしても、ゲームを作ったり、ツールを作ったり、その作業はすべてアセンブラ言語で書かねばなりません。
アセンブラ言語とは、おおよそ以下のような雰囲気の言語です。
ADD 1, 2
SUB  3, @4
LD    #3000, $1

PDP-7用のアセンブラ言語もこんな風に無愛想だったに違いありません。はっきり言ってコレが何千、何万行にもなると理解不能になってきます。もう少し高級な機能の言語が欲しいところ。
高級なプログラミング言語とは以下のような感じです。

if (a > 10) {
   a = a + 1;
}

アセンブラ言語より人間にフレンドリー。

「流石にアプリとかツールくらいは高級言語で書きたいよな…」

そうしてケンは、新しい言語をパクッ…作ります。
参考にしたのは、やっぱりMultics。そこで動いていたBCLPという言語をパクッ…元に、「B言語」を開発します。

・UNIXとC言語

この時、1969年ー1970年頃、風向きが変わります。
仕事(ゲーム)を快適に動作させるOSは、
仕事(ガチ)も快適に処理できる為、ベル研中に広まります。
ゲームもビジネスアプリも、CPUからみたら同じプログラム。違いはありませんからね。
こうしてゲームの副産物、名もなきOSに名前が付きました。
「UNIX(ユニックス)」です。
命名者はベル研のカーニハン博士。Multicsは色々なプログラムを同時に複数「マルチ」に起動できました。対して、UNIXは「ユニ」、単一のプログラムしか動かせませんでした。非力なPDP-7向けだったからそれで十分だったからねぇ。

翌年1971年。ついに!PDP-11を買って貰います!!!
四千何百万円のPDP-10の後継機ですから、さぞお高かったでしょうに。。。

1972年、ケンの開発した「B言語」を元に、デニス・リッチーは「C言語」を開発します。現代のプログラマでも多くの人が手始めに学習する言語の「C言語」爆誕です。

ところで初期のB言語はコンパイラではなくインタプリタでした。
コンパイラ?インタプリタ?
…順に説明します。

先に説明したアセンブラもそうですが、プログラミング言語というのは、最終的に、機械語に翻訳されます。

C言語の場合は、コンパイラ(というプログラム)で翻訳します。プログラム全体を一気に翻訳して、書かれている内容すべてが最終的(*)に機械語になります。動作する段階では、CPUは書かれている機械命令に従っていくのみです。
(* コンパイルの前半処理として、中間言語もしくは、アセンブラが生成され、後半処理で中間言語を機械語にしたり、アセンブラをアセンブルして機械語を得ているケースが多いようです)

これに対して、B言語はインタプリタでした。
インタプリタは、人の書いたプログラムに従って動作するプログラムです。
C言語のプログラムがコンパイルの段階で既に終えている、「ファイルからプログラム言語を読み、解析、機械語に翻訳する」という作業を逐一行います。

コンパイラの動きとインタプリタの動き


この為、動作速度でB言語は劣ります。

ちなみにインタプリタ型の言語にもメリットはあり、一度書いてしまえば、インタプリタが動作する環境であれば、再コンパイルの必要なく動作します。(インタプリタ自身は動作するCPUに合わせて移植&再コンパイルが必要です)

また、インタプリタはコンパイルが不要というのもメリットです。
インタプリタは、逐一コンパイル相当の事を行うため、C言語のように「あらかじめ全てのプログラムをコンパイルしておく」作業が必要ないのです。
コンピューターの性能の上がった現代において、このコンパイルという作業に要する時間は僅かです。しかし、1970年代、コンパイルには大変な時間を要しました。下手したら数時間とか。
コンパイル!リターンキーをッターン!ってしてから待つこと数時間。。。
コンパイルエラー!(プログラムの記述ミスなどでエラーになります)やってられません。
書いて、動かして、駄目でも修正して、また試して、というサイクルを素早く回したい。そんな時、コンパイル不要のインタプリタは重宝されました。

その為、開発初期では重宝されたB言語ですが、プログラムの完成度が上がってトライ&エラーが減ってくると、今度はその遅さが気になります。また、ゲットしたPDP-11とも相性が悪い仕様でした。

そこで、B言語は、インタプリタを止めて、直接機械語を出力できるように修正されました。俺はインタプリタを辞めてコンパイラになるぞJOJO~!

そしてB言語は、更に改良が重ねられ、1972年~1973年初頭に「C言語」としてリニューアル。C言語は、B言語の直系の子孫なのです。

早速、1973年の夏には、アセンブラで書かれていた「UNIX」を全てC言語で書き直します。え?B言語で書かれていなかったのかって?
B言語は、そもそもOS開発用ではなく、ツールやアプリの開発用でした。
初期のB言語遅かったし。OSには使えねぇよ。

しかし、遂にUNIXはCで書き直され、C言語はOS開発に使用される事で、より進化していきました。
少し時間を進めて、1978年「プログラミング言語C」が出版されました。
俗に言う「K&R本」です。この本のスタイルで書かれたC言語は「K&Rスタイル」と呼ばれていました。K&Rの意味ですが、Rは、デニス・リッチーのR、KはUNIXの名付け親、カーニハン博士で、二人の共著でK&Rなのですが、なぜデニスとケンではなかったんだろう…

このK&R本は、1989年12月、ANSI(米国国家規格協会)版の「プログラミング言語C]が発売されるまでプログラマの聖典でした(日本に入ってきたのは1993年10月)。

・BSD


言語の話はこの辺にして、UNIXとケンに戻りましょう。
1970年代、ケンとデニスはUNIXの開発を続けましたが、
1975年にケンは、ベル研を休職しています。で、
母校のカリフォルニア大学バークレー校に登校し、PDP-11にUNIXをインストールする作業を手伝ったりしていました。何やってんだケン。
その後のケンはコンピューターオセロの世界チャンピオンになったり(ゲーム好き)、文字コードのUTF-8を開発したり、最近ではGoという言語をGoogleで作ったりしています。

そして、彼がカリフォルニア大学バークレー校に伝道したUNIXは、学生(ビル・ジョイ)らにメンテナンス&バージョンアップされ、
Berkeley Software Distribution(バークレー・ソフトウェア・ディストリビュージョン、略してBSD)として進化。
ようやく出てきたBSD。
実はベル研、1970年代、UNIXのソースコードを大学に配布していました。
各大学では色々な亜種が生まれたが、とりわけ注目&利用されたのがカリフォルニア大学バークレー校のBSDでした。

unixの系譜

図を見てみましょう。オレンジ色のReserch UNIXが、ケンとデニス、本家本元のUNIXです。上側には黄色くBSDの系譜が見えます。下側のブルーは、SYSTEM III &V系といって、サンマイクロシステムズ(今はオラクルに買収された)社のSolarisやヒューレットパッカード社のHP-UXなどがあり、主に商用で有料です。

商用、ライセンス問題がついて回ったのもUNIX史において重要な話題です。
元々は大学にフリーで配布されていたんですが…UNIXが広まるにつれ、徐々に使用制限されていきます。

・Linux

1977年、オーストラリアのニューサウスウェールズ大学 に在籍していたJohn LionsがUNIX V6(バージョン6)のソースコード解説本を出版します。それは一行一行に渡って何をしているのかを説明するもので、世界中の大学がLionsの本を使ってUNIX V6の講義を始めます。

ベル研の親会社であるAT&Tはこの出来事キレました。数千人もの学生が自社製品の全てを大学で学んでいるのですから。そして改訂版のV7 (1979年) には、製品に関する本を書くことや、学生向けの教材として使うことを明示的に禁止しました。

せっかく良い学習環境だったのに…学生には良い教材を与えたい…。
1987年。オランダ・アムステルダム自由大学のアンドリュー・S・タネンバウム教授が、学生のために、UNIXを真似た互換OSを書きました。名前はMINIX(ミニックス)UNIXライクなとても小さなOSでした。

MINIXは、教育目的で開発されましが、大ウケ。これを実用レベルで使えるように機能追加しようという流れが生まれました。しかしタネンバウム教授はこれに反対。あくまで教育目的だとして許可しません。じゃあ自分で作るしかない。1991年、フィンランドのヘルシンキ大学の学生、リーナス・トーバルズは、MINIXを研究、新しいOS「Linux」を作ります。

その頃、似たような目標をもっていたリチャード・ストールマン率いるGNU(GUN is Not Unix)プロジェクトがありました。GNUの目標は「完全なUnix互換ソフトウェアシステム」を作ること。しかもオープンソースで。しかし、OSに付随する様々なツール群は整備されていましたが、OSの基幹部分は未完成でした。

リーナスは、GNUの成果も自分のOSに組み込みました。オープン・ソースで自由に使う事が出来ました。ラッキー。

図を眺めると、MINIXとGNUから影響を受け、Linuxの線が図の中央に描かれています。現在、Linuxは様々な分野で利用されていますが、一番身近なのはGoogleのAndroidでしょう。スマホのアレです。Androidはフリーのツール群、グラフィックライブラリ、Goolgeの書いたサービス・プログラムで構成されていますが、全てはLinuxというOSの上で動作しています。

・NextStep


図に戻りましょう。宗家のReserch UNIXから伸びたBSDへの系譜。その下にSunOSがあって、更に下に「NextStep」とあります。
次はNextについての話です。

1985年、Appleの創業者スティーブ・ジョブズはAppleを退社します。なんだか業績が悪く、社内で浮いていたジョブズは当時のCEOに追い出されてしまいます。
そして数人の社員を引き連れ、「Next」社を旗揚げします。
はじめはアドビシステムズ社と「Display PostScript」という技術を開発していました。しかしその技術を実現する為のOSがありません。困った。
無いなら作るしかありません。彼らはOSの開発に着手します。
といっても、ゼロから立ち上げるのではなく、既存のOSをベースにします。

彼らはMach(マーク)というOSに目を付けました。
Machは、1986年カーネギーメロン大学のリチャード・ラシッド教授(実際の実装はアビー・テバニアン)によるもので、アメリカ国防総省向けに開発していたものでした。(ちなみにリチャード・ラシッド教授はその後Microsoftの上級副社長にります)

Machは、あのBSDをベースとし、BSD完全準拠(実装が異なっても同じ機能、同じインターフェイス)として開発されました。また、マルチプロセッサ(複数のCPUを制御できること)を要件としていました。
当時のBSDは、マルチプロセッサ向きではなかった事と、様々な機能追加により、メンテナンスしづらい構造になっていた事から、Machが新規に開発されたようです。

このMachをベースに、Next社は「NextStep」OSを完成させます。
NextStepは商用では大きな成果を上げた訳ではありませんでしたが、その後の色々なシステムがお手本にする程、優れた設計でした。
その後、Next社は紆余曲折あり、ジョブズはNext社を古巣のAppleに売却します。
Appleは当時、新しいOSを求めており、ジョブズらの開発したNextStepはその要求に応えるものでした。Nextごと吸収されたジョブズも同年、コンサルタントとしてAppleに復帰、翌年CEOとして、返り咲く事となります。
それからNextStepを元にmac OSを開発。mac OSを元に、iOSが開発されました。

Utente:Sassospicco, CC BY-SA 2.5 , via Wikimedia Commons

上の図はMac OSの構成図です。iOSは上記のうち、Carbon(旧Mac OSの遺産)、及びUNIX由来のライブラリが削られているものの、Core OS部分は字上の図のMacOSと同じです。
CoreOSを見てみましょう。ハードウェアと書かれた上にMachとBSD由来の実装が見えます。
BSD+Mach+ドライバ部分で、XNU(X is Not UNIX)と呼んでいるそうです。
Kernel(カーネル)とも書かれていますが、UNIXの世界ではOSの事をカーネルと呼ぶのが慣例となっています。
XNUカーネル +システムユーティリティ(雑多なツール群)を合わせて
Core OS("Darwin")(ダーウィン)とし、中核を成しています。

このように、iPhoneのOS、iOSのコア部分には、ケンのUNIXを由来とするBSD系の血(BSDの一部+BSDをお手本に書かれたMach)が流れているのです。

・そして伝説へ…

考えてみると、
Android:Linuxベース
(UNIXを教育用に書き換えたMINIXを参考に作られたLinux)

iPhone   :  BSDベース 
  (UNIXが派生してカリフォルニア大学バークレー校で進化したBSDを元に作ったMach+BSDの一部)

となっていて、ケンがベル研でスペース・トラベルにハマってなかったら…世界はまた、違う形をしていたかもしれません。

足跡を辿っていて気付いたのですが、MINIXにしろBSDにしろMachにしろ、大学の教師や生徒が好奇心と熱意で進化していったんだな、と感じました。

蛇足として、今日「通信」と言えば大半はHTTP通信。HTTP通信はTCP/IPという方式で通信されています。このTCP/IPが発展したのも、1983年、4.3BSDにTCP/IPが実装されたのをはじめ、UNIX系OSに次々と実装されていき、UNIXと共に広く浸透していきました。これもUNIXの大きな成果だと言えます。

そんなわけで、タイトルコール。
「iphoneのOS(iOS)はBSD系」
ありがとうございました。





この記事が気に入ったらサポートをしてみませんか?