New Immissions/Updates:
boundless - educate - edutalab - empatico - es-ebooks - es16 - fr16 - fsfiles - hesperian - solidaria - wikipediaforschools
- wikipediaforschoolses - wikipediaforschoolsfr - wikipediaforschoolspt - worldmap -

See also: Liber Liber - Libro Parlato - Liber Musica  - Manuzio -  Liber Liber ISO Files - Alphabetical Order - Multivolume ZIP Complete Archive - PDF Files - OGG Music Files -

PROJECT GUTENBERG HTML: Volume I - Volume II - Volume III - Volume IV - Volume V - Volume VI - Volume VII - Volume VIII - Volume IX

Ascolta ""Volevo solo fare un audiolibro"" su Spreaker.
CLASSICISTRANIERI HOME PAGE - YOUTUBE CHANNEL
Privacy Policy Cookie Policy Terms and Conditions
Mach - Wikipedia

Mach

出典: フリー百科事典『ウィキペディア(Wikipedia)』

Disambiguation"マッハ" のその他の用法についてはマッハ (曖昧さ回避)をご覧ください。

MachマークMultiple Asynchronously Communication Hostsの略)は、カーネギーメロン大学リチャード・ラシッド教授(実際の実装はアビー・テバニアンが中心)らの Mach プロジェクト(日本からオムロンのエンジニアも参加)により開発されたマイクロカーネルタイプのOS

目次

[編集] 開発の経緯

1980年代中頃、アメリカ国防総省高等研究計画局(Defense Advanced Research Projects Agency, DARPA)によって開発されていた実験用マルチプロセッサコンピューター用のオペレーティングシステム(OS)をアメリカ国防総省に提案、採用されたことにより 1985年から Mach の開発は始まった。(当初は Supercomputer Workbench Project と呼ばれていた)

当時、米国の研究機関で主に用いられていた 4.2BSD UNIX の設計が旧態化[1]していたことを解決することが目的であった。

  • マルチプロセッサ対応(100プロセッサ程度が想定された)
  • 高価で少ない実メモリを想定するのではなく、巨大なメモリ空間と十分な実メモリを有効利用する
  • 分散システムをサポートし、高速でネットワーク透過なIPCをサポート
  • 移植性の高い構造
  • 4.3BSD と完全な互換性

これらを実現することを目標に開発が行われた。

[編集] 歴史

当初から 4.3BSD UNIX と互換であることが決定されていたこともあり、4.3BSD のカーネルソースコードを元に修正を加えることで実装を行った。実際には3.0からがマイクロカーネルであり、Mach 2.5まではマイクロカーネルではない。

  • Mach 1.0
1986年リリース。研究開発の進捗報告として発表された。新しい仮想記憶とプロセス間通信は実装されていたが、タスクとスレッドはまだ実装されていなかった。
  • Mach 2.0
1988年リリース。タスクとスレッドの実装、いくつかの改善。初期の NeXTSTEP のカーネルとして利用された。
  • Mach 2.5
NFS の実装、Open Software Foundation (OSF)の OSF/1 のカーネルとして利用された。
  • Mach 3.0
1989年リリース。マイクロカーネル化。MkLinux のカーネルとしても使われた。

リチャード・ラシッド教授が1994年に カーネギーメロン大学から転出するまで Mach プロジェクトは続いた。 以後、Mach の開発はユタ大学のMach 4 プロジェクト、Free Software Foundation (FSF) の Hurd プロジェクト、CMU の ARTプロジェクトなどに引き継がれていった。ユタ大学で Mach 4 として分散環境を考慮したスレッドおよびメッセージの改良、Linux デバイスドライバインターフェースの実装を行った。FSF ではこの Mach 4 をベースに改良を加え、Gnu Mach として公開している。ARTプロジェクトでは分散リアルタイムOS実現のため、実時間駆動型スケジューラなどが Mach に組み込まれ、Real-Time Mach として公開された。これらの研究開発は Mach のみならず BSD にもフィードバックされ、仮想記憶システムを含むいくつかの機能は 4.4BSD Lite にも利用されている。

[編集] Mach の基本概念

  • タスク
UNIX のプロセスは計算処理とそれに必要なリソースを一体化しているのに対し、Mach は計算処理とそのリソースを分離するとともに、独立に制御できるようにした。タスクは CPU 実行時間(スレッド)やメモリオブジェクト、アドレス空間、ポート等のリソースの集合体である。
  • スレッド
UNIX のプロセスから、CPU 実行時間をリソースとして分離、抽象化したもの。スレッドは CPU の処理単位であり、並列に動作することができる。スレッドは必ず一つのタスクに属し、そのタスクの全てのリソースにアクセスできる。タスクは複数のスレッドを持つこともできる。リソースの保護はタスクを単位として行われるため、UNIX プロセスと異なりメモリ空間などのリソースと直接関連しない。結果としてスレッドの生成や切り換えは高速に行われるとともに、マルチプロセッサにも最適化される。
  • ポート
初期の UNIX ではパイプ機能が主なプロセス間通信の手法であったが、ファイルを抽象化したパイプ機能では、様々な形態のデータの受け渡しを十分に抽象化できなくなっていた。UNIX では様々なデータの受け渡しを実現するため、様々な方法で拡張を行ったが[2]、Mach ではそれらを統合して新たにポートという概念を実装した。ポートはデータ受け渡しのために使われる通信チャネルである。構造化されたメッセージを受け渡す枠組みを実現し、ネットワーク越しの通信も含めて抽象化するとともに、高速、効率的なメッセージの送受信(out-of-lineデータ)が可能となった。
  • メッセージ
カーネルが管理するプロセス間通信のデータオブジェクト。メッセージは複数の型づけされたデータの集まりである。メッセージはカーネルによって管理され、ポートを通じてプロセス間の通信に用いられる。
  • メモリオブジェクト
Mach は UNIX と異なり、仮想記憶を管理する機能をカーネル内部に実装(内部ページャ)しているだけではなく、ユーザーレベルにも解放している(外部ページャ)。ページャが操作するメモリの基本的な抽象概念をメモリオブジェクトと呼ぶ。4.3BSD では実現できなかった copy-on-write や map-on-reference といった遅延評価のメカニズム[3]が実装され、効率よくメモリ資源を利用できるようになった。

これらの Mach 生まれの基本概念は、その後の UNIX のみならず、数多くの OS に多大な影響を及ぼした。

[編集] 読み方について

この新しい OS の名前をどうするのかという雑談の中で出た MUCK(Multiproceesor Universal Communication Kernel) というアイディアを、リチャード・ラシッド教授の同僚のイタリア人 Darlo Giuse が Mach と聞き間違えたことに由来する。最終的にはコインの裏表で決定したらしい。従って原則英語読みの「マーク」という発音が正しい[4]

[編集] Machを採用したOS

[編集] 脚注

  1. ^ 古く効率の悪い仮想記憶機構、マルチプロセッサマシンに対して非効率な構造、移植性の悪い冗長なコードなど、当初の UNIX では想定していない様々な機能をカーネルに追加したため、非常に見通しの悪い構造となっていた。
  2. ^ 共有メモリ、4.2BSD 以降での Socket、SystemV での msgrop() など
  3. ^ メモリを要求された時点で確保するのではなく、使用された時点で確保する方式。メモリがコピーされた場合も、実際の動作としてはコピーではなく仮想記憶機構を利用して多重参照するだけとし、実際にコピーを行うのは、書き換えられた領域のみとなる。結果として必要最小限のメモリ確保、メモリコピーしか行われないというメリットを持つ
  4. ^ ただしMUCKでマークと英語読みすることはありえない(マックなら有り得る)

Static Wikipedia (no images)

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - en - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu -

Static Wikipedia 2007 (no images)

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - en - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu -

Static Wikipedia 2006 (no images)

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu

Static Wikipedia February 2008 (no images)

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - en - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu