부팅(Booting)이란?
컴퓨터를 켜서 동작시키는 절차.
처음 컴퓨터를 켜면 메모리에는 아무것도 올라와 있지 않다. 컴퓨터가 동작하게 하기 위해 운영체제 커널을 특정 주소의 물리 메모리로 올려서 실행되도록 하는 절차를 말한다.
부팅 과정
- 컴퓨터에 전원을 공급
- ROM에서 BIOS 프로그램을 RAM에 올린다. (1)
- BIOS는 POST(Power-On Self Test) 실행
- BIOS는 Boot Loader를 RAM에 올린다. (2)
- Boot Loader는 Boot 프로그램을 RAM에 올리고 실행한다. (3)
(이제 Boot 프로그램이 Memory에 올라가 있는 상태이다.) - Boot 프로그램은 운영체제 커널 이미지를 RAM에 올리고 실행한다.(4)
- 부팅 과정 종료
ROM(Read-Only Memory)과 RAM(Random Access Memory)
ROM은 컴퓨터가 꺼져도 남아있는 메모리이다. 따라서 ROM에 시스템을 시작하고 초기화하는데 필요한 정보를 저장한다.
RAM은 휘발성 메모리로. 컴퓨터에 전원이 공급되는 동안에만 데이터를 저장하고, 전원이 꺼지면 모든 데이터는 사라진다. RAM은 데이터 접근 속도가 매우 빠르기 때문에, CPU가 현재 실행 중인 프로그램 데이터와 명령어 등을 저장하는 데 사용한다.
반면에 ROM은 비 휘발성 메모리로, 전원이 꺼져도 데이터가 유지된다. ROM에 데이터가 쓰여지면 일반적으로 수정할 수 없다. 따라서 컴퓨터 동작에 필수적인 Booting 프로그램, BIOS 프로그램 같은 중요한 데이터를 영구적으로 저장한다.
BIOS(Basic Input Output System)
운영체제 중 가장 기본적인 소프트웨어이고, 컴퓨터의 입출력을 담당하는 펌웨어이다.
모든 하드웨어들이 올바르게 동작하는지 확인하고 초기화한다. (CPU, Memory, HDD, Graphic Card 등)
여기서 입출력은 컴퓨터 부팅 과정에서의 입출력이고, 이후에는 운영체제 커널이 이 부분을 주로 담당하게 된다.
컴퓨터가 실행되면 ROM의 특정 주소에 있는 BIOS 프로그램(데이터, 코드)을 RAM에 올리고 실행시킨다.
펌웨어(firmware) : ROM에 포함된 소프트웨어, 영구적 소프트웨
POST(Power-On Self Test) :컴퓨터 하드웨어들이 정상적으로 작동하는지 테스트하는 과정
부팅 후 운영체제 실행 과정
부팅의 마지막은 운영체제 커널 이미지를 RAM에 올리고 실행하는 것이었다.
아래는 이 운영체제 커널을 실행하는 과정이다.
- 커널 초기화
- 하드웨어 검색 / 드라이버 로딩
- 시스템 서비스 초기화
(로그인 관리, 네트워크 설정, 보안 관리 등) - UI 로드 (CLI or GUI)
- 로그인, 사용자 환경설정 로드
- 우리가 흔히 볼 수 있는 컴퓨터 바탕화면을 볼 수 있다.
PC가 동작하고, 운영체제가 실행된 뒤로는 모든 소프트웨어, 하드웨어를 운영체제가 관리, 제어하게 된다.
부팅 직후 Shell에서 확인한 프로세스 목록
아래와 같이 1번 프로세스가 실행되고, 이 프로세스를 부모로 갖는 여러 프로세스들이 실행되는 것을 볼 수 있다.
위 그림은 Windows운영체제에서 WSL을 이용해 리눅스 서브시스템을 통해 확인할 수 있다.
'[ Computer Science ] > 운영체제' 카테고리의 다른 글
[CS / 운영체제] 프로세스와 스레드, IPC, 멀티 스레드 (0) | 2024.03.24 |
---|---|
[CS / 운영체제] 운영체제란? OS 용어 정리 - 쉘, 시스템콜, API (0) | 2024.03.23 |