부팅 시 운영체제가 실행되는 과정
1. 바이오스 - BIOS (Basic Input Output System)
- 메모리와 CPU 레지스터를 초기화 시킨다.
- 디스크로부터 부트 로더를 불러 온다(부트 로더로는 grub나 lilo 등이 있다).
- 부트 로더는 디스크에서 OS 커널의 이미지를 찾아서 메모리로 불러오고 실행 시키는 역할을 한다.
2. 부팅(Booting)
booting의 사전적 의미는 원래 '장화를 신기다'라는 뜻이지만 농촌에서 하루 일을 시작하러 들로 나가기 위해 장화를 신는 것과 마찬가지로, 컴퓨터를 처음 동작시킬 때 수행되는 일련의 과정을 일컬어 부팅이라고 부르게 되었다는 견해가 있다.
잘 동작하고 있던 컴퓨터도 일단 전원을 끄고 나면 그 동안 기억하고 있던 정보를 모두 잊어버리고 완전히 기계덩어리로 변하고 마는데, 부팅은 이렇게 죽어있던 컴퓨터에 생명을 불어넣는 작업이다.
부팅을 위해 컴퓨터의 전원스위치를 켜면, 제일 먼저 롬 바이오스라고 불리는 기본적인 프로그램이 동작하게 되는데, 이 프로그램은 전원이 꺼지더라도 기억할 수 있도록 ROM이라는 메모리에 기록되어 있다. IBM PC 호환기종의 경우 부팅과정 중 가장 먼저 실행되는 것은, POST 즉 Power On Self Test라고 불리는 검사단계 인데, 이 과정에서 실행되는 작업은 롬 바이오스의 내용에 따라 다소 다르긴 하지만, 대개 메인 메모리로 사용되는 RAM과 키보드 그리고 하드디스크 등을 체크해보고 만약 여기에 문제가 있으면, 삑 하는 소리와 함께 에러메시지를 화면에 나타내고 부팅이 중단된다.
이러한 테스트들은 컴퓨터가 동작하기 위해 필수적인 주변장치들이 실제로 존재하고 또 기능적으로 문제가 있는지의 여부를 알아보기 위한 단계인데, 매우 짧은 시간 내에 끝난다. 그 다음에는 롬 바이오스에 있는 프로그램이 동작하면서, 아주 눈에 익은 화면이 나타나는데, 대개 바이오스 제작회사와 버전번호, 바이오스 일자, 롬 바이오스 셋업으로 갈 때 쓰는 키가 무엇인지와, 에너지스타 로고 등이 화면 상단에 표시되고, 이어서 시스템 구성에 관한 요약정보가 함께 보여지는데, 현재 설치되어 있는 마이크로프로세서의 종류는 무엇인지, Co-processor는 설치되어 있는지, clock speed는 얼마인지 등과 함께, FDD, HDD, CD-ROM Drive, 그리고 기본메모리 크기와 확장메모리 크기 등에 관한 정보를 테스트해 나가면서 계속 보여주게 된다.
이 단계가 끝나면 드디어 시스템의 운영체제 즉, Operating System을 읽어 메모리에 상주시키는 작업을 하게 되는데, 이 때에는 어느 드라이브에서 OS를 읽어올 것인지에 대한 정보를 롬 바이오스로부터 참조한다. 대개는 A: 드라이브를 최우선적으로 찾아보고, 그 다음에 C: 드라이브를 찾는 순서가 보통인데, 이것은 하드디스크에 물리적인 손상이 가해지더라도 별도로 보관해 둔 시동 디스켓을 이용해 부팅을 할 수 있도록 하기 위해서이다. 지금까지 얘기한 일련의 과정이 부팅이다. -조금 더 세밀하게 분류한다면 이것을 콜드부팅(cold booting)이라고 부른다.
- 콜드부팅 외에 웜부팅(warm booting)이라는 것이 있는데, 앞서 얘기한 과정에서 POST 즉 power-on self test 과정이 생략되는 것을 말한다.
컴퓨터는 이러한 부팅절차를 성공적으로 끝낸 뒤에야 비로소 사람들이 원하는 작업을 할 수 있게 되는데, 부팅이 무엇인지를 한마디로 요약해서 말한다면, '컴퓨터가 정상 가동되기 위해 사전에 취해지는 준비작업'이라고 이해하면 되겠다.
3. 부팅은 어떤 순서로 이루어지나?
참고로, 이 순서는 맥, 유닉스, OS/2 등 운영체계에 따라 조금씩 다를 수 있지만, 컴퓨터를 켰을 때 운영체제는 대개 다음 순서에 의해 자동으로 부팅이 된다.
1) 컴퓨터는 켜지자마자 컴퓨터 롬(ROM)에 들어있는 바이오스가 기동되며 임무를 시작한다. 바이오스는 롬에 저장되어 있기 때문에 램에 저장된 정보와는 달리, 컴퓨터를 끄더라도 그 내용이 지워지지 않는다.
2) 바이오스는 컴퓨터 부분품이 운영될 수 있는 상태인지를 확인하기 위하여 포스트(POST ; power-on self test)라고 불리우는 테스트를 수행한다. 그런 다음 바이오스의 부트 프로그램은 하드디스크에 있는 운영체제를 실제로 로드시키기 위한 특별한 부트 프로그램들을 찾는다.
3) 제일 먼저, 컴퓨터는 운영체제 부트 파일이 위치해 있는 위치를 찾기 위하여 A 드라이브를 찾아본다(만약 A 드라이브가 없거나, 아니면 바이오스 셋업에서 다른 드라이브를 먼저 찾아보도록 셋팅한 경우는 예외이다). 이때 만약 운영체계가 MS-DOS인 경우라면 컴퓨터는 IO.SYS와 MSDOS.SYS라고 이름 붙여진 두 개의 파일을 찾게된다. 만약 A 드라이브에 시스템 디스크가 아닌 디스켓이 들어있다면, 바이오스는 "A 드라이브에서 시스템 디스크를 찾을 수 없다"는 에러메시지를 내보낸다. 그러나 A 드라이브가 비어있는 경우, 바이오스는 하드디스크에서 시스템 파일을 찾는다.
4) 부트 파일이 위치해 있는 드라이브를 인식하고 나면, 바이오스는 해당 드라이브의 첫 번째 섹터에 있는 정보를 찾아 메모리에 로드하기 위해 복사하게 되는데, 이 정보가 바로 마스터 부트 레코드(MBR ; Master Boot Record)라고 알려져 있는 정보이다.
5) 그 다음 부트 레코드를 메모리의 특정 위치(16진수로 7C00 번지에 해당한다)로 복사해 넣는다.
6) 부트 레코드는 이제 바이오스가 다른 곳으로 분기하거나 컴퓨터의 부트 레코드에게 통제를 넘겨주기 위한 프로그램을 담고 있다.
7) 부트 레코드가 초기 시스템 파일(MS-DOS인 경우 IO.SYS)을 디스켓이나 하드디스크로부터 읽어서 메모리에 로드한다.
8) 초기 파일(IO.SYS인 경우 SYSINIT이라고 불리우는 프로그램)은 운영체계의 나머지 부분을 메모리로 로드한다.(이 시점이 되면 부트레코드는 더 이상 필요없기 때문에 부트레코드가 차지하고 있던 영역에 다른 데이터가 덮어씌워지는 경우도 있다).
9) 초기 파일(예를 들어 SYSINIT)이 시스템 파일(예를 들어 MSDOS.SYS)을 로드한다.
10) 초기에 로드되는 시스템 파일 중에 하나로 시스템 구성 파일(DOS의 경우 CONFIG.SYS)이 있다. 시스템 구성파일은 로드해야 할 특정 시스템 파일(예를 들어 각종 장치를 위한 드라이버 파일들)들에 관한 정보를 담고 있다.
11) 함께 로드되는 또 다른 특수 파일중에 하나는 특정한 응용 프로그램이나 사용자가 부트 과정 중에 실행되길 원하는 명령어들을 담고 있는 파일이 있다. DOS의 경우에는 이 파일은 AUTOEXEC.BAT이라고 부르고, 윈도우에서는 WIN.INI라고 부른다.
12) 운영체계와 관련된 모든 파일들이 로드되고 나면 컴퓨터의 통제권은 운영체계로 넘어가게 된다. 이어서 운영체계는 요구된 초기 명령어들을 수행하고 난 뒤, 곧바로 사용자의 입력을 통한 명령을 수행하기 위해 대기하게 된다.
4. 마스터 부트 레코드 - MBR (Master Boot Record)
MBR은 운영체제가 어디에, 어떻게 위치해 있는지를 식별하여 컴퓨터의 주기억장치에 적재될 수 있도록 하기 위한 정보로서 하드디스크나 디스켓의 첫 번째 섹터에 저장되어 있다. MBR은 또한 "파티션 섹터" 또는 "마스터 파티션 테이블"이라고도 불리는데, 그 이유는 하드디스크가 포맷될 때 나뉘어지는 각 파티션의 위치에 관한 정보를 가지고 있기 때문이다. 그 외에도, MBR은 메모리에 적재될 운영체계가 저장되어 있는 파티션의 부트 섹터 레코드를 읽을 수 있는 프로그램을 포함하고 있는데(IPL), 부트 섹터 레코드에는 다시 운영체계의 나머지 부분들을 메모리에 적재시키는 프로그램을 담고 있다.
컴퓨터를 부팅하는 과정 중에 가장 중요한 부분은 하드디스크의 첫 번째 섹터에게 제어권을 넘기는 일이다. 여기에는 몇 개의 파티션으로 나뉘었는지, 그 크기는 각각 얼마인지, 각 파티션이 시작하는 주소는 어디부터인지 등을 정의하는 파티션 테이블이 포함된다.
부트 바이러스는 그 파티션 섹터 내에 잘못된 정보를 집어넣음으로써, 운영체제가 적재되지 못하도록 하는 것이다. 이런 이유 때문에, 파티션 섹터를 디스켓에 백업해 놓는 것이 필요한 것이다.
-부팅용 디스크나 응급 복구 디스크(EBD)를 만드는 이유 중 하나이다.
부팅 시, 운영체제 적재까지는 시스템의 ROM-BIOS가 모든 과정을 진행하며, 운영체제가 메모리에 로드되고 나면 시스템의 모든 제어는 운영체제로 넘어가게 된다. 따라서 하드웨어와 소프트웨어 문제를 진단할 때 이러한 특성을 알면 많은 도움을 얻을 수 있다.
'OS > OS - Overview' 카테고리의 다른 글
하드웨어 타이머 (Hardware Timer) (0) | 2018.09.24 |
---|---|
운영체제 이중 동작 모드 (OS dual-mode operation) (2) | 2018.09.24 |
입출력 구조 (0) | 2018.09.20 |
멀티 프로그래밍을 위한 시간 공유 (Time Sharing for the Multi-Programming) (0) | 2018.09.20 |
운영체제란? (0) | 2018.09.20 |