エム【M/m】
読み方:えむ
4 〈M〉
㋒《(ラテン)membrum virile》陰茎を表す略号。
5 〈M〉《nautical mile》海洋や航海上の距離の単位、海里の記号。
6 〈m〉《(フランス)mètre》長さの単位、メートルの記号。
7 〈M〉《magnitude》地震の大きさの単位、マグニチュードの記号。
8 〈M〉《(ドイツ)Mach》高速飛行速度の単位、マッハの記号。
10 〈M〉《master/master course》修士・修士課程を表す記号。M1(修士課程1年生)、M2(修士課程2年生)のように用いる。
マーク【Mach】
【マッハ】(まっは)
Mach
物理学者エルンスト・マッハ博士(Ernst Mach)が定義した速度の単位。
「マッハ1」は、ある空間を振動が伝播する速度、すなわち音速に等しい。
音速は振動を伝播するのがどのような物質であるか、また密度や温度、圧力などによって変動する。
国際標準大気を想定した場合のマッハ1は秒速として約340 m/s、時速にして約1,224 km/hに相当する。
高空など気圧が低い場合は遅くなり、真空中ではゼロとなる(真空は振動を伝播しない)。
逆に圧力が高ければ音速は早くなる傾向にあり、ソナーなどで問題になる「水中音速」は大気中の4倍以上に達する。
特に条件の指定がない場合、マッハ1は340 m/sと換算される事が多い。
世界ではじめて音の壁を超えたのは、公式記録上ではアメリカのX-1型ロケット実験機のテストパイロットであったチャールズ・イェーガー中尉(1947年10月14日にマッハ1.05を記録)である。
また、有人航空機の最高速度世界記録は1967年にウィリアム・J・ナイト米空軍大尉がX-15実験機で到達したマッハ6.70。
しかしながら、実際の運用では、最先端のジェット戦闘機であっても最高速度はマッハ2.0~2.5程度、通常の飛行速度は亜音速程度に抑えられている。
マッハ2以上の速度に実質的な利得はなく、部品の摩耗や燃料消費を増大させるのみであると考えられている。
関連:国際標準大気
Mach
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2025/03/11 10:14 UTC 版)
![]() | 出典は列挙するだけでなく、脚注などを用いてどの記述の情報源であるかを明記してください。 |
開発者 | カーネギーメロン大学 |
---|---|
OSの系統 | Unix系 |
開発状況 | 開発終了 |
最新安定版 | 3.0 / 1989年 |
カーネル種別 | マイクロカーネル |
ウェブサイト |
www-2 |
Mach(マーク[1])とは、カーネギーメロン大学のリチャード・ラシッド教授(実際の実装はアビー・テバニアンが中心[2])らのMachプロジェクトにより開発されたマイクロカーネルタイプのオペレーティングシステム (OS) を言う。名前は「複数非同期通信ホスト」を意味する英語「multiple asynchronously communication hosts」に由来している。
開発の経緯
1980年代中頃、アメリカ国防総省高等研究計画局によって開発されていた実験用マルチプロセッサコンピュータ用のOSをアメリカ国防総省に提案、採用されたことにより 1985年からMachの開発は始まった。当初はスーパーコンピュータ・ワークベンチ・プロジェクト(supercomputer workbench project)と呼ばれていた。
当時、米国の研究機関で主に用いられていた 4.2BSD UNIXの設計は、古く効率の悪い仮想記憶機構、マルチプロセッサマシンに対して非効率な構造、移植性の悪い冗長なコードなど、当初のUNIXでは想定していない様々な機能をカーネルに追加したため、非常に見通しの悪い構造となっていた。これを解決することがMachの目的であった。
- マルチプロセッサ対応(100プロセッサ程度が想定された)
- 高価で少ない実メモリを想定するのではなく、巨大なメモリ空間と十分な実メモリを有効利用する
- 分散システムをサポートし、高速でネットワーク透過なプロセス間通信 (IPC) をサポート
- 移植性の高い構造
- 4.3BSDと完全な互換性
これらを実現することを目標に開発が行われた。
歴史
当初から4.3BSD UNIXと互換であることが決定されていたこともあり、4.3BSDのカーネルソースコードを元に修正を加えることで実装を行った。実際には3.0からがマイクロカーネルであり、Mach 2.5まではマイクロカーネルではない。
Mach 1.0
- 1986年リリース。研究開発の進捗報告として発表された。新しい仮想記憶とIPCは実装されていたが、タスクとスレッドはまだ実装されていなかった。
Mach 2.0
- 1988年リリース。タスクとスレッドの実装、いくつかの改善。初期のNeXTSTEPのカーネルとして利用された。
Mach 2.5
- NFS の実装、Open Software FoundationのOSF/1のカーネルとして利用された。
Mach 3.0
リチャード・ラシッド教授が1991年にマイクロソフトへ移籍した後も1994年までカーネギーメロン大学でMachプロジェクトは続いた。以後、Machの開発はユタ大学のMach 4プロジェクト、Free Software FoundationのHurdプロジェクト、カーネギーメロン大学の ARTプロジェクトなどに引き継がれていった。ユタ大学で Mach 4として分散環境を考慮したスレッドおよびメッセージの改良、Linuxデバイスドライバインターフェースの実装を行った。GNUプロジェクトではこのMach 4をベースに改良を加え、GNU Machとして公開している。ARTプロジェクトでは分散リアルタイムOS実現のため、実時間駆動型スケジューラなどがMach に組み込まれ、Real-Time Machとして公開された。これらの研究開発はMachのみならずBSDにもフィードバックされ、仮想記憶システムを含むいくつかの機能は4.4BSD Liteにも利用されている。
Mach の基本概念
- タスク
- UNIXのプロセスは計算処理とそれに必要なリソースを一体化しているのに対し、Machは計算処理とそのリソースを分離するとともに、独立に制御できるようにした。タスクはCPU実行時間(スレッド)やメモリオブジェクト、アドレス空間、ポート等のリソースの集合体である。
- スレッド
- UNIXのプロセスから、CPU実行時間をリソースとして分離、抽象化したもの。スレッドはCPUの処理単位であり、並列に動作することができる。スレッドは必ず一つのタスクに属し、そのタスクの全てのリソースにアクセスできる。タスクは複数のスレッドを持つこともできる。リソースの保護はタスクを単位として行われるため、UNIXプロセスと異なりメモリ空間などのリソースと直接関連しない。結果としてスレッドの生成や切り換えは高速に行われるとともに、マルチプロセッサにも最適化される。
- ポート
- 初期のUNIXではパイプ機能が主なIPCの手法であったが、ファイルを抽象化したパイプ機能では、様々な形態のデータの受け渡しを十分に抽象化できなくなっていた。UNIXでは様々なデータの受け渡しを実現するため、様々な方法で拡張を行ったが[3]、Machではそれらを統合して新たにポートという概念を実装した。ポートはデータ受け渡しのために使われる通信チャネルである。構造化されたメッセージを受け渡す枠組みを実現し、ネットワーク越しの通信も含めて抽象化するとともに、高速、効率的なメッセージの送受信(out-of-lineデータ)が可能となった。
- メッセージ
- カーネルが管理するIPCのデータオブジェクト。メッセージは複数の型づけされたデータの集まりである。メッセージはカーネルによって管理され、ポートを通じてプロセス間の通信に用いられる。
- メモリオブジェクト
- MachはUNIXと異なり、仮想記憶を管理する機能をカーネル内部に実装(内部ページャ)しているだけではなく、ユーザーレベルにも開放している(外部ページャ)。ページャが操作するメモリの基本的な抽象概念をメモリオブジェクトと呼ぶ。4.3BSDでは実現できなかったcopy-on-writeやmap-on-referenceといった遅延評価のメカニズム[4]が実装され、効率よくメモリ資源を利用できるようになった。
これらのMach生まれの基本概念は、その後のUNIXのみならず、数多くのOSに多大な影響を及ぼした。
読み方
この新しいOSの名前をどうするのかという雑談の中で出た MUCK (multiprocessor universal communication kernel) というアイディアを、リチャード・ラシッド教授の同僚のイタリア人 Darlo Giuse がMachと聞き間違えたことに由来する。最終的にはコインの裏表で決定した[5]。従って原則英語読みの「マーク」という発音が正しい。
Machを採用したOS
- OSF/1
- NEXTSTEP - Mach用OPENSTEP
- GNU Hurd (GNU Mach)
- MkLinux
- macOS (Darwin), iOS, iPadOS, tvOS, watchOS(ただし、実行効率を得るために実行レベルでは単一バイナリになっている)
関連項目
脚注
- ^ 哲学者のエルンスト・マッハと同じスペル Machであることからマッハと呼ばれることもあるが、正式にはマークと呼ぶのが正しいとされる。
- ^ Darwin Releases Sourceのリスト内からダウンロード出来るxnuのソースコードを参照
- ^ 共有メモリ、4.2BSD以降でのSocket、SystemVでの msgrop() など
- ^ メモリを要求された時点で確保するのではなく、使用された時点で確保する方式。メモリがコピーされた場合も、実際の動作としてはコピーではなく仮想記憶機構を利用して多重参照するだけとし、実際にコピーを行うのは、書き換えられた領域のみとなる。結果として必要最小限のメモリ確保、メモリコピーしか行われないというメリットを持つ
- ^ Mach(1993) p.v
参考文献
- J.ボイキン, D.カーション, A.ランガーマン, S.ロゥバーソ 著、岩本信一(訳) 編『Machオペレーティングシステム -プログラミングと概念-』トッパン、1994年。
- 乾 和志,菅原 圭資『分散OS Machがわかる本』日刊工業新聞社〈LUNAの本シリーズ〉、1992年。
「mach」の例文・使い方・用例・文例
固有名詞の分類
- MACHのページへのリンク