CS (Process, Thread)

YES31·2023년 5월 11일
0

CS

목록 보기
1/1

Process

현재 실행중인 프로그램

메모리에 적재되어 실행되고 있는 프로그램의 인스턴스로 운영체제로부터 시스템 자원을 할당받은 작업의 단위이다.

프로세스는 4가지의 주소 영역을 가지고 있다.

  • Code: 코드 자체를 구성하는 메모리 영역(프로그램 명령)
  • Data: 전역변수, 정적변수 등
  • Heap: 동적 할당 시 사용 (new(), malloc() 등)
  • Stack: 지역변수, 함수 매개변수, 리턴 값을 저장 (임시 메모리 영역)

Thread

한 프로세스 내에서 실행되는 여러 흐름의 단위

특징

  • 프로세스 내부 thread 끼리는 독립된 Stack 영역을 가지며, Code / Data / Heap 영역은 공유한다.
  • 한 스레드가 프로세스 자원을 변경하면, 다른 이웃 스레드(Sibling Thread)도 그 변경 결과를 즉시 확인이 가능하다.

.
.

Thread마다 Stack을 독립적으로 가지고 있는 이유가 무엇일까?

Stack은 지역변수, 함수의 매개변수, 리턴 값, 되돌아갈 주소 값 등을 저장하기 위해 사용하는 메모리 공간이다. Stack 메모리 공간이 독립적이라는 것은 독립적인 함수 호출이 가능하다는 뜻으로 독립적인 실행 흐름을 추가할 수 있다는 것이다.

따라서, 스레드의 정의에 따라 독립적인 실행 흐름을 추가하기 위한 최소 조건으로 독립된 스택을 제공하는 것이다


Reference

https://www.youtube.com/watch?v=iks_Xb9DtTM
https://www.youtube.com/watch?v=PXN8gpZ5OEg
https://www.youtube.com/watch?v=ELl_DYmQpsc

profile
🏀 주니어 개발자

0개의 댓글