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