Q. 프로세스와 스레드의 차이를 설명해 보세요.
A. 프로세스는 메모리상에서 실행 중인 프로그램을 뜻하고, 스레드는 프로세스 안에서의 하나의 흐름을 말한다.
프로세스마다 하나의 스레드를 가지고 있으며, 리눅스에서는 프로세스와 스레드를 구분하지 않고 모두 스레드로서 관리한다.
프로세스는 별도의 주소 공간을 독립적으로 할당받는다. 즉, code,data,stack,heap 영역 모두 혼자 쓴다.
스레드는 register와 stack은 별도로 가지지만 나머지 code,data,heap은 다른 스레드와 공유한다.
Q. 멀티 프로세스 VS 멀티 스레드
멀티 프로세스의 경우, 프로세스 간에 data를 공유하기 위해서는 IPC를 써야해서 멀티 스레드 환경에 비해 비용이 든다.
또한, 멀티 프로세스의 경우 context switch가 멀티 스레드에 비해 무겁다.
더보기
멀티 스레드에서의 context switch : 스레드의 정보를 담은 TCB만 저장하면 된다.
멀티 프로세스에서의 context switch : 프로세스의 정보를 담은 PCB, 프로세스 내의 스레드들의 TCB를 모두 저장해야한다.
하지만, 멀티 스레드는 공유되는 자원에 의한 동기화 문제가 생길 수 있다.
'취업 > 1문1답' 카테고리의 다른 글
[1문1답_인성] 모르는 것이 있을 때 어떻게 해결하나요?+바로해결하나요 나중에 해결하나요? (0) | 2022.01.08 |
---|---|
[1문1답_기술] 가상화 기술(Docker VS VMware의 차이) (0) | 2021.12.26 |
[1문 1답_인성] 성적이 좋지 않은데 이유가 있나요? (0) | 2021.12.25 |
댓글