profile image

L o a d i n g . . .

우리는 컴퓨터로 영상을 보면서 블로그를 쓰고, 동시에 카톡으로 친구들과 대화도 한다. 이 모든걸 하면서 파일을 다운로드 할 수도 있다. 이처럼 컴퓨터는 동시에 여러가지 일을 수행할 수 있다. 이 보이는 작업들 외에도 컴퓨터는 우리눈에 보이지 않는 작업들 또한 동시에 진행하고 있다.

 

컴퓨터는 어떻게 CPU 코어수보다 많은 작업을 멀티태스킹 할 수 있을까?

 

먼저 CPU란 무엇일까?

 

CPU(Central Processing Unit)

 

CPU는 중앙 처리 장치로 컴퓨터의 뇌라고 부를 수 있다. 컴퓨터에 저장된 프로그램을 불러와 기계어로 작성된 명령문을 해석하고 실행한다. 보조기억장치(ROM, RAM)에서 프로그램의 코드와 필요한 데이터를 꺼내 메인메모리에 올려놓고 작업을 한다.

 

 

코어, 스레드, 클럭

 

내컴퓨터-속성 으로 확인한 장치 사양. 프로세서 부분이 CPU다.

Intel과 AMD가 CPU양대산맥이라고 생각하면 된다. 

 

 

위 표는 코어와 스레드수를 확인 할 수 있는 표.

i7-4720는 i7 4세대를 뜻한다. 따라서 내 노트북은 4코어 8스레드. 

로봇을 비유로 설명하겠다.

 

코어: CPU중에서 가장 핵심이 되는 부품. 코어가 하나 이상이라는 것은 일을 할 수 있는 로봇이 여러 대 라고 생각하면된다. 

스레드: 하나의 로봇이 낼 수 있는 효율. 하나의 로봇으로 두 대의 로봇이 일하는 듯한 효율을 낼 수 있다.

예를 들면 2코어 4스레드 사양의 CPU를 장착한 컴퓨터의 정보를 열어보면 4코어가 설치되어 있다고 인식하고있다.

클럭: 위 캡쳐의 2.60GHz처럼 기가헤르츠 단위로 표시되는 정보. 코어의 속도를 이야기한다. GHz숫자가 클수록 로봇이 빠르게 일한다고 생각하면 된다. 

 


CPU에 대해 간단하게 알아봤으니 이제 첫 질문인 

컴퓨터는 어떻게 CPU 코어수보다 많은 작업을 멀티태스킹 할 수 있을까?

에 대해서 알아보러 가자.

 

프로세스

 

프로그램이란 '어떤 일을 수행하기 위해 만들어진 명령 모음'이다. 메모리에 올라와 실행되고 있는 프로그램의 인스턴스(독립적인 개체)로서 명령의 모음이 파일로 빌드되어 보조 기억 장치가 저장되어 있는 정적인 상태라고 할 수 있다.

프로그램 실행 명령을 내리면 프로그램은 보조기억장치에 저장되어있다 (HDD,SDD 등) 실행시 보조기억장치에서 주기억장치(ram)으로 넘어간다.

 

이처럼 프로그램이 메인 메모리로 올라와 실행되고 있는 상태프로세스 라고 부른다

 

cpu를 괴롭히는 나

프로그램은 하나의 프로세스로 실행될수도, 여러 프로세스에 걸쳐 실행될 수도 있다. 예를들어 크롬 브라우저의 경우 여러 탭을 열었을 때 각 탭에 프로세스가 하나씩 부여된다. 

 

위와 같은 프로세스를 처리하는 방법은 두가지가 있는데 병렬처리와 병행처리이다.

 

병렬처리

여러 작업을 동시에 실행하는 방법이다. 2개 이상의 코어가 각기 다른 프로세스의 명령을 실행해 각 프로세스가 같은 순간에 실행된다. 각 각의 로봇이 하나의 음식을 맡아서 요리를 한다고 생각하면된다. 멀티코어 환경에 맞게 프로그래밍만 잘 되어있다면 코어의 개수만큼 빠른 일처리가 가능하나 로봇은 2대인데 요리주문이 4개일 경우 1번로봇은 새우튀김, 2번로봇은 샐러드를 만든 후 3, 4번 주문을 처리하기때문에 나머지 주문은 대기해야한다.

 

 

 

병행처리

병행처리는 하나의 코어가 여러 프로세스를 돌아가면서 조금씩 처리한다. 새우튀김, 샐러드, 파스타, 피자 주문이 들어온 경우 4가지 메뉴를 한 로봇이 새우튀김을 튀기면서 파스타 물을 올리고 새우튀김을 건진 후 파스타를 끓는물에 넣고 다른 로봇은 샐러드를 세척하고 물기를 빼는동안 피자 반죽을 하고 화덕에 넣어 굽는동안 샐러드를 만드는 과정을 한다.

이런식으로 작업을 나누어 실행하면서 컴퓨터가 마치 여러작업을 동시에 실행하는 것처럼 보이게 하는 처리방법이다. 

 

위처럼 진행순서를 바꾸는 것을 컨텍스트스위칭(Context Switching)이라고 부른다. 컴퓨터에서의 컨텍스트 스위칭은 매우 빠르게 일어나기 때문에 사람이 느끼기에는 저 4가지 메뉴를 만드는 과정이 동시에 돌아가는 것처럼 느껴진다.

 

 

프로그램이 효율적으로 설계되었다면 두 코어가 프로세스를 두 개씩 '병렬'로 분담해 각자가 맡은 요리를 '병행'해서 요리한다. 이처럼 여러개의 프로세스를 함께 진행하는 것을 멀티 프로세싱 이라고 부른다. 

 

 

 

 


스레드

여러 프로세스가 동시에 돌아가기도 하지만, 한 프로세스 안에 여러 작업이 동시에 진행되기도 한다. 채팅어플을 예로들자면 사용자가 메시지를 입력하는 도중에도 상대방이 새로운 메시지를 보냈는지 계속 확인한다. 또한 사진을 다운로드 하면서 채팅기능을 이용할 수도 있다. 이처럼 한 프로세스 안에서도 하나 이상의 작업이 진행되며, 이를 스레드 라고 한다.

 

새우튀김을 요리하는 작업이 하나의 프로세스라면 새우들을 손질하고 튀김옷을 입히고 튀기는 작업들을 스레드로 구분할 수 있다. 스레드 역시 프로세스 처럼 컨텍스트 스위칭을 통해 여러 작업이 병행처리가 된다. 이를 멀티스레딩 이라고 한다.

 

 


프로세스와 스레드 차이

 

운영체제는 여러 프로세스를 거느리고 있다 (운영체제의 관리대상이 프로세스들)

프로세스: 컴퓨터에서 연속적으로 실행중인 프로그램, OS로부터 시스템 자원을 할당받는 작업의 단위

쓰레드: 프로세스 내에서 실행되는 여러 흐름의 단위 ,프로세스가 할당받은 자원을 일용하는 실행의 단위

 

어플리케이션 하나가 프로세스, 그 안에서의 분기 처리가 스레드

둘의 중요한 차이점은 '메인 메모리를 어떻게 함께 사용하는가'이다.

 

 

 

멀티 프로세싱에 각각의 프로세스는 각각의 영역을 명시해둔다. 반면 스레드는 서로의 공간을 구분하지 않는다. 한 프로세스에 할당된 프로세스 영역을 해당 프로세스가 속한 모든 스레드가 공유한다. 때문에 아무리 스레드가 많아져도 메모리를 추가로 차지하지 않는다. 또한 프로세스와는 달리 영역에 따라 자리를 옮겨다닐 필요가 없기때문에 컨텍스트 스위칭에 드는 부담이 적다.

 

멀티 프로세스: 하나의 응용 프로그램을 여러 프로세스로 구성하여 각 프로세서가 하나의 작업(task)처리

멀티스레드: 하나의 응용 프로그램을 여러개의 스레드로 구성하고 각 스레드가 작업을 처리

ex) 1부터 100만까지의 합을할 때 두개로 나눠서 1부터 50만, 50만부터 100만까지의

두개의 스레드로 나눠서 작업 한 후 합치기 (빠르게 전환하니까 동시에 하는 것 처럼 보임)

 

성능상으로는 스레드가 유리하지만 같은 메모리공간을 여러 스레드가 사용하기때문에 그 과정에서 발생할 수 있는 오류에 대비해 프로그래밍 해야한다. 못을 잡는 스레드와 망치질을 하는 스레드의 타이밍이 엇갈린다면 손을 다칠 수 있는것처럼 스레드를 다루는 프로그램은 시간적 요소까지 고려해 신중하게 설계해야한다.​

 

참고로

자바스레드 (Java thread) : 일반 스레드와 거의 차이가 없으며 JVM이 운영체제의 역할을 한다

 

 

 


컴퓨터 메모리의 종류 & CPU 설명 (이전에 네이버 블로그에 써온거 가져옴)

 

보통 레지스터, 캐시, RAM을 주 기억장치라고 부른다. 프로그램이 실제로 구동될 때 이 세 기억장치를 사용하기 때문이다.

  • 레지스터는 제일 빠른 메모리로, CPU 계산과정의 일부로 작동한다. 프로세스가 컨텍스트 스위치 하는 저장공간이다.
  • 캐시 메모리는 레지스터 다음으로 빠른 메모리로 L1, L2, L3 캐시 등 여러 단계로 나뉘어진다. 숫자가 작을수록 용량이 작고 빠르며 숫자가 클 수록 용량이 크고 느리다.
  • RAM은 매우 빠르지만 CPU > Cache > RAM 순서로 빠르다. 하지만 SSD, HDD에 비해서는 월등히 빠르다.

L1 , L2 , L3으로 일한다

캐시 : 임시저장공간

L1 캐시 : 손에 쥘 수 있는 목화의 양

L2 캐시 : 등에 멘 목화바구니

L3 캐시 : 목화리어카

 

L3 : 캐시공간

TDP : 전력량

PCIe : 메인보드 꽂는슬롯

메모리규격 : 해당씨퓨의 어떤 램 타입이 들어가나 (GDDR(ddr5)

메모리클럭 : 글카 시퓨사이 버스크기(동작클럭)

 

크기는 점점 커지는데 점점 멀어짐 (접근 속도가 오래걸린다는 뜻)

램 : 목화창고 단위가 며칠단위

하드디스크 : 목화창고 그런데 단위가 몇 년 단위

쓰로틀링 : 망한거, 애가 효율이 망함

오버클럭 : 카페인 투여해서 일 많이 빨리 시킴

액화질소 오버클럭 : 과한수냉식(마약 투여) 해서 일 많이 빨리 시킴

뚜따(뚜껑따기) = 옷입고 일하면 더우니까 다 벗기고 일시킴

>> 헤카 = 트리플 | 페넘 = 쿼드 >> 내부 같음 근데 일 더시킴

하이퍼스레딩 : 사람은 하난데 손으로만 일하는게 아님, 발로도 시킴

>>CPU 한개당 스레드가 하나씩 추가됨 (싱글에서 두개의 CPU, 듀얼에서 네 개의 CPU가 돌아가게 함)

 

수율이좋다 : 실제 적용률이 좋다

클럭 : 얼마나 빠르게 일하느냐

코어 : 일꾼이 몇명이냐

캐시 : 저장하는 창고가 몇평짜리냐

스로틀링 걸렸다 : 일하느라 피떡돼서 효율이 안나온다

전력 : 채찍 강도

오버클럭 : 쿨러 좋은쿨러필요

i3 i5 i7 차이 알통몬

셀러론 : 알통몬 2마리

팬티엄 : 근육몬 2마리

i3 : 괴력몬 2마리

i5 : 근육몬 4마리

 

 

 

 

 

 

반응형
복사했습니다!