Researcher to Developer

07. 부팅 시스템의 이해 본문

코딩/Basic

07. 부팅 시스템의 이해

Probe29 2020. 12. 20. 15:50

#Boot
컴퓨터를 켜서 동작시키는 절차
Boot도 프로그램이 필요하다.

 

 


#Boot 프로그램
운영 체제 커널을 저장메체에서 특정 주소의 물리 메모리로 복사하고

커널의 처음 실행위치로 PC를 가져다 놓는 프로그램

 

컴퓨터가 처음 켜지면 메모리에 데이터가 없다.
폰노이만 구조에 의하면 모든 코드는 메모리에 위치해야 하는데,
메모리에 아무 코드가 없으면 저장매체에서 어떻게 물리 메모리를 복사하는 작업을 할 수 있을까??

 

 


#부팅과정
BIOS가 특정 저장매체(Storage)를 읽어와 Bootstrap loader를 메모리에 올리고 실행함
Bootstrap loader프로그램이 있는 곳을 찾아서 실행 시킴

 

더 상세하게 풀어놓으면 

 

컴퓨터가 처음 켜지면 메모리에 아무런 데이터가 없는 상태이고

1. CPU가 무조건 ROM에 있는 특정 주소에 엑세스 한다.

BIOS 칩으로 매핑이 되어있다. (FFFFGH)

ROM-BIOS 라는 건 BIOS를 쓰고 업데이트 시킬 수 있는 ROM 혹은 RAM 으로써

컴퓨터를 꺼도 계속 데이터가 남아있는 특별한 형태의 RAM을 말함

BIOS라는 프로그램이 ROM에 들어가 있기 때문에 컴퓨터가 꺼져도 데이터가 남아있다.


2. 엑세스 하는 특정 주소에서는 단순히 BIOS 해당 프로그램이 있는 맨 처음 주소로 가게해준다. 

그러면 BIOS 프로그램의 일부(맨 앞에 있는 코드)가 실행이 된다.

 

3. 이 프로그램이 하는 역할은 BIOS 프로그램을 메모리에 올리는 역할을 한다.

아니 그러면 ROM에서 BIOS를 실행하면 되는게 아니냐?? 라고 생각할 수 있는데 ROM에서는 실행 속도가 느리기떄문에
진짜 BIOS 프로그램은 메모리에 올려놓아야 속도를 향상 시킬 수 있기 때문에 그렇게 하는것

 

 

4. 그리고 나서 진짜 BIOS 프로그램은 컴퓨터 초기화를 하고, 저장매체 MBR을 찾아갑니다. 

MBR

저장매체의 특정 공간, 맨 앞에 있는 데이터를 MBR 이라고 부름(Master Boot Record) 
파티션 테이블의 정보가 들어가 있음. 

 

5. 그리고 MBR안에 있는 부트 로더 프로그램을 메모리에 로드 시켜줍니다. 

부트 로더 프로그램과 함께 파티션 테이블의 정보를 메모리에 넣습니다.

 

6. 그리고 파티션 테이블 정보를 기반으로 메인 파티션을 찾습니다.

파티션 테이블은  C:/ , D:/ 와 같은 드라이브를 칭함.
부트 섹터라는 특별한 공간이 있음 


7. 그리고 부트 코드 로더가 메인 파티션의 부트 섹터라는 특별한 공간의 주소로 가서
부트 코드를 메모리에서 읽어내어 실행을 하게됨.

 

8. 부트 코드는 해당 파티션안에 커널 이미지(실행 파일)의 주소를 알아내서 커널 이미지를 메모리에서 읽어낸다.
그 다음 커널 이미지를 PC로 옮기면 실행이 되면서 우리가 알고 있는 실행 화면을 확인할 수 있음.


 

부팅과정 구조도




'코딩 > Basic' 카테고리의 다른 글

09. LINUX 의 특징과 역사  (0) 2020.12.22
08. 가상 머신의 이해  (0) 2020.12.20
06. 파일 시스템의 이해  (0) 2020.12.20
05. 가상 메모리의 이해  (0) 2020.12.20
04. Thread의 이해  (0) 2020.12.18