윈도우 부팅 절차. 일반적으로 전원 버튼을 누르는 것부터 윈도우 운영체제의 쉘인 explorer.exe 가 실행되어 바탕화면이 보이게되는 것 까지 설명 하겠다.
운영체제에 따라서 부팅 절차가 틀리지만 공통적인 부팅절차에 대해서 설명하겠다.
그림1. 공통된 부팅절차
1. ROM BIOS
처음 전원버튼을 누르게 되면 파워는 외부로부터 들어온 전압을 검사하여 사용할 수 있는 전압으로 변환한다. 변환된 전기 흐름은 CPU로 전달되고, CPU의 이전 값들을 지우고 PC(Program Counter)를 초기화한다. 보통 0xF000값을 가진다. 초기화 값(0xF000)은 메인보드에 위치한 ROM BIOS의 부트 프로그램의 주소값을 가르킨다.
※BIOS - 컴퓨터에 탑재된 프로그램 중에서 하드웨어와 가장 낮은 수준에서 입출력을 담당하는 프로그램.
※ROM BIOS - 말그대로 바이오스가 들어간 롬(ROM)이다.
2. Pre POST(Power On Self-Test 작업 수행을 위한 기본 테스트)
부트 프로그램은 먼저 CPU의 이상 유무를 테스트한다. 그리고 POST작업 수행을 위한 기본 테스트를 수행한다. 테스트 결과가 ROM BIOS에 저장된 값과 일치하면 POST작업을 수행한다.
3. POST - 1단계(시스템 버스 테스트)
CPU는 System Bus가 정상적으로 동작하는지 테스트하기 위해 System Bus로 특정 시그널을 보낸다.
※System Bus - 중앙처리장치(<CPU> 명령어 실행), 주기억장치(실행중인 프로그램 및 실행에 필요한 데이터를 임시저장하는 곳), 입출력장치(키보드, 모니터, 하드디스크) 를 연결하는 일을 수행. 종류는 주소버스, 데이터버스, 제어버스 가 있다.
4. POST - 2단계(RTC(Real-Time Clock) 테스트)
RTC는 시스템의 전기적 신호를 동기화 하기 위한 클럭으로 CMOS를 구성하는 장치에 칩의 일부로 존재한다.
※RTC(Real-Time Clock) - 배터리에 의해 동작하는 시계로서 컴퓨터 메인보드내에 마이크로칩의 일부분으로 포함되어있다.
5. POST - 3단계(시스템 비디오 구성요소 테스트)
시스템 비디오 구성요소 즉, 비디오 메모리(그래픽 카드)등을 테스트한다.
6. POST - 4단계(RAM 테스트)
앞에서 본 단계가 끝났을 경우 RAM에는 ROM BIOS와 비디오 BIOS에서 읽어들인 데이터가 존재 할 것이다. 해당 데이터가 정상적인지 테스트를 한다.
7. POST - 5단계(키보드 테스트)
키보드가 정상 연결되었는지 혹은 눌려진 키가 없는지 테스트한다.
8. POST - 6단계(드라이브 테스트)
시스템에 연결된 모든 드라이브(플로피, CD, 하드디스크 등)에 신호를 보내 정상적으로 작동하는지를 테스트한다.
9. POST - 7단계(POST 결과 검사)
POST 결과가 RTC/NVRAM에 저장된 구성 값과 일치하는지 검사한다.
※NVRAM - 컴퓨터의 외부 전원이 꺼지거나 상실되더라도 내용이 보존되는 RAM이다. 즉, 비휘발성 메모리
10. POST - 8단계(추가적인 BIOS 로드)
추가적인 BIOS(SCSI BIOS 등)가 있을 경우, 해당 BIOS를 RAM으로 로드한다.
※SCSI(Small Computer System Interface) BIOS - 컴퓨터에 주변기기을 연결할 때 사용하는 BIOS
11. MBR 로드 후 부팅 가능한 파티션 검색
부트 프로그램은 운영체제 로드를 위해 BIOS에 설정된 첫 번째 부팅 장치(하드디스크, USB 등)에서 첫 번재 섹터(MBR)를 로드한다. MBR의 파티션 테이블에서 부팅 가능한 파티션을 검색한 후 부팅 가능한 파티션의 VBR(Volume Boot Record)로 점프한다.
※MBR(Master Boot Record) - 운영체제가 어디에, 어떻게 위치해 있는지를 식별하여 컴퓨터의 주기억장치에 적재될 수 있도록 하기 위한 정보로서 하드디스크나 디스켓의 첫 번째 섹터(LBA 0)에 저장되어 있다.
※VBR(Volume Boot Record) - 부팅 가능한 파티션의 첫 번째 섹터이다. MBR에서 점프한 후 VBR에서는 운영체제에서 정의된 부팅과 정이 수행된다. 볼륨당 하나의 운영체제 부팅이 가능하다.
여기까지가 일반적인 윈도우 운영체제의 공통된 부팅 순서이다. 다음은 일반적으로 많이 사용하는 윈도우 NT/2000/XP의 이후 과정을 설명하겠다.
Windows NT/2000/XP (VBR 로드 이후)
1. NTLDR
VBR의 2번째 섹터의 NT Loader(NTLDR)의 위치 정보를 읽어 NTLDR을 로드하고 파일시스템을 초기화 한다. BOOT.INI파일을 읽어 부트 초기화 설정 및 부트 메뉴(시작시 F8)를 설정한다. 듀얼 부팅일 경우 BOOTSECT.DOS를 수행한다.
※NT Loader - 윈도우 NT계열 운영 체제를 위한 시동 로더 보통 하드디스크에서 실행되지만 CD-ROM, USB에서도 실행가능 하다.
2. NTDETECT
NTLDR은 하드웨어 탐지를 위해 NTDETECT.COM을 로드하여 설치된 하드웨어와 관련 구성 파일들을 찾아 실행하도록 한다.
3. NTOSKRNL
NTDETECT에 의해 하드웨어 구성 선택이 완료되면 NTLDR에 의해 NTOSKRNL.EXE(NT OS Kernel)를 로드한다. NTOSKRNL.EXE는 커널, DLL, 시스템 레지스트리, 드라이버, TCP/IP등을 로드한다. 이 단계에서 그래픽 모드로 화면에 보여준다.
4. SMSS
기본적인 초기화가 완료되면 Session Manager(SMSS.EXE)를 로드한다. 추가적인 레지스트리, Win32 subsystem을 수행하기 위한 환경구성 정보를 로드한다.
5. WINLOGON
WINLOGON.EXE파일을 로드한다. 로그인 화면이 뜨게된다. 로그인 과정에서 Plug and play에 의해 새로운 장치가 발견되면 DRIVER.CAB 파일에서 관련 드라이버를 로드하여 해당 장치를 마운트한다.
위의 과정이 끝나면 원도우의 쉘인 explore.exe가 실행된 화면을 볼 수 있다.
그림2. 윈도우 NT/2000/XP의 부팅 절차