컴퓨터를 구성하는 '핵심 요소'와 그것들이 '작동하는 방식'을 알아보자.
컴퓨터가 여러 작업을 '동시'에 처리할 때 어떻게 작동하는지 원리를 알아보자
컴퓨터를 구성하는 요소를 푸드 트럭에 비유
- 푸드 트럭 : 컴퓨터
- 시설, 장비 : 컴퓨터의 구성요소
1. CPU(Central Processing Unit) - 중앙 처리 장치
(= 요리를 만들고 모든 것을 처리하는 로봇 )
: 컴퓨터에 주어진 일들을 해내는 주체로, 컴퓨터의 뇌라고 할 수 있다.
다른 컴퓨터의 구성 요소와 정보를 주고받으면서 컴퓨터에서 이뤄지는 모든 일을 관할한다.
컴퓨터에 저장된 프로그램을 불러와서 기계어로 작성된 명령문을 해석하고 실행한다. CPU에서 작업을 수행한 뒤 모니터나 스피커 등을 통해 결과물을 제공한다.
CPU는 정사각형 판모양으로, 내부에는 여러 가지 회로와 CPU 코어, 메모리 등이 있다.
1-1. 코어(=로봇의 수)
: CPU에서 가장 핵심이 되는 부품.
예전에는 하나의 CPU가 한 개의 코어를 가지고 코어의 속도를 높여가는 방식으로 발전했지만, 일정 속도 이상까지 끌어올리면 발열이 생기는 등의 물리적 문제가 발생하기 시작했다.
이때부터 CPU 제조사들은 코어 자체의 속도를 높이기 보다 여러 개의 코어를 탑재하는 방식을 택했다.
듀얼 코어, 쿼드 코어?...
: 코어 앞에 오는 숫자나 수식어는 '코어의 수'를 의미
ex) 듀얼(2)코어, 쿼드(4)코어, 헥사(6)코어, 옥타(8) 코어
Q. 멀티 코어라고 해서 코어의 개수만큼 빨라지나?
A: NO! 멀티 코어 환경을 잘 활용하려면 프로그램도 이를 고려해서 여러개의 코어를 사용할 수 있도록 프로그래밍 해야한다. 코어 한 개만 작동하도록 프로그래밍 된 소스 코드라면, 아무리 멀티 코어라고해도 하나의 코어만 사용되어 효율이 떨어진다.
1-2. 스레드(= 로봇의 분신술)
: 하나의 코어, 하나의 로봇으로 두대의 로봇이 일하는 듯한 효율을 낼 수 있도록 하는 기술을 말한다.
ex) 2코어 4스레드 - 컴퓨터 정보를 열어보면 4코어가 설치되었다고 인식한다.
1-3. 클럭(=로봇의 손 빠르기)
:기가헤르츠(GHz) 단위로 표시되는 정보로, 코어의 속도를 말한다.
클수록 빠르다.
2. 메모리(Memory) - 데이터를 저장하는 기억 장치
- 주 기억 장치(메인 메모리) (= 로봇이 요리할 때 주 무대로 사용하는 '요리 탁자')
ex) 램(RAM)
- 보조 기억 장치 (= 식재료가 담긴 '냉장고')
ex) 하드 디스크, SSD, 플래시 메모리, USB 메모리, CD롬, 플로피 디스크
CPU는 보조 기억 장치(냉장고)에서 프로그램의 코드와 필요한 데이터를 꺼내어 메인 메모리(요리 탁자)에 올려놓고 작업을 한다.
따라서, 메인 메모리 용량이 크면 ➡️ 보조 기억 장치(냉장고)에서 데이터를 자주 꺼낼 필요도 없고, 여러 작업을 동시에 수행하기도 좋으며, 여러개의 코어(로봇)가 일할 자리도 넉넉하기 때문에 일을 빠르게 처리할 수 있다.
하지만, 메인 메모리 용량이 적으면 ➡️ 멀티 코어 CPU를 장착한다 해도 동시에 일을 하기가 어렵고, 보조 기억 장치를 자주 들락거려야 하기 때문에 멀티 코어의 의미가 없다.
cf) 캐시(기억 장치) - 메인 메모리에 올려둔 데이터에 보다 더 빠르게 접근할 수 있도록 CPU에 내장되는 형태.
(캐시를 사용하면 CPU는 자주 사용하는 데이터를 요리 탁자에 손 뻗을 필요도 없이 바로바로 사용할 수 있다.)
기억 장치 속도
캐시 > 메인 메모리 > 보조 기억 장치
2-1. '휘발성 메모리'와 '비휘발성 메모리'
들어오는 전기가 끊겼을 때 데이터가 날아가면 '휘발성 메모리', 유지되면 '비휘발성 메모리'이다.
- 휘발성 메모리(접이식 요리 탁자) - 메인 메모리
: 전기가 끊기면 데이터가 날아감
컴퓨터를 재시동하면 필요한 프로그램들과 데이터를 다시 꺼내어 메인 메모리에 세팅해야 하므로 시간이 걸린다. - 비휘발성 메모리 - 보조 기억 장치
: 전기가 끊겨도 데이터가 유지됨
비휘발성 메모리는 휘발성 메모리에 비해 실행 속도와 용량이 낮아 메인 메모리로 사용되지 않지만, 많은 기업에서 이를 극복하기 위한 연구를 진행하고 있다.
3. 입출력 장치 ( I/O = Input/ Output )
(= 조리된 햄버거를 건네 줄 창구)
: 컴퓨터와 외부를 연결해 주는 소통의 통로.
컴퓨터가 신호나 정보를 받아오면 입력장치, 내보내면 출력장치
소통의 대상 : 사람 or 다른 컴퓨터나 기계 장치
- 사람
입력 장치 - 키보드, 마우스, 터치패드, 트랙볼, 웹캠, 스캐너, 마이크, 지문 인식 장치
출력 장치 - 모니터, 스피커, 프린터
입∙출력 장치 - 터치 스크림, 복합 프린터(스캐너 기능을 갖춘)
- 다른 컴퓨터나 기계장치( 네트워크를 사용)
네트워크 카드, 모뎀
<정리>
하드웨어를 구성하는 핵심요소 3가지
: CPU, 메모리, 입출력 장치
컴퓨터가 입력장치로부터 명령과 주문을 받음 ➡️ (CPU는 작업을 시작)➡️ 보조 기억 장치에서 프로그램, 데이터를 일정량 꺼냄 ➡️ 메인 메모리에 올려 놓고 작업 ➡️ 마지막으로 결과물을 출력장치를 통해 내보냄 (이러한 과정을 수없이 반복)
4. 프로세스, 스레드
4-1. 프로세스
: '프로그램'이 메인 메모리로 올라와 실행되고 있는 상태
프로그램
: '어떤 일을 수행하기 위해 만들어진 명령 모음'.
명령의 모음이 파일로 빌드되어 보조 기억 장치에 저장되어 있는 정적인 상태.
< 여러 프로세스를 함께 처리 하는 방법 >
1. 병렬 처리 방법
: 여러 작업을 동시에 실행하는 방법.
2개 이상의 코어가 각기 다른 프로세스의 명령을 실행해서 각 프로세스가 같은 순간에 실행되도록 하는 방법.
예) 푸드 트럭에 4대의 로봇.
각각의 로봇이 한 종류의 버거(프로세스)를 맡아서 요리함
2. 병행 처리 방법
: 하나의 코어가 여러 프로세스를 돌아가면서 조금씩 처리하는 방법.
예) 2대의 로봇이 버거(프로세스) 4개를 만든다고 할 때,
A로봇이 빵 4개를 깔 때 B로봇은 야채를 썰어 올리고,
A로봇이 패티를 올리면 B로봇이 빵 4개를 덮어서 4개의 버거가 동시에 조리된 것처럼 보이게 하는 방법
++
- 컨택스트 스위칭 : 한 프로세스가 CPU를 사용하고 있는 상태에서 또 다른 프로세스가 CPU를 사용할 수 있도록 하기 위해서는 이전 프로세스의 상태(문맥)를 보관하고 새로운 프로세스의 상태를 CPU에 적재하는 작업을 말한다.
어떤 하나의 프로세스를 실행하고 있는 상태에서 인터럽트 요청에 의해 다음 우선 순위의 프로세스가 실행되어야 할 때 기존의 프로세스의 상태 또는 레지스터 값(Context)을 저장하고 CPU가 다음 프로세스를 수행하도록 새로운 프로세스의 상태 또는 레지스터 값(Context)를 교체하는 작업
- 멀티 프로세싱 : 병렬, 병행이 함께 이루어져 여러개의 프로세스를 함께 진행하는 것을 말함
4-2. 스레드
: 한 프로세스 안에 하나 이상 진행될 수 있는 일의 단위
프로세스 - 한 개의 버거를 요리하는 작업
스레드 - 빵을 데우는 작업, 패티를 굽는 작업, 야채를 써는 작업
멀티 스레딩 : 여러 스레드가 함께 실행되는 것
< 프로세스와 스레드의 차이 >
Q. 메인 메모리를 어떻게 함께 사용하는가??
- 프로세스는 서로의 공간을 구분한다.
따라서 동시에 진행되는 프로세스가 많아지면 메인 메모리는 그 배수만큼 필요하다.
- 스레드는 서로의 공간을 구분하지 않는다.
따라서 아무리 스레드가 많아져도 메모리를 추가로 차지하지 않는다. 또한 컨텍스트 스위칭에 드는 부담도 덜하다.
따라서 성능상 스레드가 유리하지만, 같은 메모리 공간을 여러 스레드가 사용하면서 발생할 수 있는 오류에 대비해서 프로그래밍 해야한다.
'💻공부한 내용 정리 > CS공부하기' 카테고리의 다른 글
[ CS기초 ] 패키지 매니저, 환경 변수, 런타임 환경 (0) | 2022.11.18 |
---|---|
[ CS 기초 ] 프론트엔드, 백엔드, API, XML, JSON, YAML (1) | 2022.11.10 |
[CS기초] 서버, 클라이언트, 데이터 센터, 호스팅, 클라우드 컴퓨팅 (1) | 2022.11.09 |