#13 운영체제 | 간단한 부팅 과정

HYUN·2021년 2월 28일
0

OS | 운영체제

목록 보기
13/13
post-thumbnail

Boot

부팅은 흔히 컴퓨터를 켜서 동작하는것을 말합니다. 이러한 부팅을 하려면 어떠한 프로그램이 필요한데 그걸 Boot 프로그램이라고 생각하면 되겠습니다.

Boot 프로그램은 저장매체(Storage)에 올려져 있는 운영체제 커널을 특정한 주소의 물리 메모리로 복사하고 커널의 처음 실행위치로 PC를 가져다 놓는 프로그램입니다.

그런데 컴퓨터의 전원을 켜면 메모리에는 아무런 프로그램도 올라가져 있지 않습니다. 램이 휘발성이기 때문인데요. 부트 프로그램을 실행하려면 폰 노이만의 구조에 따라서 프로그램이 메모리에 올라가져 있어야 CPU가 실행할 수 있을텐데 어떻게 부트 프로그램이 메모리에 올라갈 수 있을까요? 다른 말로 운영체제가 메모리에 올라갈 수 있는 방법이라고 생각해볼 수 있겠네요.


ROM(Read-only memory) - BIOS

앞에서 이야기 했지만 컴퓨터에 전원이 들어오면 메모리(RAM)에는 아무런 정보가 없기 때문에 어떠한 프로그램도 실행할 수 없습니다. 그래서 하드웨어의 도움이 필요한데 전원이 차단되어도 데이터가 날라가지 않는 ROM이라는 하드웨어입니다.

*모든 컴퓨터가 BIOS를 ROM에 저장하는 것은 아닙니다.

전원이 들어오면 가장 먼저 CPU는 ROM안에 특정 주소(FFFF0H)를 읽는데 해당 주소는 BIOS라는 프로그램이 있는 주소입니다. ROM이 비휘발성이기 때문에 BIOS라는 프로그램은 날라가지 않고 살아있을 수 있죠. 그렇게 BIOS 프로그램이 실행되면 BIOS 프로그램의 일부가 실행이 되는데 해당 프로그램은 BIOS 프로그램의 본체를 메모리에 올리는 역할을 합니다. 이렇게 메모리(RAM)에 BIOS 프로그램이 올라가게 됩니다.

BIOS 프로그램의 역할

  • 하드웨어 초기화
  • 저장매체의 MBR(Master Boot Record) 읽기
    • MBR: 저장매체의 첫 섹터로 해당 섹터안에 저장된 부트 로더라는 프로그램을 실행시키기 위함입니다.

정리하자면 BIOS 프로그램이 MBR안에 있는 부트 로더라는 프로그램을 실행하게 되는 겁니다. 이렇게 실행된 부트 로더 안에는 파티션들의 정보가 들어있는 파티션 테이블이 들어있습니다.

이렇게 부드 로더 프로그램에 의해 파티션 테이블이 메모리에 올라가져서 파티션들 중 메인 파티션(운영체제가 들어있는 파티션)을 찾게 됩니다.

그렇게 찾은 메인 파티션에 있는 부트 섹터라는 공간에 들어있는 부트 코드를 읽는데 이러한 부트 코드는 해당 메인 파티션안에 커널 이미지(운영체제의 실행 파일)의 주소를 알아내서 해당 주소를 메모리에 올리게 됩니다.

그렇게 커널 이미지를 프로그램 카운터(PC)로 옮겨서 운영체제를 실행하게 됩니다.

profile
자바스크립트를 좋아합니다. | 이유를 알고 있는 것과 모르는 것의 차이는 분명하다.

0개의 댓글