Share on Facebook Share on Twitter Email
Answers.com

HAL

 

(1) (Hardware Abstraction Layer) An interface between the hardware and the software. An operating system is essentially a hardware abstraction layer; however, a HAL implies an additional layer between the OS and the hardware. It is used to enable the operating system to be ported to new hardware platforms by writing a new abstraction layer. In practice, parts of the kernel may always have to be optimized in order to support new hardware as efficiently as possible.

An abstraction layer was built into Windows NT and its 2000 and XP offspring. The Windows DirectX APIs call the HAL layer directly.

(2) (Heuristic/ALgorithmic) The name of the computer in Stanley Kubrick's famous film "2001," which takes over command of the spaceship. Each of the letters in H-A-L precede the letters I-B-M. In 1968, when the movie was released, IBM controlled almost every aspect of the computer business; however, the IBM name connection was supposedly a coincidence.

Download Computer Desktop Encyclopedia to your iPhone/iTouch

Search unanswered questions...
Enter a question here...
Search: All sources Community Q&A Reference topics
Wikipedia: HAL (software)
Top
HAL
Stable release 0.5.13 / 2009-07-15; 4 months ago
Operating system Linux, FreeBSD, NetBSD, OpenSolaris, Solaris
Platform UNIX
Type System software
License GNU General Public License and Academic Free License
Website freedesktop.org/wiki/Software/hal

HAL is a software project providing a hardware abstraction layer for Unix-like computer systems. It aims to allow desktop applications to discover and use the hardware of the host system through a simple, portable and abstract API, regardless of the type of the underlying hardware.[1]

HAL was originally envisioned by Havoc Pennington and is now a freedesktop.org project, being a key part of the software stack of the GNOME and KDE desktop environments. It is free software, dual-licensed under both the GNU General Public License and the Academic Free License.[2]

HAL is unrelated to the earlier concept of Windows NT kernel HALs (also found in current Windows releases), which handle some platform-specific core functionality within the kernel, such as interrupt routing.

Contents

Rationale

Traditionally, the operating system kernel was responsible for providing an abstract interface to the hardware the system ran on. Applications used the system call interface, or performed file I/O on device nodes in order to communicate with hardware through these abstractions. This sufficed for the simple hardware of early desktop computing.

Computer hardware, however, has increased in complexity and the abstractions provided by Unix kernels have not kept pace with the proliferating number of device and peripheral types now common on both server and desktop computers. Most modern bus have also become hotplug-capable and can have non-trivial topologies. As a result, devices are discovered or change state in ways which can be difficult to track through the system call interface or Unix IPC. The complexity of doing so forces application authors to re-implement hardware support logic.[1]

Some devices also require privileged helper programs to prepare them for use. These must often be invoked in ways that can be awkward to express with the Unix permissions model (for example, allowing users to join wireless networks only if they are logged into the video console).[1] Application authors resort to using setuid binaries or run service daemons to provide their own access control and privilege separation, potentially introducing security holes each time.

Design

HAL is a single daemon responsible for discovering, enumerating and mediating access to most of the hardware on the host computer. Applications communicate with HAL through the D-Bus IPC mechanism, which abstracts the hardware behind an object-based RPC mechanism.

Each logical hardware device is represented as a D-Bus object, and its bus address is used as a unique identifier. Devices include abstractions like disk partitions and visible wireless networks. The device's functionality is exposed through D-Bus interfaces, and its state accessed through properties, a set of key-value pairs.

HAL broadcasts hardware events as signals on these objects: listening applications can listen for these to react on hardware events (such as a digital camera being plugged in, an optical disc spinning up or a laptop computer closing its lid).[3]

Implementations and obsolescence

On Linux, HAL uses the /sys filesystem to discover hardware and listen for kernel hotplug events. Some Linux distributions also provide a udev rule to allow the udev daemon to notify HAL whenever new device nodes appear.

As of 2009, HAL is in process of being deprecated as it has "become a large monolithic unmaintainable mess"[4]. It will be replaced by DeviceKit and existing functionality in udev and the kernel.

See also

  • DeviceKit: an upcoming replacement for HAL.

References

  1. ^ a b c Pennington, Havoc (2003-07-10), Making Hardware Just Work, http://ometer.com/hardware.html 
  2. ^ HAL source code license text, http://gitweb.freedesktop.org/?p=hal.git;a=blob_plain;h=be9031229827a2e2463e99d678f97ae5ef777efc;f=COPYING, "HAL is licensed to you under your choice of the Academic Free License version 2.1, or the GNU General Public License version 2" 
  3. ^ Zeuthen, David (2007-06-13), HAL 0.5.10 Specification, freedesktop.org, http://people.freedesktop.org/~david/hal-spec/hal-spec.html, retrieved 2009-04-18 
  4. ^ Halsectomy, ubuntu.com, https://wiki.ubuntu.com/Halsectomy, retrieved 2009-11-01 

Shopping: HAL
Top
 
 
Learn More
halo– (prefix)
Larry Fine (Actor, Comedy)
Moe Howard (Actor, Comedy)

Who was HAL 9000? Read answer...
What are the song in the movie Shallow Hal? Read answer...
What is HAL? Read answer...

Help us answer these
Who is hal salise?
Who was hal percy?
What does hal stand for?

Post a question - any question - to the WikiAnswers community:

 

Copyrights:

Computer Desktop Encyclopedia. THIS COPYRIGHTED DEFINITION IS FOR PERSONAL USE ONLY.
All other reproduction is strictly prohibited without permission from the publisher.
© 1981-2009 Computer Language Company Inc.  All rights reserved.  Read more
Wikipedia. This article is licensed under the Creative Commons Attribution/Share-Alike License. It uses material from the Wikipedia article "HAL (software)" Read more

 

Mentioned in