HAL

Hardware Abstraction Layer harflerinin kısaltılmışı.

Bilgisayar donanım ve yazılımdan oluşur. Donanımı en altta, işletim sistemini ortada ve uygulamaları en üstte düşünerek aklınızda görselleştirebilirsiniz. Word programını düşünün. Word'de bir yazı yazıp, kaydet tuşuna bastığımızda bu işlem bir saniye içinde gerçekleşir. Biz de bunun çok basit bir şey olduğunu sanırız. Halbuki verileriniz, klavyeden RAM'e, ordan data veriyolu vasıtasıyla disk'e kaydolur. Bu yol boyunca, n sayıda farklı donanım olabilir. RAM farklı olabilir, sabit disk farklı olabilir, CPU farklı olabilir. Herbirinin çalışma mantığı, istediği komutlar farklı olabilir.

Samsung marka diskin ilk sektörüne ö yazmak için gereken kod, 11001010101010 iken,

Seagate marka diskin ilk sektörüne ö yazmak için gereken kod, 0001010001010100101010101 olabilir.

Eğer işletim sistemleri olmasaydı, word programının içinde tüm bu bilgilerin bulunması gerekirdi. Yani samsung marka diske kayıt şu komutla olacak, seagate ise şöyle olacak gibi.. Bu da Word'un 200 mb değil de, 200 gb lık bir alan kaplaması ile sonuçlanabilirdi.

İşte bunu API'ler ile aşıyoruz. İşletim sistemimiz,  üzerinde yüklü gelen ya da bizim yüklediğimiz sürücüler vasıtasıyla, Seagate ya da Samsung marka bir diske veri yazmak için gereken tüm low-level (makine dili) ve sıkıcı rutinleri bilmektedir. Word'un tek yapması gereken, işletim sisteminin bu hayırlı servisini (API) kullanması ve daha basit (diske kaydet'in biraz teknik haldeki komutu) komutlarla işini görmesidir.

Bu yukarı seviyede (uygulama ve işletim sistemi arasında) gerçekleşen işlemi, daha alt seviyede düşünün. İşletim sistemi de, donanıma erişmek isteyecektir. Ve her farklı donanım için farklı komut setleri kullanması gerekir. Bu da, işletim sistemi geliştiricilerini yormuş olsa gerek. Bu yüzden, HAL ismiden bir yazılım arabirimi gerçekleştirmişler. Bu yazılım sayesinde, altta yatan donanım ne olursa olsun yazılım geliştiriciler hep aynı donanıma kodluyorlar gibi yazıyorlar. A donanımı için farklı , B donanımı için farklı komut yazılmıyor. Bu çevrimi, HAL hallediyor.