BIOS(Basic Input/Output System)는 펌웨어의 한 종류로서 사용자가 컴퓨터를 켜면 시작되는 프로그램으로 주변 장치와 컴퓨터 운영 체제 사이의 데이터의 흐름을 관리합니다. 그리고 부팅 절차에서 하드웨어 초기화를 수행하고, 운영체제나 응용 프로그램에 런타임 서비스를 제공합니다. 원래는 IBM의 소유였으나 많은 회사가 원본 프로그램을 분석하여
호환 프로그램을 개발했습니다. 시간이 흘러 지금의 BIOS는 하드웨어 부품을 초기화하고 검사하는 역할, 부트로더 또는 대용량 저장장치에 저장된 운영체제를 RAM으로 읽어오는 기능을 수행하게 되었습니다. BIOS는 이제는 거의 안 쓰게 되었고 UEFI 같은 다른 펌웨어가 대체하게 되었지만 바이오스라는 말이 익숙하기 때문에 아직도 바이오스라 부릅니다
BIOS를 저장하는 매체로 예전에는 ROM을 주로 썼지만, 현재는 플래시 메모리를 주로 사용하게 되었으며 플래시 메모리는 덮어쓰려면 롬 라이터(ROM Writer)가 필요한 ROM과 달리 별도의 writer 없이 덮어쓸 수 있어 BIOS를 업데이트하는 데에 편리해졌지만 BIOS가 컴퓨터가 켜지면 가장 먼저 시작되고 하드웨어 부품을 초기화하거나 부트로더 또는 OS를 불러오는 등 여러 가지 중요한 일을 하므로 BIOS를 망가트리는 바이러스도 생기기도 했으며 BIOS를 업데이트하는 도중 정전 등 예기치 않은 상황으로 인해서 BIOS 기록이 정상적으로 되지 않는다면 컴퓨터를 아예 켤 수 조차 없기 때문에 손상된 바이오스를 복구하는 방법은 바이오스가 탑재된 플래시 메모리를 교환하는 방법밖에 없습니다.
일부 플러그인 어댑터들(SCSI, NIC, 비디오 등)의 경우 BIOS 대신 독자적인 펌웨어를 장치에 포함해 그 장치용 펌웨어가 해당 장치를 제어하도록 하는데 이렇게 BIOS에서 호출하는 펌웨어를 옵션 롬이라고 부릅니다.
0. CPU가 정상적으로 작동하게 하기 위해 CPU를 초기화합니다.
1. CPU 레지스터에 하드 코딩된 JUMP 명령어를 실행합니다.
2. CPU가 ROM에 미리 정의된 BIOS가 위치한 메모리 위치로 이동합니다.
3. CPU가 ROM에서 BIOS를 직접 실행합니다.
4. BIOS가 POST(Power On Self Test)를 수행합니다.
4-1. POST의 주요 과정들
- CPU 레지스터 확인
- BIOS 코드 자체의 무결성 확인
- DMA, timer, interrupt controller와 같은 일부 기본 구성 요소 확인
- 시스템 메인 메모리의 초기화, 크기 측정, 검증
- BIOS 초기화
- 다른 특수 확장 BIOS에 제어권 전달 (설치된 경우)
- 부팅에 사용할 수 있는 장치 식별, 구성 및 선택
4-2. 개선된 버전의 POST의 추가적인 작업
- 칩셋 초기화
- 모든 시스템 버스 및 장치 검색, 초기화 및 카탈로그화
- 시스템 구성을 위한 사용자 인터페이스 제공
- 운영체제에 필요한 모든 시스템 환경 구성
4-3. POST 중 발생한 오류
5. 파티션 테이블을 RAM에 로드하고 첫 번째 파티션은 첫 번째 파티션의 부트로더를 실행합니다.
6. 부트로더가 OS를 Real Mode에서 커널을 조기 초기화합니다.
7. Protected Mode로 전환한 후 커널을 전체 초기화합니다.
8. 커널을 RAM에 로드하고 통제권을 커널로 넘깁니다.
OS로 통제권이 넘어가고 부팅(Bootstrapping) 끝!!!
'해킹 > 과제' 카테고리의 다른 글
0. 레지스터, 캐시, 램, 클럭 설명 (0) | 2021.04.16 |
---|---|
2. 메모리들의 작동 방식 - RAM (0) | 2021.04.09 |
1. 메모리들의 작동 방식 - ROM (0) | 2021.04.06 |
2-1. 컴퓨터 부팅 과정 - UEFI (0) | 2021.04.06 |
1. 컴퓨터 부팅 과정 - 파워 서플라이 (0) | 2021.04.05 |