본격적으로 PC가 보급되기 시작한 지도 꽤 된다. 일찍 만지기 시작한 사람들은 PC를 통해 돈벌이가 가능할 만큼의 실력을 쌓았다. 하지만 어느 순간이고 초보자는 있는 법. 과학동아는 앞으로 6회에 걸친 연재를 통해 이 순간 초보자임을 인정하는 컴퓨터 이용자들을 적어도 중급 이상의 실력자로 만들 예정이다.
도미노 게임을 이용한 어느 페인트 회사의 TV광고가 있다. 최초의 팻말을 무너뜨리면 이웃하고 있는 팻말들이 연속적으로 무너지면서 모자이크 화법의 그림이 펼쳐진다.
PC의 전원 스위치를 올리면 비슷한 도미노 현상이 얼어난다. 10여초간 진행되는 이 도미노는 눈에 보이지 않는다. 그러나 이 10여초간의 도미노는 물리적인 기계를 논리적인 차원으로까지 끌어올리는 마법의 과정이다. 우리는 이 과정을 부팅(Booting)이라고 부른다. 오늘의 주제는 10여초간에 일어나는 PC의 묵언(黙言)을 이해하는 것이다.
기계도 기억하고 처리할 수 있다
사람이 육체와 정신으로 이루어져 있듯이 컴퓨터는 하드웨어와 소프트웨어로 이루어져 있다. 하드웨어가 컴퓨터 기기 그 자체를 말하는 것이라면 소프트웨어는 그 기계를 움직여주는 체계화된 논리다. 소프트웨어란 인간의 논리적 사고방식을 특수한 저장매체에 기록한 다음 그 순서에 의해 기계가 움직이도록 만든 것이다. 어떻게 인간의 논리가 기계를 움직일 수 있을까?
컴퓨터의 전원 스위치를 올리는 일에서부터 프롬프트가 뜨기까지의 10여초간(부팅과정)에는 하나의 논리가 기계를 살아나게 한다. 컴퓨터에는 각각의 장치들 사이에서 명령과 데이터들의 흐름을 컨트롤하는 프로그램이 자리를 잡고 시스템을 사용자 마음대로 조작할 수 있게 해주는 과정이 필요한 것이다. 이같이 반복적인 하나의 절차가 수행되는 과정이 부팅이다.
부팅은 크게 두 가지 과정으로 이루어진다. 하나는 포스트(POST : Power On Self Test, 자체 진단 프로그램)이고 다른 하나는 부트스트랩(Bootstrap)이다. 포스트는 컴퓨터 시스템의 자체점검 과정이고 부트스트랩은 플로피디스크나 하드디스크에 있는 시스템 파일들을 메모리로 끌어올리는 과정이다. 이 두개의 과정을 연속적으로 처리하는 프로그램은 바이오스롬(BIOS-ROM)에 들어 있다.
롬은 읽기 전용 메모리(Read Only Memory)로서 컴퓨터에서 항상 필요한 반복적인 과정 등이 고착화된 메모리를 말한다. 일반적인 메모리는 전원이 들어와 있을 때에만 무엇인가를 기억할 수 있는데 반해 이 롬은 제조과정에서 특정 논리를 회로로 심어놓은 것이기 때문에 전원이 있든 없든 그 내용이 유지되며 사용자가 지울 수도 없다. 컴퓨터의 전원 스위치를 올리면 바로 롬에 들어있는 프로그램이 실행되는 것이다. 그래서 컴퓨터를 켤 때마다 롬에 들어있는 프로그램이 도미노처럼 실행되는 것이다.
자체 진단 프로그램의 실행 - POST
1. PC의 전원 스위치를 올린다. 전원공급장치(PC의 뒷면에 선풍기 같은 팬이 달려 있는 장치)는 전원을 검사해 모든 전압과 전류가 적당하고 전원이 안정되었을 때 메인보드로 'Power Good'이라는 신호를 보낸다.
2. 'Power Good' 신호를 받은 마이크로프로세서(CPU)는 바이오스롬에 있는 코드(논리)를 실행한다.
3. 바이오스롬에 가장 먼저 들어있는 절차는 시스템의 기본 기능을 검사하기 위해 중앙 하드웨어 부분의 테스트를 실행한다(CPU 레지스터, 메모리 리프레시-메모리의 주기적인 충전-를 위한 타이머, DMA IC 초기화, 인터럽트 벡터를 메모리로 옮기고 스택(Stack)공간 확보 등). 이 과정에서 문제가 있으면 컴퓨터는 에러 메시지를 화면 아닌 삑삑 하는 소리로 알려준다. 아직 비디오 카드의 테스트를 거치지 않았기 때문에 에러 메시지를 화면상에 출력할 수는 없고 비프(Beep)음을 통해 알려주는 것이다.
4. 바이오스롬은 비디오카드와 키보드를 검사한다. 이상이 없으면 이제 화면상에 글자가 찍혀 나온다. 키보드의 램프들이 반짝하는 것이 이 과정에 해당한다.
5. 메모리 용량을 확인하고 테스트한다. 틱틱거리는 소리와 함께 모니터에 메모리의 용량이 체크되는 것이 보인다.
6. 직렬포트와 병렬포트를 점검하고 초기화한다.
7. 플로피디스크 드라이브를 점검하고 초기화한다. 플로피디스크 드라이브에 불이 들어왔다 나간다.
8. 하드디스크 드라이브를 점검하고 초기화한다. 자신의 컴퓨터에 있는 바이오스롬을 만든 회사가 AMI(American Megatrends Inc.)라면 이 단계에서 삑 소리와 함께 화면이 바뀌면서 직사각형 속에 자체진단 결과를 보여준다. 물론 바이오스롬을 만든 회사가 AWARD나 PHOENIX라면 이와는 다른 모습으로 검사결과를 보여줄 것이다.
자체진단(POST)이 끝나면(하드웨어들에 이상이 없으면) 바이오스롬은 부팅의 제2단계를 실행한다. 2단계는 부트스트랩이다.
시스템 파일의 로딩-부트스트랩
시스템의 부트스트랩은 디스크에 저장되어 있는 운영체계(Operating System)를 메모리로 끌어올려서 마이크로프로세서로 하여금 각 주변장치들과의 사이에 명령 실행과 데이터 교환이 가능하도록 만드는 과정이다. 자체진단을 무사히 마쳤다고 하더라도 이 운영체계를 메모리로 끌어올리는데 실패한다면 PC는 한낱 고철덩어리에 지나지 않는다.
MS-DOS라는 운영체계를 사용하는 컴퓨터라면 다음의 3개 파일이 반드시 필요하다. 원래 운영체계는 꽤 명치가 큰 프로그램이지만 가장 기본적인 파일은 이 3개이며 이 파일만 있으면 일단 부팅이 이루어지게 된다.
io.sys : 모든 주변 입출력 기기들과의 통로를 여는 프로그램
msdos.sys : 사용자의 명령과 io.sys 사이를 연결해 주는 프로그램
command.com : 명령어 처리 프로그램으로, 사용자의 명령을 해석한다.
이 외에 config.sys와 autoexec.bat 파일이 더 있지만 없더라도 부팅은 된다.
1. 마이크로프로세서는 바이오스롬에 기록된 대로 우선 A드라이브의 최초 섹터(실린더 0, 헤드 0, 섹터 0, 이 부분은 플로피디스크의 가장 바깥쪽 섹터이다)에서 도스 부트섹터를 찾는다. 만일 A드라이브에 운영체계가 들어 있는 디스켓이 들어있다면 여기서 이 파일들을 메모리로 끌어올린다.
2. 만일 A드라이브에 디스켓이 들어있지 않다면 하드디스크(C드라이브)의 최초 섹터를 점검하여 부트스트랩을 실행시킨다.
3. 부트스트랩은 디스크의 루트디렉토리를 검색해 io.sys라는 파일이 있는지를 찾아 메모리로 로드(LOAD) 시킨 후 시스템의 컨트롤을 그것에게 넘겨준다. io.sys파일이 실행돼 주변기기들에 대한 초기화 작업이 끝나면 다시 루트디렉토리에서 msdos.sys파일을 읽어들이며 다시 이것이 시스템의 컨트롤을 인계받는다.
4. msdos.sys는 루트디렉토리에서 config.sys파일이 있는지를 검사한 뒤 그 파일에 정의된 대로(사용자가 정의할 수 있다) 환경을 맞추어 준다. 예컨대 시스템에 마우스가 달려 있다고 그냥 마우스가 작동되는 것은 아니고 이 config.sys파일에 마우스를 작동시켜주는 프로그램 이름을 등록해 주어야 하는 것이다.
또 자신의 시스템에 메모리가 8MB라고 했을 때 1MB 이상의 연장메모리를 실제로 사용하려면 역시 config.sys파일에 다음 행이 삽입되어야 한다.
device=c:\dos\himem.sys
himem.sys는 도스 디렉토리 내에 있는데, 이 메모리 관리 프로그램을 config.sys 파일에 삽입하지 않으면 1MB 이외의 7MB는 물리적으로 달려있을 뿐 프로그램들이 그것을 이용할 수는 없기 때문에 고철덩어리에 지나지 않는다.
만일 루트디렉토리에 config.sys 파일이 없다면 msdos.sys는 자체 내에 설정되어 있는 기본 값들을 실행시킨다. 그러나 이 기본값내에 연장메모리 관리 프로그램이나 마우스 작동 프로그램들이 없기 때문에 추가로 장착된 자신의 하드웨어들을 쓸 수 없게 될 것이다.
5. msdos.sys는 config.sys 파일의 실행을 끝낸 후 다시 루트디렉토리에서 command.com 파일을 찾아 실행시킨다. command.com은 사용자의 명령을 처리하는 명령처리 프로그램으로, 키보드로 어떤 명령을 내렸을때 이를 해석하여 msdos.sys로 전달한다.
6. command.com이 실행되면 루트디렉토리에 autoexec.bat 파일이 있는지를 검사해 이를 실행한다.
7. 마지막으로 command.com은 프롬프트와 커서를 내보낸다. 이제 사용자의 명령을 처리할 수 있는 만반의 준비가 돼 있다는 뜻이다.
c:\>-
포스트 과정, 특히 비디오 카드의 초기화가 일어나기 전의 과정에서 에러가 발생하면 우리는 초조하다. 화면에 아무것도 나타나지 않기 때문이다.
흔히 PC를 조립하다보면 이런 경우에 자주 부딪히는데 AMI-BIOS를 장착한 컴퓨터들에서 나타날 수 있는 소리(비프음)들은 연속적으로 소리내는 횟수에 따라 대략 10가지 정도로 나뉜다(표1).
이 가운데 우리가 시도해볼 수 있는 것은 2,3번과 8번 정도다. 5,7번은 마이크로프로세서의 불량에 기인한 것으로 가장 치명적인 에러라고 할 수 있다. 그 외에 1,4번은 메모리 관련, 6번은 메모리 어드레스 라인을 관리하는 21번째 칩에 문제가 있는 것인데, 이 칩은 키보드컨트롤러 칩안에 포함돼 있다.
바이오스롬의 자체진단 프로그램이 비디오카드를 초기화한 후에는 모든 에러메시지가 화면상에 나타난다. 이 이후 바이오스롬에 있는 부팅 프로그램이 실행 도중 중단되는 경우는 크게 두 가지다. 하나는 CMOS SETUP이 잘못된 경우이고, 다른 하나는 시스템 파일이 손상된 경우이다. 두가지 모두 간단히 해결할 수 있다.
부팅이 되지 않을 때 의심해 볼 두가지
CMOS 셋업은 자신의 컴퓨터가 가지고 있는 하드웨어 구성을 부팅 전에 운영체계에 알려주는 통로다. 여기서 입력하는 값은 하드디스크의 실린더, 헤드, 섹터 등이 몇 개인가, 플로피디스크드라이브는 몇 MB짜리인가 등등인데 이 값들은 메인보드에 내장돼 있는 충전 배터리에 의해 컴퓨터가 꺼져있을 때에도 그 값이 유지된다.
AMI-BIOS의 경우 부팅 도중 CMOS-ROM의 잘못된 값 때문에 생기는 에러는 보통 2회의 비프음(삑삑), 연관된 문제와 함께 다음의 메시지를 동반한다.
Press 〈F1〉 to Resume
이런 경우 〈F1〉키를 누르면 바로 셋업 프로그램으로 들어가게 된다. 또 셋업의 설정에서 〈F1〉키를 누르라는 메시지가 나오지 않는 경우도 있는데, 이럴 때는 컴퓨터의 전원 스위치를 올린 후 4-5초 뒤에 나타나는 다음 메시지가 화면상에 나와 있을 때 〈DEL〉키를 누른다(AWARD-BIOS는 〈Ctrl+Alt+Esc〉, PHOENIX-BIOS의 경우에는 〈Ctrl+Alt+S〉키를 동시에 누르면 된다).
Hit 〈DEL〉 if you want to run SETUP
이 메시지는 1-2초 가량 화면상에 머물기 때문에 이 때 해당키를 눌러야 한다. 〈DEL〉키를 누르면 셋업화면으로 들어가는데 여기서는 가장 중요한 'STANDARD CMOS SETUP'을 살펴보자.
여기 항목중 나머지는 특별한 지식없이 설정할 수 있지만 하드디스크 타입은 반드시 알아두어야 한다. 하드디스크의 제조처와 제품명을 모두 알아야한다. 같은 용량의 하드디스크라 하더라도 이에 따라 실린더수, 헤드수, 섹터수가 다를 수 있기 때문이다.
그러나 이렇게 하드디스크 정보가 지워지기전에(PC에 문제가 생기기 전에) 미리 이 셋업 화면으로 들어온 다음 이 정보들을 메모해 두는 것이 가장 좋은 방법이다. 하드디스크에 대한 정보는 기본적인 것만 해도 46가지나 되며 사용자가 정의해서 쓸 수 있는 타입까지 치면 훨씬 더 많아지므로 처음에 따로 메모해 두는 것이 상책이다. 일반적으로 하드디스크타입의 값이 많이 풀리며, 이 값이 풀리면 부트스트랩은 하드디스크를 인식하지 못하므로 당연히 부팅에 실패하게 되는 것이다.
어쨌든 CMOS 셋업이 풀려 문제가 생긴 경우라면 〈DEL〉키를 눌러 셋업화면으로 들어온 다음 각 항목의 값을 맞추어주면 된다. 주로 항목간의 이동은 화살표 키로, 두개나 세개의 값 중 하나를 선택할 때는 〈PgUp〉이나 〈PgDn〉키를 사용한다. 하드디스크와 관련된 값들은 항목으로 이동한 후 직접 타이핑해서 넣으면 된다.
값의 지정이 끝났으면 〈ESC〉키를 눌러 주화면으로 돌아온 다음 'Write CMOS and Exit'를 눌러 셋업에서 수정한 값을 저장한 다음 빠져나온다.
시스템 파일의 손상에 대비한다
부팅의 전체과정 중 2단계는 부트스트랩이다. 그런데 바이오스롬이 디스크의 0트랙 0섹터에서 부팅에 관계된 정보를 찾는 도중 이 정보가 손상되었다면 당연히 부팅이 이루어지지 않게 된다.
앞에서 언급했듯이 부팅을 시키려면 기본적으로 세개의 파일이 있어야만 한다. 이 파일들과 긴요하게 쓰이는 몇 가지 파일들을 플로피디스켓에 준비시켜보자. 하드디스크의 도스디렉토리에 있는 이 파일들을 플로피디스켓에 복사해 놓으면 될 것이다. 그런데 이 파일들은 시스템 파일들이라고 특별대우를 하는 것인지 command.corn을 제외한 나머지 두개는 보이지도 않게 해놓았으며 일반적인 copy명령어로는 복사조차 할 수 없게 되어 있다. 이 파일들을 복사하려면 도스디렉토리에 있는 sys.com이라는 파일을 이용해서 다음과 같이해야 한다.
C:\DOS>;sys A:
이렇게 하면 위 세개의 파일이 디스켓으로 복사된다. 물론 A드라이브에서 DIR명령으로 보아도 command.com만 보이겠지만 나머지 두개도 같이 복사가 이루어진 것이다. 그러나 이 세개의 파일 말고도 요긴하게 쓸 파일들이 몇 개 더 있다. 그 중에서도 중요한 것은 방금 써먹었던 sys.corn이라는 파일인데 이 파일도 디스켓으로 복사해둔다.
C:\DOS>;copy sys.com A:
왜냐하면 A드라이브로 부팅을 한 다음 C드라이브를 검사해 본 결과 C드라이브의 command.com같은 파일이 손상되었으면 A드라이브에 있는 command.com을 다시 C드라이브로 복사해 주어야하며, 그러자면 다음과 같이 명령해야 할 것이다.
A:>;sys C:
만일 C드라이브의 command.com이 깨져서 부팅이 되지 않았었다면 이 조치만으로 끝난다. A드라이브에서 부팅디스켓을 빼내고 컴퓨터를 재시동해보라. 아마 부팅이 이루어질 것이다. 이 부팅디스켓에는 sys.com뿐만 아니라 V3.COM이나 NDD.EXE 같은 파일들도 같이 복사해 두면 응급처치시에 요긴하게 쓰일 것이다. 복사가 모두 이루어졌으면 반드시 디스켓의 오른쪽에 있는 홈을 쓰기방지탭으로 막아두는 것이 좋다. 바이러스 등으로부터 부팅디스켓을 보호하기 위해서. 그리고 다음과 같은 라벨을 붙여라.
"시스템 디스켓"