[Daily Post] 230714
[Daily Post]는 매일매일 탐구한 내용을 간략하게 기록하는 포스트입니다.
따라서 정리되지 않은 내용과 추측을 포함하고 있을 수 있습니다.
더 체계적인 형식을 갖춘 글은 해당 카테고리의 포스트를 확인해주세요 :)
My Study
PS
- 오토마타님의 Python 배우기
CS
OS
Process & Thread
-
Multi process란
- 2개의 process를 실행되는 것 - 동시성, 병렬성
- 동시성: CPU core가 1개일 때, 이를 여러 process가 나눠서 사용하는 작동 방식
- 병렬성: CPU core가 2개 이상일 때, 여러 process가 각각의 core를 사용하는 것
- 동시성을 고려할 때, 어떤 명령을 수행했고, register에는 어떤 값이 저장됐었는지와 같은 정보를 저장해야 한다
- 이런 정보를 context라고 하고, 이는 PCB(Process control block)에 저장된다
- 서로 다른 메모리 공간을 가지고 있기 때문에 다른 Process의 주소값을 참조할 수는 없지만, IPC를 사용하면 통신할 수 있다
- 2개의 process를 실행되는 것 - 동시성, 병렬성
-
Multi thread란
- 1개의 process에서 돌아가는 기능의 단위
- 각 thread는 process가 차지하고 있는 stack 메모리를 제외한 나머지 memory(code, data, heap)을 공유한다
- Stack을 제외하는 이유: 기능(함수)의 단위를 구분하기 위해서는, 각 함수의 인자, return address, 지역 변수를 구분해야 하기 때문이다.
- 각 thread는 code, data, heap 뿐 아니라 PC register도 각각 가지고 있어야 한다
-
multi process vs. multi thread
- multi thread는 stack을 제외한 메모리 공간을 공유하기 때문에 공간 효율성이 좋고 context switching이 빠르다
- context switching이 빠른 이유는 process간의 자원 할당과 반환같은 system call이 필요 없기 때문이다
- 하지만 sync 문제를 포함한 여러가지 문제 때문에 thread가 종료될 수 있기 때문에 안정성이 낮다
- multi process는 공간 효율성도, 시간 효율성도 좋지 않지만 안정성이 높다.
- multi thread는 stack을 제외한 메모리 공간을 공유하기 때문에 공간 효율성이 좋고 context switching이 빠르다