Difference between Process And Thread
활성상태보기 (작업관리자) : Ctrl shift ESC
프로세스
운영체제 → 할당받는 자원 단위
CPU동작시간과 주소공간이 모두 독립적이다 (그래야 게임도 하면서, 웹브라우저도 켜놓고, 음악도 켜고하지)
Code, Data, Stack, Heap영역이 모두 독립적이다
파이프, 파일, 소켓 등을 사용해서 프로세스간 통신이 가능하다 (but, Context Switching의 Cost가높다)
쓰레드
프로세스 내에 실행흐름단위
Stack영역만 별도할당
Code, Data, Heap 영역이 공유됨
→ 메모리를 공유함
⇒ 한쓰레드의 결과가 다른 쓰레드에 영향을 끼친다
⇒ 동기화 문제는 쓰레드로해놓을때 디버깅이 매우매우 어렵다
멀티쓰레드
한개의 당일 어플리케이션 → 여러쓰레드로 구성후 작업을 처리하는거
효율성 : 시스템 자원의 소모는 감소(왜냐면 최적화를할꺼니까)
COST비용이 적음
→ 통신부담 감소, but 디버깅어려움.
단일프로세스에는 효과가 미약하다고함
DEADLOCK문제 발생할수있음
멀티프로세스
한개의 당일 어플리케이션 → 여러프로세스로 구성 후 작업을 처리하는거
한개의 프로세스에서 문제가 생겨도, 다른 프로세스에 영향을주지않음(독립적이니까)
캐시체인지 방식을 사용함
COST가 매우매우높음
'Dev' 카테고리의 다른 글
SCP로 가상환경-로컬 간 파일 전송하는법 (0) | 2022.02.27 |
---|---|
UTM에서 띄운 가상환경에 ssh로 접근하기 (0) | 2022.02.27 |
M1 에서 UTM으로 가상환경 구성하기 (0) | 2022.02.26 |
FastAPI + PoetryShell 환경설정셋업하기 (0) | 2022.02.20 |
[에러해결] 윈도우환경에서 Your shell has not been properly configured to use 'conda activate'. conda init 에러해결 (0) | 2021.10.23 |