brunch

You can make anything
by writing

C.S.Lewis

by Noah Dec 10. 2020

Process, Thread 차이가 뭐예요?

이런거 왜 물어봐요?

카테고리 : 컴퓨터 공학

난이도 : 하

질문자의 의도

잘못된 프로세스, 스레드의 사용은 심각한 오류를 발생할 수 있다.

또한 디버깅이나 오류 해결의 어려움이 크다.

프로세스, 쓰레드의 정의에 대해서 정확히 알고 있는지 확인해야 한다.

아니, 잘못 알고 있는 부분이 없는지 확인해야 한다.


Q. Process 와 Thread 의 차이를 설명해 보세요

프로세스는 운영체제로부터 자원을 할당받는 작업의 단위이다.

스레드는 할당 받은 자원을 이용하는 실행의 단위이고 프로세스 내에 여러개 생길 수 있다.

어플리케이션 하나가 프로세스이고, 그 안에서의 분기 처리가 스레드가 되는 셈이다.


질문자가 면접자가 이 질문을 대답 못할 것이라고 생각하지는 않을 것이다.

기초 질문이기 때문이다. 전공자가 아니여도 대답할 수 있는 수준의 질문이다.


다음 질문을 이끌기 위한 오프너 질문이라고 할 수 있다.

process 와 thread 연관 질문으로는 Multi Procsss, Multi Thread, Context Swiching, Thread Safe 등을 물어 볼 수 있을 것이다.

물론 비동기 처리까지도 자연스럽게 이어질 수 있다.


Q. Multi Procss & Multi Thread

multi process 는 하나의 프로그램을 여러개의 프로세스로 구성하여 각 프로세스가 하나의 작업(task)를 처리하는 것이다.

- 장점 : 하나의 프로세스가 잘못 되어도 프로그램은 동작 함

- 단점 : context switching 비용 발생

multi thread 는 프로그램을 여러개의 쓰레드로 구성하고 각 쓰레드가 작업(task)를 처리하는 것

- 장점 : 시스템 자원 소모 감소, 처리 비용 감소(실행 속도 향상), 쓰레드간 자원 공유(stack을 제외한 영역)

- 단점 : 디버깅 어려움, 동기화 이슈 발생, 하나의 쓰레드의 오류로 전체 프로세스에 문제 발생


Q. Thread Safe 란?

 thread safe란 것은 여러 thread가 동시에 사용되어도 안전하단 것을 뜻한다.

특정 함수 A 와 변수 AA 가 여러 스레드에서 호출되어도 하나의 스레드에서 호출했을 때와 같은 결과가 보장되어야 한다는 의미

함수가 전역 변수를 참조하게 된다면 그 함수는 thread safe 하지 않은 결과가 나올 수 있다.


Thread Safe 하지 않은 조건을 만드는 방법의 예를 들어보라고 한다던가, Thread Safe 하지 않은 환경을 Thread Safe 하게 변경하는 방법등을 물어볼 수 있다.

프로세스와 다르게 쓰레드간에 자원을 공유하고 있고 있고 이 때 무엇을 조심해야 하는지를 묻는 질문이다.


Q. Context Switching 이란?

CPU 에서 여러 프로세스를 돌아가면서 작업을 처리하는데 이 과정을 Context Swiching 이라고 한다.     동작중인 프로세스가 대기를 하면서 해당 프로세스의 상태(Context)를 보관하고 대기 하고 있다가 다시 실행시 복구하는 비용(시간)을 말한다.


프로세스와 쓰레드에 대한 간단한 질문으로 왜 비동기 프로그래밍을 하는지 비동기 프로그래밍이 무엇인지를 연속적으로 물어볼 수 있을 것이다.





Thread Safe: 동기화, mutext, semaphore, synchronized

Thread 의 개수 설정 : 리틀의 법칙



매거진의 이전글 시니어 vs 주니어 개발자.
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari