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을 제외한 주소 공간을 공유함 (같은 프로세스)