바이오스
바이오스(BIOS; Basic Input/Output System)는 운영 체제 중 가장 기본적인 소프트웨어이자 컴퓨터의 입출력을 처리하는 펌웨어다. 사용자가 컴퓨터를 켜면 시작되는 프로그램으로 주변 장치(하드웨어)와 컴퓨터 운영 체제(소프트웨어) 사이의 데이터의 흐름을 관리한다. 펌웨어(firmware)의 한 종류로서 IBM호환 컴퓨터의 경우에 전원이 공급되면 시작되는 부팅 절차에서 하드웨어 초기화를 수행하고, 운영체제나 응용 프로그램에게 런타임 서비스(컴퓨터 프로그램의 실행을 지원하는 서비스)를 제공한다. 바이오스 펌웨어는 PC에 내장되어 있어서 전원이 인가되면 실행이 시작되는 최초의 프로그램이다. 바이오스라는 이름은 1975년도에 사용된 CP/M 운영체제의 Basic Input/Output System에서 유래하였다. 원래는 IBM의 소유였으나 많은 회사들이 원본 프로그램을 분석(리버스 엔지니어링)하여 호환 프로그램을 개발하였다. 현대 PC에서 바이오스는 하드웨어 부품을 초기화하고 검사하는 역할, 부트로더 또는 대용량 저장장치에 저장된 운영체제를 RAM으로 읽어오는 기능을 수행한다.
넓은 의미로 컴퓨터에 탑재된 프로그램 중에서 하드웨어와 가장 낮은 수준에서 입출력을 담당하는 프로그램을 가리킨다. 좁은 의미의 정의에선 IBM-PC 호환 기종에 탑재된 것을 말하며, 보통 이 뜻으로 쓰인다. 바이오스는 컴퓨터에서 하드웨어와 소프트웨어의 중간 형태를 가지는 펌웨어의 일종으로, 대부분 소프트웨어가 하드웨어를 제어하고 하드웨어에 의해 변경되거나 생성된 정보를 소프트웨어에서 처리할 수 있도록 전달하는 등 인간의 신경망과 같은 기능을 수행한다.
역사
[편집]“ |
/* C P / M B A S I C I / O S Y S T E M (B I O S) COPYRIGHT (C) GARY A. KILDALL JUNE, 1975 */ [...] /* B A S I C D I S K O P E R A T I N G S Y S T E M (B D O S) COPYRIGHT (C) GARY A. KILDALL JUNE, 1975 */ |
” |
바이오스(BIOS, Basic Input/Output System)라는 용어는 게리 킬달[2]이 발명하였으며, 1975년 CP/M 운영 체제에 처음 등장하였는데[1][3][4][5], 하드웨어와 직접 연결되는 부팅 시간 동안 불러들이는, 기기에 특화된 CP/M의 일부로 기술하고 있다.[3] (CP/M 기기는 일반적으로 ROM에 하나의 부트 로더만 있었다.)
저장 매체
[편집]바이오스를 저장하는 매체로 초기에는 롬이 주로 사용되었으나 정보화의 발전 속도가 증가되고 새로운 기기나 매체의 발매 주기가 짧아짐에 따라 현재의 플래시 메모리가 바이오스의 주된 저장 매체로 쓰이기 시작했다. 하지만 플래시 메모리를 이용한 편리함은 1990년대 후반에 바이오스를 손상시키는 바이러스의 등장으로 수많은 컴퓨터를 무력화시키는 사태를 겪기도 했다. 대표적인 예로 CIH 바이러스를 들 수 있다. (다만 이 바이러스는 윈도 NT 계열 이후의 운영 체제에서는 동작하지 않으므로 현대에는 큰 문제로 여겨지지 않는다.)
이전까지 바이오스는 롬에 담겨 컴퓨터에 미리 맞춰진 형태로 제공되었다. 롬 라이터(ROM Writer)라고 불리는 기록 장치 없이는 바이오스의 내용을 바꿀 수 없는 것이 보통이었다. 그러나 1990년대로 들어서면서 바이오스의 저장매체로 기존의 마스크 롬이나 이피롬이 아닌 플래시 메모리를 사용한 제품이 일반화되었는데, 이것으로 예상치 못했던 문제점을 해결하거나 새로운 장치나 기기를 지원하기 위해 별도의 기록 장치 없이 PC에서 프로그램을 실행해 바이오스의 내용을 간편하게 바꿀 수 있게 되었다. 그러나 바이오스의 내용을 갱신할 때 정전 등을 비롯하여 예기치 못한 상황에서 기록이 정상적으로 되지 못하면, 그 컴퓨터는 시동조차 할 수 없게 되어 버린다. 바이오스는 컴퓨터의 하드웨어와 소프트웨어를 이어주는 신경망과 같은 프로그램으로 그 내용이 손상되면 BIOS 설정 화면을 띄울 수도 없다. 이렇게 손상된 바이오스를 복구하는 방법은 바이오스가 탑재된 플래시 메모리를 교환하는 방법 밖에 없다.
제어
[편집]어댑터 카드의 펌웨어를 시동 과정에서 실행하기 위해 BIOS는 POST 과정 중에 메모리를 검사해서 실행할 펌웨어를 찾는다. 0xC0000h ~ 0xF0000h의 메모리 영역을 2킬로바이트 단위로 나누어서 각각의 첫 2바이트를 읽는데, 만약 2바이트의 값이 0xAA55h 일 경우 실행해야 하는 펌웨어이므로 4번째 바이트로 넘어가서 펌웨어의 코드를 실행한다.
이전에는 응용 소프트웨어가 주변 기기를 제어할 때 입출력 포트를 직접 만질 것 없이 바이오스가 제공하는 서브루틴을 불러 제어가 이루어지고 있었다. 그러나 최근에는 이 역할을 운영 체제가 대신 수행하여 응용 프로그램은 바이오스를 사용하지 않고, 운영 체제가 준비한 API 등을 거쳐 바이오스가 제공하는 기능을 사용하게 되었다.
BIOS 외의 펌웨어의 실행
[편집]BIOS (=메인보드의 펌웨어)는 컴퓨터의 기본적인 하드웨어 장치들 (키보드, 플로피 디스크, 하드디스크) 에 접근해서 제어할 수 있다. 다만 여러 가지 제약사항이 있으며, 일부 플러그인 어댑터들(SCSI, NIC, 비디오 등)의 경우 BIOS 대신 독자적인 펌웨어를 장치에 포함시켜 그 장치용 펌웨어가 해당 장치를 제어하도록 한다. 이렇게 BIOS에서 호출하는 펌웨어를 옵션 롬 이라고 부른다.
같이 보기
[편집]각주
[편집]- ↑ 가 나 Kildall, Gary A. (June 1975), 《CP/M 1.1 or 1.2 BIOS and BDOS for Lawrence Livermore Laboratories》
- ↑ Swaine, Michael (1997년 4월 1일). “Gary Kildall and Collegial Entrepreneurship”. 《Dr. Dobb's Journal》. 2006년 11월 20일에 확인함.
- ↑ 가 나 Kildall, Gary A. (January 1980). “The History of CP/M, THE EVOLUTION OF AN INDUSTRY: ONE PERSON'S VIEWPOINT” Vol. 5, No. 1, Number 41판. Dr. Dobb's Journal of Computer Calisthenics & Orthodontia. 6–7쪽. 2013년 6월 3일에 확인함.
- ↑ Killian, A. Joseph "Joe" (2001). “Gary Kildall's CP/M: Some early CP/M history - 1976-1977”. Thomas "Todd" Fischer, IMSAI. 2012년 12월 29일에 원본 문서에서 보존된 문서. 2013년 6월 3일에 확인함.
- ↑ Fraley, Bob; Spicer, Dag (2007년 1월 26일). “Oral History of Joseph Killian, Interviewed by: Bob Fraley, Edited by: Dag Spicer, Recorded: January 26, 2007, Mountain View, California, CHM Reference number: X3879.2007,” (PDF). Computer History Museum. 2014년 7월 14일에 원본 문서 (PDF)에서 보존된 문서. 2013년 6월 3일에 확인함.