System Boot
시스템 부트
일반적으로 컴퓨터 시스템에 전원이 들어오면
CPU는 메모리 상의 특정 주소에서 명령을 가져와서 실행 가능하도록 되어있다.
대부분 이 특정 주소는 컴퓨터의 펌웨어가 달려있는 ROM 영역에 해당한다.
예를 들어 Intel 의 경우 전원이 들어오면 메모리 상의 ffff0 번부터 명령을 실행한다.
PC의 경우 이것이 ROM BIOS의 코드에 해당한다.
하드웨어가 운영 체제를 시작할 수 있게
운영 체제는 하드웨어에 접근 가능하게 만들어져야 한다.
시스템이 부트되는 방식에는 두 가지가 있다.
-
ROM이나 EEPROM에 저장된 작은 코드로 이뤄진 bootstrap loader가
운영 체제 커널의 위치를 찾고 이를 메모리로 올려서 시작하는 방식
-
ROM 코드가 고정된 장소인 disk 앞부분에서 로드해오는 boot block이
다시 disk에서 bootstrap loader를 로드해오는 방식
흔히 쓰이는 bootstrap loader 인 GRUB는 여러 디스크, 버전, 커널 옵션에서 커널을 선택할 수 있다.
커널이 로드되면 시스템이 running 상태가 된다.
bootstrap loader 의 경우 bootstrap loader 가 ROM에 하드 코딩된다.
=> 매번 동일한 위치의 동일한 OS를 부팅시키므로 유연성이 떨어진다.
일반적으로 두 번째 방식을 사용한다. 이를 통해 운영 체제를 두 개 깔 수 있다.