최근 수정 시각 : 2025-12-03 13:48:25

컴퓨터의 실행 단위


컴퓨터의 실행 단위
하드웨어 명령어(파이프라인)
CPU 코어(하드웨어 스레드)
OS 논리적 코어
프로세스(스레드)
처리방식 스케줄링 동시 멀티스레딩
멀티 프로그래밍 멀티태스킹 멀티 프로세싱 멀티스레딩
코루틴 · 고루틴 · 동시성과 병렬성

1. 개요2. 하드웨어 계층
2.1. 명령어2.2. CPU 코어2.3. 물리적 스레드
3. OS 계층

1. 개요

이 문서에서는 컴퓨터 실행 단위의 전체적인 구성과 관계를 서술한다.

2. 하드웨어 계층

2.1. 명령어

명령어는 CPU의 유형에 따라 달라지는 하드웨어 영역의 동작들을 표현하는 단위다. 이것을 바이너리로 표현한 것이 기계어고, 사람이 읽기 편하도록 표현한 것이 어셈블리어다.

2.2. CPU 코어

독립적인 ALU와 레지스터 등을 가진 연산 처리기이다.

일반적으로 CPU라고 부르는 개념이 코어와 유사하다. 기존의 싱글 코어 CPU의 역할을 코어가 맡는다고 생각해도 된다.

2.3. 물리적 스레드

파일:external/blogs.technet.com/3566.image_5F00_6.png
SMT 기술을 기반으로, 한 CPU 코어에 탑재되어 고유의 실행 맥락을 가진 처리 장치이다.

물리적 스레드는 독립적인 프로세서가 아니기에 완전한 병렬성을 구현하는 것은 아니다. 다만 슈퍼스칼라 구조에서 한 클럭에 여러 물리적 스레드가 다루는 명령어를 동시에 처리할 수 있다는 이점이 있다.

물리적 스레드는 OS 계층의 스레드와 엄연히 다른 개념이다. OS 계층의 스레드는 소프트웨어의 영역에서 스케줄링 되어야할 실행 단위라면, 물리적 스레드는 실질적인 명령어 실행의 관점에서 여러 실행 맥락을 동시에, 더 많이 처리하게 해주는 하드웨어 장치다.

3. OS 계층

3.1. 논리 코어

논리 코어는 하드웨어 계층의 물리적 스레드 혹은 CPU 코어에 대응되는 OS상의 처리 단위이다.

OS는 이러한 논리적 코어에 소프트웨어상의 실행 단위를 적절하게 배분해서 실행하도록 하는데, 이를 프로세스 스케줄링이라고 한다. 즉 논리적 코어는 OS 상에서 실제 처리기를 추상화한 것인 동시에, 개념상의 실행 단위를 잘 조율해서 배분해야 할 노동자에 상응한다.

SMT를 적용한 CPU의 경우 논리 코어는 물리적 스레드에 각각 대응되고, 그렇지 않은 구식 CPU는 각 코어에 대응된다. 이는 OS의 입장에서는 물리적인 동시처리기 수 만큼 프로그램 명령을 생성해서 각 연산기에 배분해야 하기 때문에 그렇다.

3.2. 프로세스

파일:멀티스레드 구조 표.png
프로세스는 저장장치에 저장된 프로그램(가령 exe) 파일을 RAM에 올려서 현재 동작하는 중인 실행 단위다.

프로세스는 실행의 단위라기보단 자원을 담고있는 단위라고 보는것이 더 편하다. 실질적인 실행의 단위는 후술할 스레드이며, 프로세스는 프로그램의 '코드'와 '데이터' 등을 담고 있으면서 자기의 스레드들과 이 자원들을 공유한다.

스레드 개념이 없던 과거에는 프로세스 자체가 실행의 단위였다. 이런 구조도 내부에 스레드 하나가 있는 것으로 볼 수 있다.

3.3. OS 스레드

OS 스레드는 프로세스 내에 있는 실행 단위이다.

스레드는 프로세스의 자원들을 공유받으면서, 독립적인 레지스터와 스택을 보유한다. 이는 스레드가 실행 단위로서 자체적으로 실행에 필요한 맥락을 갖고 있는것과 같다.

현대 OS의 스케줄링에서는 스레드를 기본적인 처리의 단위로 삼는다.