프로세스
실행중인 프로그램, 레지스터, 스택, 포인터, 데이터의 집합체이며 자원할당의 기본단위.
- 구성
- CPU시간 (프로그램이 CPU 차지한 시간)
- 주소공간 (물리적 실체에 대응하는 주소의 범위를 정의한 공간)
- 독립된 메모리
- stack
- 지역변수, 매개변수 등 임시메모리 저장.
- 함수 호출시 생성, 종료 시 반환
- heap
- malloc, new 등 프로그래머 동적 사용 공간
- data
- 전역변수, 정적변수, 배열, 구조체 등 메모리 저장. 프로세스 종료까지 유지
- code
- 작성한 코드 저장. 프로세스 종료까지 유지
- stack
- 특징
- 프로세스 당 최소 1개 스레드 사용
- 별도 주소공간에서 실행
- 프로세스간 변수는 기본적으로 접근 불가하며 통신을 통해 접근해야함
스레드
프로세스 내에서 동작되는 여러 실행의 흐름으로 프로세스가 할당받은 자원을 공유받음.
프로세스는 자원을 할당받는 단위인 반면 스레드는 할당받은 자원을 사용하는 실행의 단위.
- 특징
- 스택만 따로 할당받고 code, date, heap 공유
- 기본적으로 process당 1개이나 pthread_create 등으로 직접 만들어 사용 가능
'CS' 카테고리의 다른 글
[CS] 블록 암호화, 메시지 다이제스트 차이점 (0) | 2023.03.07 |
---|---|
[CS] base64 byteToHex 차이점 (0) | 2023.03.06 |
스트림암호화, 블록암호화 (0) | 2023.01.18 |
[CS] 해시, 대칭키, 비대칭키(공개키) 암호화 (0) | 2023.01.18 |
[네트워크] HTTP Header 구조 (3) | 2022.12.27 |