Next-Squad / Interview-Question

주니어 백엔드 개발자 면접 시에 물어볼 수 있는 질문에 대해서 같이 공부하고, 공유하고자 합니다.
169 stars 11 forks source link

[운영체제] 6. 멀티스레드 프로그래밍에 대해 설명해보세요. #56

Open zbqmgldjfh opened 2 years ago

zbqmgldjfh commented 2 years ago

멀티스레드 프로그래밍에 대해 설명해보세요.

키워드

OS, Thread, Multi Thread

zbqmgldjfh commented 2 years ago

멀티스레드 프로그래밍 : 여러 스레드로 동작시키는 것을 멀티 스레드라고 합니다.

멀티 스레드의 장점으로는 자식 프로세스를 생성하거나 Context Switching과 같은 오버헤드가 많이 발생하는 작업이 없어짐으로 시스템의 처리량이 증가합니다.

멀티 스레드의 단점으로는 프로세스의 Code, Heap, Data 메모리 영역을 공유하기 때문에 동기화 문제가 발생할 수 있다는 점입니다. 또한 하나의 스레드에서 문제가 발생하면 전체 프로세스가 영향을 받을 수 있어서 이러한 부분을 주의해야 합니다.

(추가) 멀티 프로세스와 멀티 스레드는 각각 언제 사용하는것이 좋을까요?

CPU가 처리해야하는 task의 특성이 크기가 크지 않으면서 개수가 많을 경우나 실시간성이 중요한 웹과 같은 경우 멀티 스레드를 사용하는 것이 좋구요, CPU가 처리해야하는 task의 특성이 크기가 크면서 개수가 적은 경우나 실시간성이 중요하지 않은 일괄 처리 같은 경우 멀티 프로세스를 사용하면 좋습니다.