반응형

윈도우 OS, 맥 OS,리눅스 OS 모두 동등하게 512바이트 크기의 작은 코드에서 시작한다. 512바이트의 작은 코드는 '부트로더(Boot Loader)라고 불리며, OS의 나머지 코드를 메모리에 복사해 실행 시킨다.


부팅과 BIOS

부팅

PC가 켜진 후에 OS가 실행되기 전까지 수행되는 일련의 작업 과정, 부팅 과정에서 수행하는 작업에는 프로세서 초기화(멀티코어 관련 처리 포함), 메모리와 외부 디바이스 검사 및 초기화, 부트로더를 메모리에 복사하고 OS를 시작하는 과정 등이 포함된다.

BIOS

 PC 환경에서는 부팅 과정중 하드웨어와 관련된 작업을 BIOS(Basic Input/Output System)가 담당하며, BIOS에서 수행하는 각종 테스트나 초기화를 'POST(Power On Self Test)'라 부른다.

BIOS는 메인보드에 포함된 펌웨어의 일종으로, 이름 그대로 입출력을 담당하는 작은 프로그램이다. 보통 PC메인 보드에 롬(ROM)이나 플래시 메모리로 존재하며, 전원이 켜짐과 동시에 프로세서가 가장 먼저 실행하는 코드이다.

~>또한 BIOS는 부팅 옵션 설정이나 시스템 전반적인 설정 값을 관리하는 역할도 겸하고 있으며, 설정 값으로 시스템을 초기화 하여 OS를 실행할 수 있는 환경을 만든다.

~>BIOS에서 제공하는 기능은 '인터럽트'를 통해 사용할 수 있으며, MS-Dos 같은 과거의 16비트 OS는 BIOS 기능에 많이 의존하였다. 


*BIOS는 부팅 과정에서 시스템 초기화 외에 수많은 작업을 하는데, 그 중 우리에게 가장 중요한 것은 부트 로더 이미지를 메모리로 복사하는 단계다. 부트로더는 부트스트랩(Bootstrap)코드라고도 불리고, 우리가 BIOS에서 처음으로 제어를 넘겨받는 부분이다. 부트로더는 플로피 디스크나 하드 디스크 등 저장 매체의 가장 앞 부분에 존재한다. PC는 다양한 장치로 부팅할 수 있으므로 BIOS는 POST가 완료된 후 여러 장치를 검사하여 앞부분에 부트로더가 있는지 확인한다. 부트로더가 존재한다면 코드를 0x7C00 어드레스에 복사한 후 프로세서가 0x7C00 어드레스 부터 코드를 수행하도록 한다.

~>부팅 가능한 모든 장치를 검사했는데도 부트로더를 찾을 수 없다면 BIOS는 'Operating System Not Found"와 같은 메세지를 출력하고 작업을 중단한다.

~>또한 , 부트로더가 디스크에서 메모리로 복사되어 실행되었다는 것은 BIOS에 의해 PC가 정상적으로 구동되었다는 것을 의미한다.(=OS를 메모리에 올려서 실행할 준비가 되었다)


부트로더는 플로피 디스크나 하드 디스크 같은 외부 저장매체에 있으며, 저장 매체에서 가장 첫 번째 섹터 MBR(Master Boot Record)에 있는 작은 프로그램이다. 섹터는 디스크를 구성하는 데이터 단위로, 섹터하나는 512 바이트로 구성된다.

~> 부트로더의 가장 큰 역할은 OS 실행에 필요한 환경을 설정하고, OS 이미지를 메모리에 복사하는 일이다.

~>부트로더의 크기가 512 바이트로 정해져 있기 때문에, 가장 먼저 실행되는 중요한 프로그램이지만 처리할 수 있는 기능은 한정되어 있다.



그렇다면 BIOS에게 첫번 째 섹터가 부트로더란 것을 어떻게 알려줄 것이며, BIOS는 디스크에서 읽은 첫번째 섹터가 정상적인 부트 로더 인지 어떻게 판단할까?

~> 디스크를 부팅할 용도로 사용하지 않는다면, 첫 번째 섹터는 부트 로더가 아닌 '일반 데이터'가 저장된다. 만약, BIOS가 실수로 데이터를 메모리에 올려 실행한다면 모니터에 섬광탄이 투척될것이다.. (ㅋㅋ;;). 즉, 이러한 사태를 방지하려면 BIOS는 첫 번째 섹터에 있는 데이터가 부트로더 인지를 확인해야한다.

~> 이를 위해 BIOS는 읽어들인 512 바이트 중에 가장 마지막 2바이트 값이 0x55,0xAA인지 검사해서 부트 로더인지 확인한다. 읽은 데이터가 0x55, 0xAA로 끝나지 않는다면 데이터로 인식하고 부팅 과정을 더 진행하지 않는다.


c.f) 디스크의 첫 번째 섹터인 MBR 영역에는 부트 로더 외에 디스크의 파티션 정보도 존재한다.

~> 파티션(Partition)은 디스크 영역을 논리적으로 구분하는 단위다. MBR 영역에는 4개의 파티션 영역이 있으며, 파티션 영역에서 정의된 영역은 독립된 공간을 보장받는다.

~>따라서 파티션을 분할하여 중요한 데이터를 여러 곳에 보관하면 특정 파티션에 문제가 발생해도 다른 파티션에서 데이터를 복원할 수 있다.





반응형
,