소통하는 개발자 Sean
article thumbnail
Published 2023. 11. 7. 16:34
코어와 프로세스의 관계 Knowledge

문득 ‘싱글코어는 하나의 프로세스만 실행하는 것일까’ 라는 궁금증에 생겼습니다.
  • 이를 이해하기 위해서 CPU-Core, Process-Thread를 알아보겠습니다.
    1. CPU와 Core
    2. Process and Thread

 

👉 CPU와 Core

| 프로세서(Processor)인 CPU와 코어(Core)는 1:1 혹은 1:n의 관계를 가진다.

  • CPU (Central Processing Unut, 컴퓨터의 뇌 역할을 담당하는 하드웨어)
    • 기억, 연산, 제어 등 컴퓨터의 논리적 사고를 담당하는 일종의 ‘뇌’역할을 담당합니다.
    • 물리적 계산을 진행하는 ‘코어(Core)’를 연산회로 유닛으로 가지고 있습니다.
  • Core
    • CPU에 있어서 실제로 작업을 담당하는 주요 연산회로 입니다.

싱글 코어와 듀얼 코어 (코어 - 직원의 수에 따른 차이)

 

코어와 스레드 (하드웨어)의 관계, 스레드를 모니터에 비유함

 

  • ❓ CPU는 프로세서인가요
    • ‘프로세서’라는 용어는 일반적으로 CPU와 동일한 의미로 사용됩니다.
  • ❓ CPU(프로세서)가 여러개 일수도 있나요
    • 한 컴퓨터에 2개 이상의 CPU(프로세서)가 장착된 것을 멀티프로세서라고 부릅니다.
    • 과거에는 멀티코어 프로세서라고 불렀지만, 현재에는 한 CPU에 여러개의 코어가 장착된 것으로 지칭하게 되면서 멀티 프로세서라고 부르게 되었습니다.
  • ❓ CPU 1개당 Core가 1개 인가요
    • 1개의 코어를 가지고 있는 CPU를 ‘싱글코어 CPU’라고 부릅니다.
    • 반면 2005년 이후로는 2코어(듀얼코어), 4코어(쿼드코어), 8코어(옥타코어) 등을 지원함으로써 CPU와 Core의 관계는 1:1 → 1:n으로 발전해왔습니다.

 

👉 Process and Thread

사장은 새로운 프로젝트를 구상중이다. 해당 프로젝트는 월요일 부터 진행되며, 새로운 직원을 추가로 고용했다. (사장1, 직원2 == CPU 1, 코어 2)
  • 프로젝트는 프로그램과 같다.
    • 프로그램이란 컴퓨터에서 실행할 수 있는 파일을 의미합니다.
      • 아직 파일을 실행하지 않은 상태이면, 정적 프로그램으로 볼 수 있습니다.
      • 우리가 알고있는 C, JAVA와 같은 PL로 작성된 코드모음 입니다.
    • 프로젝트가 실행되는 과정이 바로 ‘프로세스(Process)’입니다.

 

프로세스란?

  • 프로그램을 실행시켜 동적상태로 변환, 작업중인 프로그램을 의미합니다.
    • 정적인 프로그램이 실행되는 순간 → Memory 상에 올라갑니다.
    • CPU부터 자원을 할당받아 프로그램 내부에 있는 코드가 실행되고 있는 상태입니다.
  • CPU의 Core는 각각의 프로세스를 실행하는데 사용됩니다.
  • 프로세스는 메모리 상에 할당될 시, 각각의 ‘독립된 메모리 영역’을 각자 할당 받게됩니다.
    • 프로그램을 실행할 경우, Code-Data-Stack-Heap 영역에 데이터가 할당됩니다.
  • 효율적인 작업을 목표로 멀티 프로세스를 진행 할수 있습니다.
    • 하나의 프로그램에 여러개의 프로세스로 작업을 진행합니다.
    • 각각의 프로세스는 별도의 작업을 수행하며, 독립적인 메모리가 할당됩니다.

 

스레드란?

  • 프로세스 내부에 위치한 일련의 작업 흐름
  • 프로세스가 할당 받은 ‘Code-Data-Stack-Heap’영역에서 Stack만 독릭접으로 할당 받고, 나머지 메모리 영역은 공유합니다.
    • 공유 영역이 존재하기 때문에, CPU는 비교적 낮은 부담(빠른 Context Switching)을 갖게 됩니다.
    • 또한 Stack 영역을 제외한 나머지 영역을 공유하므로 데이터간 통신이 수월합니다.
  • 다만, 자원 공유로 인한 동기화 문제가 발생할 가능성이 존재합니다.
    • 뮤텍스, 세마포어, 모니터 등의 동기화 메커니즘이 사용됩니다.
  • ❓ 싱글코어는 하나의 프로세스만 실행하는 것일까
    • 싱글코어 프로세서는 시분할 시스템(time-sharing system)을 통해 다수의 프로세스를 번갈아 가며 실행할 수 있습니다.
      • 시분할 시스템은 CPU 시간을 작은 단위로 분할하여 각 프로세스에 균등하게 할당함으로써 여러 프로세스가 동시에 실행되는 것처럼 보이게 합니다. 하나의 코어가 각 프로세스를 작은 시간 간격으로 번갈아가며 실행하므로, 사용자는 여러 작업이 동시에 실행되는 것처럼 느낄 수 있습니다.
    • 그러나 싱글코어 프로세서는 여러 프로세스가 동시에 실행되는 것이 아니라, 각 프로세스가 매우 짧은 시간 동안 번갈아가며 실행되는 것입니다. 따라서 여러 프로세스가 동시에 실행될 수 있는 멀티코어 시스템에 비해 처리 속도가 상대적으로 느릴 수 있습니다.

시분할 시스템 (TSS : Time-Sharing System)

 

profile

소통하는 개발자 Sean

@Sean-creative

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!