CS
[CS / CA] 프로세스와 스레드
따봉치치
2023. 8. 21. 18:34
프로세스
- 운영체제로부터 자원을 할당받은 작업의 단위
- 메모리에 올라와 실행되고 있는 프로그램의 인스턴스
- 프로세스는 각각 독립된 메모리 영역을 할당받음 (code, data, stack, heap)
- 프로세스는 최소 1개의 스레드(main)를 가지고 있음
프로세스 주소 공간
- Code : 프로그래머가 작성한 프로그램 함수들의 코드가 cpu가 해석 가능한 기계어 형태로 저장되어 있음
- Data : 코드가 실행되면서 사용하는 전역 변수나 각종 데이터들
- Stack : 지역 변수와 같은 호출한 함수가 종료되면 되돌아올 임시적인 자료를 저장하는 독립적인 공간. stack은 함수의 호출과 생성되며 함수의 호출이 완료되면 소멸함
- Heap : 동적으로 할당되는 데이터들을 위한 공간. 사용자에 의해 메모리 공간이 동적으로 할당되고 해제됨
- 프로그램이 실행되면 프로세스 주소 공간에 메모리가 할당됨
스레드
- 프로세스 내에서 실행되는 여러 흐름의 단위
- 프로세스가 할당받은 자원을 이용하는 실행의 단위
- 준비 - 블록 - 수행 - 종료의 상태로 동작
스레드의 자원 구조
💡 하나의 프로세스를 다수의 실행 단위인 스레드로 구분하여 자원을 공유하고, 자원의 생성과 관리의 중복성을 최소화하여 수행 능력을 올리기 위함
- 스레드는 stack만 할당받고 나머지 code, data, heap영역은 다른 스레드들과 공유함