[유혁 교수의 운영체제] 1차 과제 HAL

HAL(Hardware Abstraction Layer)

  • 정의

    HAL은 컴퓨터의 하드웨어와 소프트웨어 사이의 추상화 계층으로, 하드웨어의 차이를 숨겨서 응 용 프로그래밍 작동할 수 있는 일관된 플랫폼을 제공한다. 즉, 하드웨어의 세부사항과 무관하게 하드웨어 지향적 운영을 할 수 있도록 상위계층에 API 기반 서비스를 제공한다.

  • 필요성

    과거에는 운영체제의 커널이 하드웨어를 조작하기 위한 추상적 인터페이스를 제공하였고, 이 인 터페이스를 통해서 하드웨어 IO를 디바이스 노드에 실행했다. 하드웨어 종류가 많지 않던 과거에 는 가능한 일이었다. 그런데 PC가 발전할수록 PC에 쓰이는 하드웨어의 종류는 셀 수 없이 늘어나 게 되자, 운영체제에 각각의 하드웨어가 작동될 수 있는 방식과 특성에 관한 정보를 모두 커널에 넣는 방식을 취하면 커널이 너무 무거워지는 문제가 발생했다. 이 문제를 해결하기 위해 하드웨어 차이에 상관없이 커널이 하드웨어를 인식하고 작동할 수 있는 방법으로써 HAL이 사용되었다.

  • 작동 원리

    HAL의 작동원리는 다음과 같다. HAL은 PC에 쓰이는 각각의 하드웨어들에 대한 접근을 검색, 열 거, 중재하고, 응용프로그램들은 하드웨어를 추상화하는 D-Bus IPC 메커니즘을 통해서 HAL과 통 신한다. 각각의 하드웨어는 D-Bus 개체로 정의되고 고유의 주소를 식별자로 사용한다. 기기의 기 능은 D-Bus 인터페이스를 통해 응용프로그램에 노출되고, 속성은 키-값 집합의 형태로 접근된다. 각각의 하드웨어들에서 나타나는 변화를 하드웨어 이벤트라고 칭하며, HAL은 해당 하드웨어 객체 에 대한 신호로 브로드 캐스트를 하여 응용프로그램에게 하드웨어 이벤트를 전달하게 된다. 따라 서 HAL은 카메라가 연결되거나 DVD가 돌아가거나, 노트북 덮개가 덮이는 등의 하드웨어 이벤트 를 감지하고 소프트웨어에게 이를 전달하여 이에 따라 반응할 수 있도록 한다.

  • 장점

    HAL의 장점은 하드웨어가 변경되더라도 소프트웨어가 큰 변동 없이 작동할 수 있는 플랫폼을 제공한다는 것이다. 예를 들어, 워드 프로그램에서 문서를 출력하려고 하는데 프린터가 바뀌었을 때, HAL이 없었다면 바뀐 드라이버에 대한 정보가 워드 프로그램에 갱신되어야 했을 것이다. HAL 은 커널이 각 하드웨어의 구체적인 정보들을 모두 저장할 필요 없이 추상화된 인터페이스에 의존 할 수 있도록 하므로, 모든 응용 프로그램이 드라이버 정보의 변화에 상관없이 작동할 수 있다.

출처

  1. http://ww1.microchip.com/downloads/en/DeviceDoc/hardware-abstraction-layer.pdf
  2. https://en.wikipedia.org/wiki/HAL_(software)
  3. https://m.cafe.daum.net/ohuohu/5ljn/13?q=D_23ESpBVz-JU0&
  4. https://ko.wikipedia.org/wiki/하드웨어_추상화#:~:text=하드웨어%20추상화%20계층(HAL% 2C%20Hardware,사이의%20추상화%20계층이다.&text=운영%20체제는%20하드웨어%20추상화,있 게%20해주는%20것으로%20정의한다.
  5. https://coder-in-war.tistory.com/entry/Embedded-23-HAL%ED%95%98%EB%93%9C%EC%9B%A8%EC%96%B4-%EC%B6%94%EC%83%81%ED%99%94-%EA%B3%84%EC%B8%B5
  6. https://idsn.tistory.com/23

Comments