OVH Cloud OVH Cloud

HAL

49 réponses
Avatar
Cyrille Szymanski
Bonjour,

Je me pose la question de savoir jusqu'à quel point le Hardware Abstraction
Layer est, justement, une abstraction ?

La définition que j'ai trouvé est "A thin layer of software *provided by
the Hardware Manufacturer* that hides, or abstracts, Hardware differences
from higher layers of the Operating System".

Le terme qui me gêne est justement le fait que ce soit le constructeur qui
fournisse le HAL. Cela veut-il simplement dire que par exemple pour qu'un
nouveau bus soit supporté il faut que le constructeur du bus fournisse un
HAL ? Dans ce cas, quel est le niveau d'abstraction ? Qui définit quelles
opérations offre cette couche ?

Ou au contraire le HAL est-il intimement lié au matériel, dans ce cas
quelle est la différence avec un driver qui expose une interface à peu près
standard à l'OS (comme NDIS par exemple) ?

--
Cyrille Szymanski

10 réponses

1 2 3 4 5
Avatar
Vincent Burel
"Cyrille Szymanski" wrote in message
news:
Bonjour,

Je me pose la question de savoir jusqu'à quel point le Hardware


Abstraction
Layer est, justement, une abstraction ?

La définition que j'ai trouvé est "A thin layer of software *provided by
the Hardware Manufacturer* that hides, or abstracts, Hardware differences
from higher layers of the Operating System".

Le terme qui me gêne est justement le fait que ce soit le constructeur qui
fournisse le HAL. Cela veut-il simplement dire que par exemple pour qu'un
nouveau bus soit supporté il faut que le constructeur du bus fournisse un
HAL ? Dans ce cas, quel est le niveau d'abstraction ? Qui définit


quelles
opérations offre cette couche ?

Ou au contraire le HAL est-il intimement lié au matériel, dans ce cas
quelle est la différence avec un driver qui expose une interface à peu


près
standard à l'OS (comme NDIS par exemple) ?



Oui, il semble que la couche HAL soit au plus prèt du matériel.
y'a un schema qui aide ici (pour la video, mais c'est pareil pour l'audio,
s'il n'y a pas de couche HAL, alors Windows passe par les drivers usuels)
http://msdn.microsoft.com/archive/default.asp?url=/archive/en-us/ddraw7/directdraw7/ddover_2b07.asp

Mais la couche HAL est normallement utilisé que par les composant Direct-X.

VB
Avatar
AMcD®
> Je me pose la question de savoir jusqu'à quel point le Hardware
Abstraction Layer est, justement, une abstraction ?



Il te faut raisonner par rapport à l'executive, le Kernel et les drivers.
Pour eux, il importe de ne pas avoir à se soucier des spécifitiés des
plate-formes matérielles. Le HAL fait de l'abstraction pour eux, en ce sens
que ces modules se contentent d'appeler des routines du HAL, quel que soit
le matos géré en dessous.

Par contre, il est évident que t'auras plusieurs HAL, puisque eux ont a se
soucier du nombre de processeurs, des interruptions, etc.

La définition que j'ai trouvé est "A thin layer of software *provided
by the Hardware Manufacturer* that hides, or abstracts, Hardware
differences from higher layers of the Operating System".



Oui. Dans le DDK c'est un peu plus précis :

"An NT-based operating system component that provides platform-specific
support for the NT kernel, the I/O manager, kernel-mode debuggers, and the
lowest-level device drivers. The HAL exports routines that abstract
platform-specific hardware details about caches, I/O buses, interrupts, and
so forth, and provides an interface between the platform's hardware and the
system software. For example, the HAL implements a routine to map each
device driver's bus-relative device interrupt vector to a system-assigned
vector with a corresponding platform-specific hardware priority (DIRQL), as
well as several routines that provide DMA-transfer support."

Le terme qui me gêne est justement le fait que ce soit le
constructeur qui fournisse le HAL. Cela veut-il simplement dire que
par exemple pour qu'un nouveau bus soit supporté il faut que le
constructeur du bus fournisse un HAL ?



À priori :-).

Dans ce cas, quel est le
niveau d'abstraction ?



Voir ci-dessus. L'abstraction, c'est pour ce qui est au-dessus du HAL.

Qui définit quelles opérations offre cette
couche ?



Ben Microsoft, vu que le HAL est appelé par les composants essentiels du
système, il doit falloir que certaines routines soient implémentées,
certains services obligatoirement disponibles, etc. Prenons un exemple. Soit
un périphérique qui veut décoder une adresse sur un bus. La méthode est
évidemment spécifique à ce bus. C'est pas pareil pour un bus PCI ou pour un
autre. Du moins pas forcément. Si t'avais pas de HAL, ton driver devrait
prendre en compte tous les bus et processeurs que tu souhaites supporter. Au
lieu de ça, ton driver va s'adresser au HAL lorsqu'il voudra accéder à un
port par exemple. L'abstraction est donc ici. L'interface des fonctions
publiques du HAL, qui ne va pas bouger (enfin, pas trop :-)), quel que soit
la carte-mère en dessous.

Tu peux jeter un coup d'oeil sur les routines du HAL pour te faire une idée.
C'est ici :

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/kmarch/hh/kmarch/k103_ed5017ca-1c0e-4d56-9df2-dfa14dc5c27d.xml.asp

--
AMcD®

http://arnold.mcdonald.free.fr/
Avatar
moma
Bonjour Cyrille,

I think "HAL" is a Linux-project.

See
http://www.sebastian-bergmann.de/blog/archives/391-GNOME-and-Project-Utopia.html
and
http://www.freedesktop.org/Software/hal

I currently run the newest Ubuntu-Desktop and I can see that it
elegantly reacts to various changes in HW, such as inserting a CD, DVD
or an USB device. Everything this happens thanks to HAL that transfers
messages from the HW-layer to the Desktop.

We've also seen other interesting new Desktop features.
http://nat.org/demos/
Actually already baked in the Fedora Core 4 and Suse 9.3 Linuces. What
about Mandrake ?

And please, read the enclosed letter.

Cheers,
Moma

-----------------------------------------------------------
Letter

About Ubuntu:
============= Chère Mme et Monsieur,

The Ubuntu-Linux operating system is an amazing success. Ubuntu is a
quick and powerful system with all necessary applications for home,
school and office computing. That's why Ubuntu is now used by millions
of people all over the world.

You can easily employ Ubuntu as either Desktop Workstation or Server OS.
It is completly free and you can get it from

-> http://www.ubuntu-fr.org/
-> http://www.ubuntulinux.org

Other local language sites and teams
http://www.ubuntulinux.org/wiki/LoCoTeamList

A very important guide. Una guia importante! Please follow it.
-> http://ubuntuguide.org

Ubuntu on DistroWatch
-> http://distrowatch.com/table.php?distribution=ubuntu

Mark yourself (your location) on to the map ;-)
-> http://www.ubuntulinux.org/wiki/UbuntuWorldWide
--------------------------

Note:
This is HOWTO to burn the installation CDs in Microsoft Windows.

1) Browse to http://www.deepburner.com/?r=download

2) Download the "Deep Burner Free" package. Install and run the program.

3) Select "Burn ISO image" option to create the CDs. Select the
downloaded ISO-file and let it burn! Use 700Mb CD size.

You will find additional information on
-> http://www.futuredesktop.org/how2burn.html

--------------------------

Please join to this great revolution of free computing and bring Ubuntu
and good will to all people.

With very best wishes,

Sincèrement
Moma
http://www.futuredesktop.org/how2burn.html
http://www.futuredesktop.org/OpenOffice.html
-----------------------------------------------------------------

PS. If you cannot download Ubuntu, the free shipment service will send
it to you :) http://www.ubuntulinux.org/shipit/link_view



Cyrille Szymanski wrote:
Bonjour,

Je me pose la question de savoir jusqu'à quel point le Hardware Abstraction
Layer est, justement, une abstraction ?

La définition que j'ai trouvé est "A thin layer of software *provided by
the Hardware Manufacturer* that hides, or abstracts, Hardware differences
from higher layers of the Operating System".

Le terme qui me gêne est justement le fait que ce soit le constructeur qui
fournisse le HAL. Cela veut-il simplement dire que par exemple pour qu'un
nouveau bus soit supporté il faut que le constructeur du bus fournisse un
HAL ? Dans ce cas, quel est le niveau d'abstraction ? Qui définit quelles
opérations offre cette couche ?

Ou au contraire le HAL est-il intimement lié au matériel, dans ce cas
quelle est la différence avec un driver qui expose une interface à peu près
standard à l'OS (comme NDIS par exemple) ?



Avatar
moma
Excuses!

HAL acronym is actually used both in Microsoft Windows NT and Linux.
http://en.wikipedia.org/wiki/HAL
8-)

Au revoir.


moma wrote:
Bonjour Cyrille,

I think "HAL" is a Linux-project.

See
http://www.sebastian-bergmann.de/blog/archives/391-GNOME-and-Project-Utopia.html

and
http://www.freedesktop.org/Software/hal

I currently run the newest Ubuntu-Desktop and I can see that it
elegantly reacts to various changes in HW, such as inserting a CD, DVD
or an USB device. Everything this happens thanks to HAL that transfers
messages from the HW-layer to the Desktop.

We've also seen other interesting new Desktop features.
http://nat.org/demos/
Actually already baked in the Fedora Core 4 and Suse 9.3 Linuces. What
about Mandrake ?

And please, read the enclosed letter.

Cheers,
Moma

-----------------------------------------------------------
Letter

About Ubuntu:
============= > Chère Mme et Monsieur,

The Ubuntu-Linux operating system is an amazing success. Ubuntu is a
quick and powerful system with all necessary applications for home,
school and office computing. That's why Ubuntu is now used by millions
of people all over the world.

You can easily employ Ubuntu as either Desktop Workstation or Server OS.
It is completly free and you can get it from

-> http://www.ubuntu-fr.org/
-> http://www.ubuntulinux.org

Other local language sites and teams
http://www.ubuntulinux.org/wiki/LoCoTeamList

A very important guide. Una guia importante! Please follow it.
-> http://ubuntuguide.org

Ubuntu on DistroWatch
-> http://distrowatch.com/table.php?distribution=ubuntu

Mark yourself (your location) on to the map ;-)
-> http://www.ubuntulinux.org/wiki/UbuntuWorldWide
--------------------------

Note:
This is HOWTO to burn the installation CDs in Microsoft Windows.

1) Browse to http://www.deepburner.com/?r=download

2) Download the "Deep Burner Free" package. Install and run the program.

3) Select "Burn ISO image" option to create the CDs. Select the
downloaded ISO-file and let it burn! Use 700Mb CD size.

You will find additional information on
-> http://www.futuredesktop.org/how2burn.html

--------------------------

Please join to this great revolution of free computing and bring Ubuntu
and good will to all people.

With very best wishes,

Sincèrement
Moma
http://www.futuredesktop.org/how2burn.html
http://www.futuredesktop.org/OpenOffice.html
-----------------------------------------------------------------

PS. If you cannot download Ubuntu, the free shipment service will send
it to you :) http://www.ubuntulinux.org/shipit/link_view



Cyrille Szymanski wrote:

Bonjour,

Je me pose la question de savoir jusqu'à quel point le Hardware
Abstraction Layer est, justement, une abstraction ?

La définition que j'ai trouvé est "A thin layer of software *provided
by the Hardware Manufacturer* that hides, or abstracts, Hardware
differences from higher layers of the Operating System".

Le terme qui me gêne est justement le fait que ce soit le constructeur
qui fournisse le HAL. Cela veut-il simplement dire que par exemple
pour qu'un nouveau bus soit supporté il faut que le constructeur du
bus fournisse un HAL ? Dans ce cas, quel est le niveau d'abstraction
? Qui définit quelles opérations offre cette couche ?

Ou au contraire le HAL est-il intimement lié au matériel, dans ce cas
quelle est la différence avec un driver qui expose une interface à peu
près standard à l'OS (comme NDIS par exemple) ?





Avatar
Cyrille Szymanski
"Vincent Burel" wrote in
news:42a5ad05$0$20253$:

Mais la couche HAL n'est normalement utilisée que par les composants
Direct-X.



Ah ben zut je pensais que c'était beaucoup plus générique comme approche.

--
Cyrille Szymanski
Avatar
Vincent Burel
"Cyrille Szymanski" wrote in message
news:
"Vincent Burel" wrote in
news:42a5ad05$0$20253$:

> Mais la couche HAL n'est normalement utilisée que par les composants
> Direct-X.

Ah ben zut je pensais que c'était beaucoup plus générique comme approche.



non, HAL c'est très spécifique jeux vidéo, donc accroché au DX.
regardez WDM peut-être.

VB
Avatar
Cyrille Szymanski
"AMcD®" wrote in
news:42a5cdb0$0$16152$:

Le HAL fait de l'abstraction pour eux, en ce sens que ces modules se
contentent d'appeler des routines du HAL, quel que soit le matos géré
en dessous.



Oui oui, mais en fait ma question n'est pas là. Je me doute bien qu'un
bidule qui s'appelle "Hardware Abstraction Layer" est une couche qui
permet aux drivers d'accéder au matériel de façon plus ou moins
générique. Toute la question réside dans le "plus ou moins".

Je vois très bien à quel niveau se situe HAL, mais je ne sais pas
quel *niveau de détail* offre cette couche.

Pour reprendre l'exemple des bus de données je peux très bien définir
une interface qui me permet tout simplement d'envoyer et de recevoir des
données dessus (très proche du matériel) ou au contraire offrir une
gestion de plus haut niveau en créant des entités qui représentent le
matériel présent sur le bus (avec des fonctions comme la découverte de
périphériques, la gestion de leur attachement etc.). Les deux approches
sont des HAL, mais elles n'ont pas le même niveau de détail.

Poussée à l'extrême ma question serait de savoir si HAL fait une
abstraction totale du code spécifique au bus (si un même périphérique
pouvait se connecter à deux bus différents, pourrait-on utiliser le même
code de driver) ?

La gestion très fine a l'avantage de permettre aux drivers de profiter
tout de suite des améliorations du bus, par contre on est obligés de
dupliquer le code de gestion - avec tous les bugs et les problèmes de
maintenance que ça implique.


"An NT-based operating system component that provides
platform-specific support for the NT kernel, the I/O manager,
kernel-mode debuggers, and the lowest-level device drivers. The HAL
exports routines that abstract platform-specific hardware details
about caches, I/O buses, interrupts, and so forth, and provides an
interface between the platform's hardware and the system software. For
example, the HAL implements a routine to map each device driver's
bus-relative device interrupt vector to a system-assigned vector with
a corresponding platform-specific hardware priority (DIRQL), as well
as several routines that provide DMA-transfer support."



http://msdn.microsoft.com/library/default.asp?url=/library/en-us/kmarch
/hh/kmarch/k103_ed5017ca-1c0e-4d56-9df2-dfa14dc5c27d.xml.asp



Ce qui me frappe quand je lis la définition du DDK et quand je regarde
les routines que tu m'as données c'est que je vois des choses comme
read_port/write_port ce qui me fait penser à une gestion très proche du
matériel et d'autre part une couche qui fait plein de choses toute
seule.


Finalement HAL est-elle une bonne interface pour le matériel ?
Conceptuellement je pense qu'un HAL est une bonne idée, mais ça donne
quoi en pratique dans *le* HAL NT ?

Si demain le bus PCI subit une amélioration, comme par exemple un mode
DMA étendu, et qu'une carte réseau exploite cette fonctionnalité, HAL
est-il assez générique pour que les drivers puissent tirer parti de
cette nouveauté ou faut-il attendre du Microsoft mette HAL à jour ?

Et en fin de compte, et c'est ce qui a motivé ma question, HAL est-il
une bonne interface si un jour on veut écrire des drivers indépendants
de l'architecture des machines ? (sachant qu'un driver qui utilise HAL
est une couche entre HAL et le système, ce qui supposerait qu'il y ait
un standard défini au niveau du système).

--
Cyrille Szymanski
Avatar
Cyrille Szymanski
moma wrote in
news:aZlpe.11858$:

Excuses!

HAL acronym is actually used both in Microsoft Windows NT and Linux.



Oui, mais c'est pertinent aussi sur Linux.

Ça me fait penser justement à XFree86 et à tous leurs drivers vidéo
indépendants de la plateforme. Ils ont bien mis en place un système HAL
qui fonctionne relativement bien, mais je ne sais pas le comparer à celui
de NT.

And please, read the enclosed letter.





Aucun rapport.

PS: écrivez en français dans la hiérarchie fr.*
--
Cyrille Szymanski
Avatar
adebaene
Vincent Burel a écrit :
"Cyrille Szymanski" wrote in message
news:
> "Vincent Burel" wrote in
> news:42a5ad05$0$20253$:
>
> > Mais la couche HAL n'est normalement utilisée que par les composants
> > Direct-X.
>
> Ah ben zut je pensais que c'était beaucoup plus générique comme a pproche.

non, HAL c'est très spécifique jeux vidéo, donc accroché au DX.
regardez WDM peut-être.



Raté, la HAL se situe en dessous du kernel et couvre *tous* les
aspects de la communication avec le hardware : interrupts, DMA, I/O,
etc... Rien à voire avec DirecX (ou alors indirectement). cf. "Inside
Windows 2000" (comme toujours) pour les détails...

Arnaud
MVP - VC
Avatar
Vincent Burel
wrote in message
news:

Vincent Burel a écrit :
non, HAL c'est très spécifique jeux vidéo, donc accroché au DX.
regardez WDM peut-être.





Raté, la HAL se situe en dessous du kernel et couvre *tous* les
aspects de la communication avec le hardware : interrupts, DMA, I/O,
etc... Rien à voire avec DirecX (ou alors indirectement). cf. "Inside
Windows 2000" (comme toujours) pour les détails...



HAL est une couche drivers, c'est normal qu'elle s'occupe de gérer des
aspect Hardware tels que interruption, I/O, éventuellement DMA (ce qui
devient rare aujourd'hui, les I/O se font maintenant par de la mémoire
mappée).

En 1997/1998 je me rappelle avoir pris connaissance que la couche HAL,
initialement élaboré pour le DX (appelé ActiveMovie à cette époque) et que
c'était pour proposer une seconde couche de driver plus performant,
notamment pour faire des jeux vidéo sous windows. D'ailleurs on appelle
familièrement la couche HAL : Driver Direct-X.

Donc, je vous pose la question, que vouliez vous nous dire exactement !?
qu'il semble que la couche HAL ait été généralisé sous Win 2000 / XP et ne
se cantonne plus seulement au DX !? Si c'est ca, baissez d'un ton, et
précisez nous ce que vous avez lu ou compris de vos brillantes références.
Allez, essayer d'être intelligent pour voir ! :-)

VB
1 2 3 4 5