Linux 커널은 BIOS를 통해 하드웨어에 액세스합니까, 아니면 하드웨어와 직접 상호 작용합니까?

Linux 커널은 BIOS를 통해 하드웨어에 액세스합니까, 아니면 하드웨어와 직접 상호 작용합니까?

제가 이해한 바에 따르면 BIOS는 1) 하드웨어를 초기화하고, 2) 특정 위치로 점프하여 부트로더를 RAM에 로드합니다. BIOS가 하드웨어 초기화를 수행할 때 일부 루틴(예: 올바른 레지스터 비트, 지연 등 설정)을 실행해야 합니다. 내가 묻는 질문은 이러한 BIOS 루틴이 다음과 같은지 여부입니다.

  1. BIOS 루틴이 Linux 커널에 의해 호출됩니까, 아니면 Linux 커널 드라이버가 필요한 루틴을 다시 구현합니까?

  2. BIOS가 어셈블리 언어로 작성되어 있습니까? 아니면 일종의 하드웨어 정의 언어로 작성되어 있습니까?

답변1

  1. 때에 따라 다르지. 대부분의 경우 커널은 시스템 펌웨어를 거치지 않고 하드웨어를 직접 구동하지만 어떤 경우에는 펌웨어에서 제공하는 기능에 의존합니다.예를 들어ACPI를 통해).

  2. 원래 PC BIOS는 어셈블리 언어로 작성되었습니다(소스 코드는 IBM 기술 참조 매뉴얼에 포함되어 있음). 최신 PC 시스템 펌웨어는 C로 작성되었습니다.천누오 코어.

관련 정보