운영체제

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

parangofsky 2026. 2. 6. 23:35

안녕하세요? 새로이 [운영체제] 섹션을 만들어 보았습니다. 컴퓨터 과학 지식 중 중요하다고 생각하는 파트이기 때문에 중요 개념들을 하나씩 정리하고 지식 체계를 쌓아가려는 목표가 있습니다. ㅎㅎ

 


 

첫번째로는 프로세스와 스레드에 대해서 정리해보겠습니다.

 

1.  프로세스란?

 

프로세스를 말하기 전에 프로그램이라는 용어에 대해서 살펴보겠습니다.

 

  1. 프로그램 :어떤 작업을 수행하기 위한 명령어들의 집합
  2. 작업 : 프로그램과 프로그램이 처리할 데이터의 집합 (보통, 디스크에 저장되어 있다.)

==> 운영체제에 실행을 요청하기 전의 상태

 

따라서 작업이 수행되기 위해서 1. 운영체제에게 실행을 요청 2. 운영체제는 해당 작업을 커널에 등록 3. 프로그램이 메모리에 적재되는 과정을 거치게 됩니다. 여기서, 커널에 등록된 작업 또는 프로그램을 프로세스라고 정의합니다.

 

여기서 커널에 등록이라는 말을 자세히 살펴보겠습니다. 

 

커널에 등록이란?

프로세스를 관리하기 위한 자료구조를 만드는 것입니다. (PCB생성)

 

cf. PCB에 들어가는 것

 

  • PID(프로세스 ID)
  • 프로세스 상태(ready/running/waiting 등)
  • 프로그램 카운터(다음 실행할 명령어 주소)
  • 레지스터 값(실행 중이던 CPU 상태)
  • 스케줄링 정보(우선순위 등)
  • 메모리 관리 정보(페이지 테이블 등)
  • 열린 파일/입출력 정보(파일 디스크립터)

 

프로그램이 메모리에 적재

프로그램이 메모리에 적재될 때 OS는 그 프로세스만의 가상 주소 공간을 만들게 됩니다.

 

cf. 가상 주소 공간에 들어가는 것

 

  • Code(Text): 실행 코드(명령어)
  • Data: 전역/정적 변수
  • Heap: 동적 할당 영역(new/malloc) (위로 자람)
  • Stack: 함수 호출, 지역변수, 리턴주소 (아래로 자람)

 

2.  스레드란?

스레드는 하나의 프로세스 내부에서 CPU가 실제로 실행하는 작업 흐름입니다.
운영체제 관점에서 보면, 프로세스는 프로그램 실행에 필요한 자원 묶음을 가진 큰 단위이고, 스레드는 그 안에서 실제로 명령어를 한 줄씩 수행해 나가는 주체입니다.

  • 프로세스: 내 집(주소 공간, 자원, 권한을 가진 독립 공간)
  • 스레드: 집 안에서 움직이는 사람들(실제로 행동하는 실행 흐름)

프로세스가 하나만 있더라도, 그 안에 스레드를 여러 개 만들면 동시에 여러 일을 처리하는 것처럼 동작할 수 있습니다.

 

프로세스와 스레드가 공유하는 것 / 따로 가지는 것

스레드가 중요한 이유는 공유입니다.
같은 프로세스에 속한 스레드들은 기본적으로 프로세스의 자원들을 공유합니다.

 

같은 프로세스의 스레드가 공유하는 것

 

  • 코드 영역(Code/Text)
  • 데이터 영역(Data)
  • 힙(Heap) 메모리 (동적 할당 영역)
  • 열린 파일, 소켓 같은 I/O 자원

같은 프로세스의 스레드들은 같은 주소 공간을 본다고 이해하면 됩니다.

 

스레드마다 개별로 가지는 것

 

  • 스레드 실행 흐름 자체(PC: Program Counter, “다음에 실행할 명령어 위치”)
  • 레지스터(Register) 값들
  • 스택(Stack) (함수 호출/지역변수/리턴 주소 등)
  • 스레드 ID, 스레드 상태 등

여기서 중요하게 볼 부분은 아래와 같습니다.

 

힙은 공유 스택은 각자

 

 

다음 포스트에서는 멀티에 대한 이야기와 스레드와 프로세스의 자세한 내용을 심화적으로 정리해보겠습니다.

 

 

'운영체제' 카테고리의 다른 글

[운영체제] 복습  (2) 2026.02.16
[운영체제] 스택  (0) 2026.02.09