08_시스템 부트
하드웨어를 사용하려면 운영체제를 설치해야 한다. 하지만 운영체제가 설치 되었다고만 해서 하드웨어는 커널이 어디에 있는지, 어떻게 적재하고 사용 할까?
대부분의 컴퓨터 시스템에서는 부트스트랩 프로그램, 또는 부트스트랩 적재기로 알려져 있는 작은 크기의 코드가 커널을 찾고 그것을 메인 메모리에 적재하고 수행을 시작한다. 컴퓨터가 전원을 켜거나 재부팅 등의 명령을 받으면 명령 레지스터는 미리 지정된 메모리 위치를 가리키게 되고 그 곳에서부터 실행을 시작 한다. 그 위치에는 최초의 부트스트랩(bootstrap)이 존재한다. RAM은 시스템 시작 시에 알 수 없는 상태가 되기 때문에 이 프로그램은 ROM(Read only Memory) 안에 저장 된다.(흔히 BIOS라 불리는 영역) ROM은 초기화 할 필요가 없고 바이러스 등의 걱정도 없기 때문에 편리하다.
부트 프로그램은 다양한 작업을 수행하지만 가장 기본적인 작업으로는 시스템의 상태(기계적인 상태)를 진단하는 것이다. 진단 작업이 통과되면 프로그램은 부팅 절차를 계속 한다. CPU 레지스터, 장치 제어기, 주 메모리드의 내용 등 시스템 전반에 걸쳐 초기화 한다. 그리고 운영체제를 시작 시킨다.
[Mac OS X 시스템 상태 진단]
휴대 전화, PDA, 콘솔 게임기 등의 시스템은 운영체제 전체를 ROM에 저장 한다. 운영체제를 ROM에 저장하는 것은 운영체제의 크기가 작거나 간단한 하드웨어를 지원하거나 열악한 환경에서 사용되는 시스템에 적합하다. 하지만 이 방식의 단점은 부스트랩코드가 변경되면 ROM을 교체 해야 하는 이슈가 발생한다. 일부 시스템에서는 EPROM(Erasable Programmable Read Only Memory)을 사용하여 해결하기도 한다.
이처럼 ROM 성격을 가진 모든 형태를 펌웨어(Firmware)라 부른다. 펌웨어의 단점은 용량이 크지 않고 가격이 비싸다는 것이다. 또한 메모리보다 속도가 느리다. 따라서 메모리에서 실행 할 때 보다 성능이 떨어진다. ROM의 성능 문제를 개선하기 위하여 일부 시스템은 운영체제를 실행 할 때 RAM으로 복사하여 실행 한다.
Windows, Mac OS, Linux 같은 일반적인 운영체제를 포함하여 대용량의 운영체제 또는 자주 변경되는 시스템은 부스트랩 적재기는 펌웨어에 있고 운영체제는 디스크에 존재 한다. 이 경우 부트스트랩은 진단 절차를 수행하고 고정된 위치의 디스크 블록 하나를 읽어 메모리에 적재하고 그 위치로부터 실행 시킬 수 있는 코드를 가진다. 이 블록을 부트 블록이라 한다. 부트 파티션을 가지고 있는 디스크는 부트 디스크 또는 시스템 디스크라 한다.
[부트 블록]
[부트 파티션]
모든 부트 프로그램이 적재되면 파일 시스템을 탐색하여 운영체제 커널을 찾아내고 메모리로 적재한 후 실행을 시작한다. 시스템 실행 중 상태는 이 시점부터 이다.
[Windows 7 Boot Process]
'SW Engineering > OS Concept' 카테고리의 다른 글
10_프로세스 스케줄링 (0) | 2015.07.16 |
---|---|
09_프로세스 개념 (0) | 2015.07.16 |
07_가상 머신(Virtual Machine) (0) | 2015.07.16 |
06_운영체제 구조 (0) | 2015.07.16 |
05_운영체제 구조_설계 및 구현 (0) | 2015.07.16 |