Hardware Abstraction Layerとは? わかりやすく解説

Weblio 辞書 > コンピュータ > IT用語辞典 > Hardware Abstraction Layerの意味・解説 

HAL

フルスペル:Hardware Abstraction Layer
読み方ハル

HALとは、Windows NTおよびWindows 2000などのOS搭載されプログラムのうち、アプリケーション動作するためのハードウェアプラットフォームの差異吸収する機能をもつプログラムのことである。

HALをハードウェアソフトウェアの間に介在させることによって、ソフトウェア直接ハードウェアアクセスすることはできなくなるが、ハードウェア機種依存せずアプリケーション実行させることが可能になるハードウェア機種固有の情報考慮する必要がなくなるため、キャッシュシステムバスといった(ソフトウェアと密接に連携している)ハードウェア交換したい場合にも、カーネルアプリケーションプログラム変更する必要がない


Hardware Abstraction Layer

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2020/10/08 18:28 UTC 版)

ナビゲーションに移動 検索に移動

Hardware Abstraction Layer (HAL、ハードウェア抽象化レイヤー) とは、コンピュータハードウェアとそのコンピュータ上で動作するソフトウェアの間に存在する、ソフトウェアで実装した抽象化レイヤーである。オペレーティングシステム (OS) のカーネルからハードウェア毎に異なる差異を隠蔽する機能を持ち、それによってカーネルコードは異なるハードウェアのシステム上で動作してもほとんど変更する必要がなくなる。PCにおいては、HALは基本的にマザーボード用ドライバの形態をとり、上位のプログラムがハードウェアに直接アクセスする下位のコンポーネントに指示できるようにする。

概要

多数存在するCPUアーキテクチャ毎の動作の違いなどがあっても、適切に設計されたHALを用意すれば動作できる。そのため、システムを開発するときにハードウェアの差異を意識することなく設計できる。これらはNTベースのMicrosoft Windows OSで用いられる技術である。NTベースのOSには、カーネル空間にHALがあり、カーネルやドライバや実行サービスとハードウェアの仲介をする[1][2]。これにより、Windows NT のカーネルモードのコードは各種の異なるメモリ管理ユニットのアーキテクチャのプロセッサに移植でき、各種I/Oバスアーキテクチャのシステムに移植できるようになっている。コードの大部分はそれらシステム上で、単にその命令セットアーキテクチャにコンパイルするだけでソースコードを修正することなく実行することができる。

BSDmacOSLinuxCP/MDOSSolaris といったオペレーティングシステムにもHALに相当する部分は存在しているが、明確にHALとして認識・区別されていない。Linuxなどでは、動作中のカーネルに対してAdeosのようなHALを後から挿入することができる。NetBSDはHAL層を明確に区別しており、非常に移植性が高い。このシステムは uvm(9)pmap(9)bus_space(9)bus_dma(9) といったサブシステムから構成される。ISAEISAPCIPCI-Eなど、複数のアーキテクチャで使われているI/Oバスも抽象化されており、デバイスドライバも最小限の修正だけで移植可能である。

HALの極端な例として、System/38AS/400のアーキテクチャがある。これらシステム上のコンパイラの多くは抽象化された機械語コードを生成する。Licensed Internal Code (LIC) はそれを動作中のシステムのプロセッサ用コードに変換し実行させる。LIC層より上のアプリケーションやOSのコードはSystem/38からAS/400に移行する際に全く修正も再コンパイルも不要だった(System/38とAS/400では少なくとも3種類の全く異なるプロセッサが使われている)。

HALは、カーネルの代わりにハードウェアと直接やり取りするものであるため、そのインタフェースはOSのAPIよりも下位に存在する。したがって、HALの処理にかかる時間はAPI(システムコール)にかかる時間よりも短くなければならない。

HALが定義されたOSは各種ハードウェアに容易に移植可能である。これは非常に様々なプラットフォーム上で動作することを要求される組み込みシステムでは特に重要である。

DirectX

Windows向けのマルチメディア処理用APIであるDirectXにも、HALに対応したコンポーネントがいくつか存在する。

リアルタイム3次元コンピュータグラフィックスAPIであるDirect3Dには、ビデオカードなどのグラフィックスハードウェア (GPU) を抽象化するためのHALデバイス[3]が用意されている。ベンダー間の差異を吸収する層であるHALデバイスを利用することにより、ベンダー共通のDirect3D APIを用いてハードウェアの機能にアクセスできる。

なお、DirectDrawにはドライバーをユーザーモードでエミュレーションするためのHardware Emulation Layer (HEL) が用意されていた[4]

DirectSoundにもサウンドカードのハードウェア支援を利用するHALが用意されていたが、Windows Vista以降はソフトウェアエミュレーションに置き換えられた[5]

脚注

  1. ^ Windows NT Hardware Abstraction Layer (HAL)”. Microsoft (2006年10月31日). 2007年8月25日閲覧。
  2. ^ Helen Custer (1993年), Inside Windows NT, Microsoft Press 
  3. ^ DirectX 用語集 | Microsoft Docs
  4. ^ Hardware Emulation Layer - Windows drivers | Microsoft Docs
  5. ^ 【4Gamer.net】[レビュー]Creative ALchemy

関連項目


Hardware Abstraction Layer

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2022/06/09 07:26 UTC 版)

Windows NT系」の記事における「Hardware Abstraction Layer」の解説

詳細は「Hardware Abstraction Layer」を参照 HALを除くカーネルモード動作するプログラムハードウェアから分離する層である。カーネルとの分離理想だが、HALカーネル共存関係にある。また、極僅かx86用の命令含まれている(カーネルでエミュレートされる)。NTカーネルHAL独立しておらず、NTカーネルハードウェア直接アクセスを行うこともあったが、Windows VistaからNTカーネルHAL依存関係無くなり、hal.dllに統一された。 hal.dll - 標準的なPC halaacpi.dll - APIC ACPI PC halacpi.dll - ACPI PC halapic.dll - APIC PC halmacpi.dll - マルチプロセッサACPI PC halmps.dll - マルチプロセッサPC halsp.dll - Compaq SystemPro halborg.dll - Sillicon Graphics Workstation 等、幾つかのHAL存在していた。HALOSインストール時自動的に選択される

※この「Hardware Abstraction Layer」の解説は、「Windows NT系」の解説の一部です。
「Hardware Abstraction Layer」を含む「Windows NT系」の記事については、「Windows NT系」の概要を参照ください。

ウィキペディア小見出し辞書の「Hardware Abstraction Layer」の項目はプログラムで機械的に意味や本文を生成しているため、不適切な項目が含まれていることもあります。ご了承くださいませ。 お問い合わせ


英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

「Hardware Abstraction Layer」の関連用語

Hardware Abstraction Layerのお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



Hardware Abstraction Layerのページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
IT用語辞典バイナリIT用語辞典バイナリ
Copyright © 2005-2025 Weblio 辞書 IT用語辞典バイナリさくいん。 この記事は、IT用語辞典バイナリの【HAL】の記事を利用しております。
ウィキペディアウィキペディア
All text is available under the terms of the GNU Free Documentation License.
この記事は、ウィキペディアのHardware Abstraction Layer (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。 Weblio辞書に掲載されているウィキペディアの記事も、全てGNU Free Documentation Licenseの元に提供されております。
ウィキペディアウィキペディア
Text is available under GNU Free Documentation License (GFDL).
Weblio辞書に掲載されている「ウィキペディア小見出し辞書」の記事は、WikipediaのWindows NT系 (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。

©2025 GRAS Group, Inc.RSS