컴퓨터 동작 원리: BIOS와 부트 로더
참고: 운영체제(KOCW 양희재 교수님)
컴퓨터의 메모리 계층 구조를 공부하기 전에 컴퓨터가 동작하는 원리를 먼저 이해해야 속이 편한다.
https://bentist.tistory.com/62
1. 컴퓨터가 처음에 켜지면?
컴퓨터가 켜지자마자 메인보드에 내장된 부품인 ROM을 자동으로 읽어서 해야 할 일들을 하나씩 수행한다. 그래서 가장 먼저 ROM에 기본으로 설치되어 있는 BIOS를 읽어들인다. BIOS는 운영 체제 중 가장 기본적인 소프트웨어이자 컴퓨터의 입출력을 처리하는 펌웨어로 메인보드에 필수로 내장되어 있다.
- 펌웨어(펌 소프트웨어): 변경할 필요가 없는 소프트웨어를 ROM에 내장하여 하드웨어를 제어하는 프로그램
1.2. BIOS: POST, Boot Loader
BIOS는 부팅 과정 중 컴퓨터에 연결된 키보드, 램, 디스크 드라이브 등의 하드웨어가 올바로 작동하는지 각종 테스트나 초기화를 하는 POST(Power On Self Test)를 진행한다. BIOS는 POST를 성공적으로 마치면 하드디스크에 저장된 운영체제를 메인 메모리에 적재하는 Boot Loader를 실행시킨다. CPU가 곧바로 읽어들여야 하기 때문에 Boot Loader는 처음부터 Main Memory에 상주해있다. 부트 로더를 잘못 건드리면 OS가 실행이 되지 않기 때문에 건드리지 못하게 Memory 안에서도 ROM(Read Only Memory)라는 영역에 할당되어 있다.
Boot Loader와 달리 운영체제는 하드디스크에 저장되어 있기 때문에 누군가가 메모리로 로드를 해줘야 한다. 그래서 초기에는 스토리지(HDD, SSD)에 OS 프로그램이 있다가 Boot Loader에 의해 OS(window or Linux)가 메모리에 올라가게 된다. 이제 메모리에 올라간 OS 프로그램을 CPU가 읽어들이면서 OS를 실행하고 부팅 과정을 마치게 된다.
- 부팅: PC가 켜진 후에 운영체제를 메인 메모리(DRAM)에 적재하는 일련의 과정
1.3. 프로그램 실행 원리: CPU, 메모리
CPU는 프로그램(명령어의 집합)을 메인 메모리(DRAM)에서만 가져와 처리할 수 있기 때문에 프로그램을 실행하려면 반드시 프로그램이 메모리에 할당되어 있어야 한다. 보조기억장치에 있던 운영체제는 ROM에 있는 부트 로더가 메모리에 적재해주었지만, 다른 응용 프로그램(게임, 워드 등)들은 어떻게 메인 메모리에 적재할 수 있는 걸까?
바로 운영체제의 커널이 그 역할을 해준다. 커널은 💡전원이 켜져 있는 동안에는 메인 메모리에 계속 상주하면서 시스템 자원을 관리한다. 커널이 응용 프로그램이나 데이터를 메인 메모리에 적재하는 것을 로드(Load)라고 하며 그 과정을 로딩이라고 한다. 프로그램이 메모리에 적재되면 비로소 CPU는 메모리에 있는 프로그램 명령어들을 읽어와 실행을 한다.