프로세스(Process)와 스레드(Thread)의 차이
본문 바로가기
Computer Science/Operating System

프로세스(Process)와 스레드(Thread)의 차이

by 조훈이 2022. 10. 21.

프로세스(Process)와 스레드(Thread)의 차이


  Process 

프로세스란?

  : HDD나 SSD와 같은 디스크에 저장되어 있는 프로그램을 구동하여 프로그램 자체와 상태가 메모리에 적재되어 실행되는 작업 단위이다. 프로세스를 생성하게 되면 Kernel 공간에 PCB(Process Control Block)이 만들어진다.

 

* Register section

  - CPU가 프로세스를 처리하는 과정에서 필요한 정보를 임시로 기억하는 저장장소

  - 컨텍스트 스위칭(Context Switching)에 관여한다.

 

* Stack section

  - 지역 변수 (Local variables), 매개 변수 (Parameter), 리턴 주소 등의 값들이 저장된다.

  - 프로그램이 종료될 시 자동으로 값이 반환된다.

 

* Heap section

  - 프로그램이 실행되는 동안 동적으로 할당되는 메모리 영역

  - malloc(), new() 등을 통해 이 영역에 할당한다.

 

* Data section

  - 전역 변수 (Gloval variables) 가 저장된다. 초기화가 진행이 된 전역 변수는 Data section에 Gvar 영역에 저장이 되고 아직 초기화가 진행되지 않은 전역 변수는 BSS 영역에 저장이 된다.

 

* Text section

  - 컴파일시 발생한 기계어 코드가 저장되어있는 메모리 영역

  - Hex(16진수), Bin(2진수) 파일 메모리

 

[특징]

1. 각 Process는 독립적인 실행단위를 가진다. 두 프로세스가 동일한 프로그램에 연관될 수 있지만, 이 두 프로세스는 별도의 실행순서로 간주된다.
  => 멀티 프로세스 상에서 하나의 프로세스에 문제가 발생하여도 다른 프로세스에 영향을 미치지 않는다.

2. 프로세스는 최소 1개의 스레드를 가지고 있다. (메인 스레드)

  Thread 

[특징]

1. 한 프로세스의 Heap, Data, Text 영역 모든 스레드들이 공유하는 메모리 이지만 Register, Stack 영역은 각 스레드마다 독립적으로 부여되어있다.
2. Heap, Data, Text 영역을 각 스레드들이 공유하는 점에 있어서 동기화 문제가 발생할 수 있다. (Race Condition)
Race Condition 링크 : //작성중..
728x90

'Computer Science > Operating System' 카테고리의 다른 글

프로세스(Process)란?  (0) 2022.10.29
프로세스 스케줄링(Process scheduling)  (0) 2022.10.27
운영체제 (Operating System) #1  (0) 2021.07.08

댓글