포스트

운영체제 9. Bootstrapping이 무엇인가

운영체제 9. Bootstrapping이 무엇인가

부트스트래핑 (Bootstraping)이란 무엇인가?

우리가 흔히 부팅이라고 하는 용어가 부트스트래핑이 어원이다. 부트스트래핑의 어원은 부츠 뒤에 달린 고리를 뜻한다. 부츠를 신을 때 그 고리를 잡고 신으면 남의 도움 없이 스스로 부츠를 신을 수 있게 된다.

메인 메모리는 기본적으로 컴퓨터를 끄면 모든 정보가 휘발된다. 컴퓨터를 키면 메모리에 아무것도 없는 상태인데, 어떻게 운영체제의 상주 모니터 부분을 메모리에 올리는가? 사람의 도움 없이 운영체제 스스로 메모리에 올라가는것이 마치 부트스트래핑과 같다고 하여 이름붙여진다.

컴퓨터를 키면, 비활성 메모리 ROM에 들어있는 작은 프로그램을 실행한다고 약속한다. 이 프로그램이 롬 로더다. 롬 로더는 실행되면 C드라이브에 가장 첫번째에 저장되어 있는 (0번 섹터) 프로그램을 메인 메모리에 적재하고, PC 값을 그 프로그램의 첫번째 주소로 옮긴다. 그 프로그램은 부트스트랩 로더라고 하며, 0번 섹터를 마스터 부트 레코드라고 부름. 마스터 부트 레코드에는 부트스트랩 로더의 일부만 존재한다. 그 일부 프로그램은 프로그램의 나머지 부분을 메모리에 적재하는 역할을 한다. 부트스트랩 로더는 커널을 메모리에 적재 후 커널을 실행하는 역할을 한다. 커널이 실행되면 부팅이 완료된다.

모노리틱 커널과 마이크로 커널이 무엇인가?

운영체제의 필요한 기능은 크게 프로세스 관리, 메모리 관리, 파일 시스템, 입출력 및 네트워크 관리 등의 기능이 존재한다. 이런 기능을 모두 하나의 프로그램에 때려박은게 모노리틱 커널이다. 장점은 마이크로 커널보다 더 빠르다. 이유는 후술한다. 단점으론 프로그램의 규모가 크다보니 유지보수와 확장이 어렵다. 리눅스는 이를 모듈 개념을 도입하여 해결한다.

Pasted image 20250423140901.png

마이크로 커널이란 아주 최소한의 핵심 기능만 커널에 집어넣고, 나머지 모든 기능은 사용자 영역에서 실행한다. 핵심 기능이란 IPC(프로세스 간 통신), 메모리 관리, 클럭 인터럽트 처리, CPU 스케쥴링과 같다. 파일 시스템, 입출력 디바이스 관리 등은 각각의 단일 프로그램으로 분리하여 커널의 기능을 사용하여 구현한다. 이 방법은 관리 측면에선 아주 깔끔하다. 기능들은 각각의 프로그램으로 분리되어 있고, 커널에는 잡다한 것 없이 핵심만 들어있기 때문이다. 유지보수(디버깅)와 확장성에 용이하다. 또한 프로그램이 분리되어 있기 때문에, 버그가 발생했을 때 다른 프로그램에 큰 영향을 미치지 않는다. 하지만 모노리틱 커널보다 수시로 커널에 트랩을 걸어줘야 하고, 프로세스간 의존을 IPC를 사용해야 하기 때문에 속도가 더 느리다. 추가로 프로그램이 하나로 통합되지 않고 분리되어 있기 때문에 Context Switch 또한 모노리틱 커널에 비해 더 빈번하게 발생한다.

마이크로 커널은 소형의 작은 시스템, 임베디드 시스템에 사용하기 용이하다. 더 느리다면서 왜? 임베디드에 꼭 필요한 기능만 넣어도 되기 때문에 더 좋다. 작은 임베디드에 리눅스를 통째로 때려박을 순 없으니까.