← Back to Blog

[운영체제] 프로세스와 스레드

computer science > operating system

2026-06-013 min read

#CS #OS #Thread

Concurrency and Multithreading

Concurrency and Parallelism

concurrency and parallelism

Concurrency

Concurrency(동시성)은 여러 작업이 동시에 수행되는 것처럼 보이는 특성을 의미한다.

실제로는 하나의 CPU만 존재하더라도 운영체제가 매우 짧은 시간 단위로 작업을 번갈아 실행하면 여러 작업이 동시에 진행되는 것처럼 보일 수 있다.

즉, 동시성은 "동시에 실행되는 것처럼 보이는 능력"에 초점을 둔다.

예를 들어 하나의 CPU에서

Thread A
↓
Thread B
↓
Thread A
↓
Thread C

와 같이 빠르게 문맥 교환(Context Switch)이 발생하면 여러 작업이 동시에 수행되는 것처럼 보인다.

Parallelism

Parallelism(병렬성)은 여러 작업이 실제로 동시에 실행되는 것을 의미한다.

여러 개의 CPU 코어가 존재할 때 각각의 코어가 서로 다른 작업을 수행하면서 진정한 의미의 동시 실행이 가능해진다.

병렬성은 일반적으로 다음과 같이 구분할 수 있다.

예시

4개의 CPU와 6개의 Thread를 사용한다고 할 때 Parallelism과 Concurrency는?

Parallelism = 4
Concurrency = 6

동시에 실제로 실행될 수 있는 작업 수는 CPU 수인 4개이며, 시스템이 관리하는 실행 흐름은 6개의 스레드이다.

따라서 병렬성은 4, 동시성은 6으로 볼 수 있다.


Multithreading

Multithreading은 하나의 프로세스 내부에서 여러 개의 스레드를 생성하여 작업을 수행하는 기법이다.

여러 스레드는 동일한 프로세스의 자원을 공유하면서 독립적으로 실행된다.

예를 들어 웹 브라우저는

를 각각 다른 스레드에서 수행한다.

장점

Responsiveness

하나의 작업이 오래 걸리더라도 다른 작업은 계속 수행될 수 있다.

예를 들어 파일 다운로드 중에도 사용자 인터페이스는 계속 응답할 수 있다.

Economy

프로세스를 새로 생성하는 것보다 스레드를 생성하는 비용이 훨씬 적다.

프로세스 생성은 새로운 주소 공간을 구성해야 하지만 스레드는 상대적으로 적은 정보만 추가하면 된다.

Resource Sharing

동일한 프로세스에 속한 스레드는 주소 공간과 자원을 공유한다.

따라서 프로세스 간 통신보다 효율적으로 데이터를 공유할 수 있다.

Scalability

멀티코어 환경에서는 여러 스레드를 서로 다른 CPU 코어에 배치하여 성능을 향상시킬 수 있다.


Thread Control Block (TCB)

각 스레드는 자신의 실행 상태를 저장하기 위한 TCB(Thread Control Block)를 가진다.

일반적으로 다음과 같은 정보가 저장된다.

운영체제는 문맥 교환(Context Switch) 시 현재 스레드의 상태를 TCB에 저장하고, 다음 스레드의 상태를 복원한다.


Thread Creation

동일한 프로세스 내에서 새로운 스레드를 생성할 경우 주소 공간은 공유된다.

따라서 일반적으로 새로 생성되는 것은 다음과 같다.

코드(Code), 데이터(Data), 힙(Heap)은 기존 스레드와 공유한다.


Multithreading Models

Kernel-Level Threads (KLTs)

one-to-one

커널이 각 스레드를 직접 관리하는 방식이다.

대표적으로 Linux와 Windows가 사용하는 One-to-One 모델이 이에 해당한다.

User Thread 1 ↔ Kernel Thread 1
User Thread 2 ↔ Kernel Thread 2
User Thread 3 ↔ Kernel Thread 3

장점

단점


User-Level Threads (ULTs)

many-to-one

사용자 영역의 스레드 라이브러리가 스레드를 관리하는 방식이다.

커널은 여러 개의 사용자 스레드를 하나의 실행 흐름으로 인식한다.

Multiple User Threads
          ↓
      One Kernel Thread

장점

단점


Combined ULT/KLT

many-to-many

Many-to-Many 모델은 여러 개의 User Thread를 여러 개의 Kernel Thread에 매핑하는 방식이다.

Multiple User Threads
          ↓
Multiple Kernel Threads

사용자 수준 스레드의 유연성과 커널 수준 스레드의 병렬성을 동시에 활용할 수 있다.

장점

단점