리미로그

[OS] 프로세스와 스레드 차이 본문

CS/OS

[OS] 프로세스와 스레드 차이

멍발자 2022. 12. 13. 01:16

Process

실행 중인 프로그램
c.f. program : HD나 secondary storage에 저장되어 있는 정적인 파일

• OS로부터 자원을 할당받는 작업 단위

• 각 프로세스는 자신만의 주소 공간을 가짐

프로세스 주소 공간

Code : text 영역, instruction 저장
Data : global 변수, static 변수 저장
Heap : 메모리 동적 할당 객체 저장
Stack : parameter, return address, local variable 저장

Thread

• 프로세스의 실행 흐름
각 스레드는 별도의 실행 state를 가짐 -> 각각의 register set을 가짐

각자 고유의 stack 영역을 가짐
나머지 공간은 같은 프로세스 내에 있는 스레드끼리 공유
다른 스레드의 stack에 접근 가능

 

Process VS Thread

• 프로세스는 여러 스레드를 가질 수 있음

• CPU는 스레드 단위로 스케줄링함

요즘에는 process를 static한 개체로, thread는 dynamic한 개체로 봄
process : thread가 동작할 수 있는 실행환경, 컨테이너

 

정리

프로세스는 운영체제로부터 자원을 할당받는 작업 단위,
스레드는 프로세스가 받은 자원을 이용하는 실행 단위

각 프로세스는 고유의 주소 공간을 가지고,
각 스레드는 stack을 제외한 주소 공간을 공유함 (같은 프로세스)

'CS > OS' 카테고리의 다른 글

[OS] 스케줄러 종류  (0) 2022.12.16
[OS] PCB & Context Switching  (0) 2022.12.15
[OS] 프로세스 주소 공간  (0) 2022.12.13
Comments