# 컴퓨터의 구성요소와 배경지식
## 컴퓨터의 구성요소
컴퓨터의 구성요소는 3가지 나누어집니다. 연산을 담당하는 CPU, 기억을 담당하는 Memory, 그리고 다양한 입출력 장치(I/O Devices)로 말이죠. 입출력 장치들이란 모니터, 키보드, 마우스, 프린터 등과 같은 또 다른 외부의 장치를 말합니다.
![Imgur](https://i.imgur.com/RsT870i.png)
## 컴퓨터 부팅의 과정
컴퓨터에 전원을 키면 어떠한 일들이 일어나는지 알고 계십니까? 너무나도 당연하게 사용해서인지 생각조차 안해보았을 것입니다. 컴퓨터가 동작하기 위해 이루어 지는 과정을 부팅이라고 하는데, 부팅은 초기화 프로그램(initial program)에 의해 수행 됩니다.
컴퓨터에 전원이 들어오면, 초기화 프로그램은 가장 먼저 **펌웨어**를 실행합니다. 펌웨어란 모든 컴퓨터의 구성요소를 메모리(memory)에 저장하여 관리하게 해주는 프로그램입니다.
다음으로 초기화 프로그램은 운영체제(OS)의 핵심인 **커널(kernel)**을 실행합니다. 커널이란 컴퓨터 자원을 할당하고, 프로그램을 관리하는 운영체제의 핵심입니다.
커널의 수행이 완료되면, **쉘(shell)**이 실행되고 부팅과정은 끝이 납니다. 쉘이란 운영체제의 일부로서, 커널에게 명령을 해석하여 전달하는 역할을 합니다.
![Imgur](https://i.imgur.com/K4j5vO3.png)
## 인터럽트
인터럽트(interrupt)란 컴퓨터에서 발생한 이벤트를 CPU 에게 보내는 신호로서, 하드웨어 인터럽트와 소프트웨어 인터럽트가 있습니다. 하드웨어적 인터럽트는 물리적 신호를 CPU로 직접 전송하는 반면, 소프트웨어 인터럽트는 시스템 콜(system call) 이라는 특별한 동작을 통해 수행됩니다.
인터럽트가 발생하면 CPU는 하던 작업을 멈추고 즉시 해당 인터럽트를 처리해야 합니다. 이러한 처리 과정은 해당 인터럽트를 인터럽트 서비스 루틴(interrupt service rutine)에 전달함으로써 해결합니다.
![Imgur](https://i.imgur.com/difGdX5.png)
## 데이터 저장 계층
컴퓨터에는 다양한 데이터 저장 장치(storage-device)가 있습니다. 예를들어 CPU 내부의 레지스터(register)와 캐시(cache), 주 기억장치인 메모리(memory), 그리고 SSD(solid state disk)와 HDD(hard disk drive) 등이 있습니다. 이러한 데이터 저장 계층들은 데이터 처리 속도에 따라 가격이 다릅니다. 전송 속도가 빠른 장치일수록 가격이 비싸기 때문에, 조건에 따라 적절한 저장 장치를 사용하여 효율적인 사용이 필요합니다.
![Imgur](https://i.imgur.com/hl9H1ha.png)